Go to file
Paul Jakma ebd12e62a9 bgpd: Remove the double-pass parsing of NLRIs
* bgpd parses NLRIs twice, a first pass "sanity check" and then a second pass
  that changes actual state. For most AFI/SAFIs this is done by
  bgp_nlri_sanity_check and bgp_nlri_parse, which are almost identical.

  As the required action on a syntactic error in an NLRI is to NOTIFY and
  shut down the session, it should be acceptable to just do a one pass
  parse.  There is no need to atomically handle the NLRIs.

* bgp_route.h: (bgp_nlri_sanity_check) Delete
* bgp_route.c: (bgp_nlri_parse) Make the prefixlen size check more general
  and don't hard-code AFI/SAFI details, e.g. use prefix_blen library function.

  Add error logs consistent with bgp_nlri_sanity_check as much as possible.

  Add a "defense in depth" type check of the prefixlen against the sizeof
  the (struct prefix) storage - ala bgp_nlri_parse_vpn.
  Update standards text from draft RFC4271 to the actual RFC4271 text.

  Extend the semantic consistency test of IPv6. E.g. it should skip mcast
  NLRIs for unicast safi as v4 does.

* bgp_mplsvpn.{c,h}: Delete bgp_nlri_sanity_check_vpn and make
  bgp_nlri_parse_vpn_body the bgp_nlri_parse_vpn function again.

  (bgp_nlri_parse_vpn) Remove the notifies.  The sanity checks were
  responsible for this, but bgp_update_receive handles sending NOTIFY
  generically for bgp_nlri_parse.

* bgp_attr.c: (bgp_mp_reach_parse,bgp_mp_unreach_parse) Delete sanity check.
  NLRI parsing done after attr parsing by bgp_update_receive.

Arising out of discussions on the need for two-pass NLRI parse with:

Lou Berger <lberger@labn.net>
Donald Sharp <sharpd@cumulusnetworks.com>
2016-10-26 09:36:09 -04:00
bgpd bgpd: Remove the double-pass parsing of NLRIs 2016-10-26 09:36:09 -04:00
cumulus Merge remote-tracking branch 'origin/cmaster' into cmaster-next 2016-08-17 20:52:04 -04:00
debian debian: Disable build of vnc currently 2016-10-03 08:25:33 -04:00
doc bgpd: add L3/L2VPN Virtual Network Control feature 2016-10-03 08:17:02 -04:00
fpm Use only the ISC license for .proto files. 2016-09-23 12:12:16 -04:00
gdb gdb: Add a directory of files with gdb macros 2016-05-26 15:33:30 +00:00
init build: delete .cvsignore files 2011-12-13 14:27:01 +04:00
isisd isisd: Fix size of malloc 2016-10-20 20:28:26 -04:00
ldpd zebra/ldpd: introduce ZEBRA_ROUTE_ALL wildcard route type 2016-10-18 08:51:23 -04:00
lib lib: Fix race condition in shutdown of routemap 2016-10-24 13:40:08 -04:00
m4 build: fix "pragma weak" mixups 2013-02-09 03:00:12 +01:00
ospf6d ospf6d: fix off-by-one on display of spf reasons 2016-10-20 20:28:26 -04:00
ospfclient lib: migrate to new memory-type handling 2016-09-19 18:35:50 +02:00
ospfd ospfd: Add 'no ...' form of some commands to cli 2016-10-26 08:11:12 -04:00
pimd pimd: don't leak original_s_route on error 2016-10-20 20:28:26 -04:00
pkgsrc build: delete .cvsignore files 2011-12-13 14:27:01 +04:00
ports pimd: merge pimd as of 2015-01-19 2016-05-25 20:38:32 -04:00
qpb fpm/protobuf: fix compile errors & warnings 2016-09-23 12:12:17 -04:00
redhat bgpd: add L3/L2VPN Virtual Network Control feature 2016-10-03 08:17:02 -04:00
ripd ripd: print md5 auth digest correctly 2016-10-20 20:28:26 -04:00
ripngd *: Consolidate routemap initialization 2016-10-19 10:55:59 -04:00
solaris solaris: fix SMF manifest dependency model and start method 2016-05-26 15:25:13 +00:00
tests bgpd: Regularise bgp_update_receive, add missing notifies and checks 2016-10-26 09:36:08 -04:00
tools tools: Fix bug whereby no searches were made 2016-10-25 04:01:50 +00:00
vtysh vtysh: Allow vtysh to not know about enabled daemons/features 2016-10-25 08:26:09 -04:00
watchquagga Fix for CM-12450 Ensure quagga logs at startup are sent to syslog (until log configuration is processed) 2016-08-17 19:36:54 -07:00
zebra zebra: Allow v6 static routes to handle mpls not in kernel 2016-10-25 14:45:49 -04:00
.gitignore build: remove accidentally-added configure outputs 2016-10-11 13:09:06 +02:00
AUTHORS Initial revision 2002-12-13 20:15:29 +00:00
bootstrap.sh autoreconf -i 2007-02-06 19:28:28 +00:00
buildtest.sh build: remove --disable-ipv6 2016-06-03 15:51:36 -04:00
ChangeLog [trivia] Make 'make dist' happy about ChangeLog expunge 2008-08-23 08:36:42 +01:00
common.am qpb: Add support for protobuf. 2016-09-23 12:12:16 -04:00
configure.ac vtysh: Allow vtysh to not know about enabled daemons/features 2016-10-25 08:26:09 -04:00
COPYING *: nuke ^L (page feed) 2014-06-04 06:58:02 +02:00
COPYING.LIB *: nuke ^L (page feed) 2014-06-04 06:58:02 +02:00
HACKING.md HACKING: Change format to MarkDown 2016-05-26 15:33:32 +00:00
HACKING.pending HACKING.pending: Add Quagga-RE details 2012-03-02 11:56:38 +00:00
INSTALL.quagga.txt build: goodbye, gawk 2016-09-19 16:31:08 -04:00
Makefile.am bgpd: add L3/L2VPN Virtual Network Control feature 2016-10-03 08:17:02 -04:00
NEWS release: 0.99.24 2016-06-03 15:56:44 -04:00
README 2004-11-12 Paul Jakma <paul@dishone.st> 2004-11-12 10:30:21 +00:00
README.NetBSD Omit --opaque-lsa from build (now default). 2011-06-28 15:05:05 -04:00
REPORTING-BUGS Update for git and emphasize asking for good reports. 2010-05-05 07:51:26 -04:00
SERVICES pimd: merge pimd as of 2015-01-19 2016-05-25 20:38:32 -04:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00
TODO doc: update TODO for ospf6d work & bgp multipath 2013-04-16 11:56:11 +02:00
update-autotools * README.NetBSD: use update-autotools instead of autoreconf 2007-02-02 16:52:38 +00:00

Quagga is free software that manages various IPv4 and IPv6 routing
protocols.

Currently Quagga supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1,
RIPv2, and RIPng as well as very early support for IS-IS.
  
See the file INSTALL.quagga.txt for building and installation instructions.
  
See the file REPORTING-BUGS to report bugs.
  
Quagga is free software. See the file COPYING for copying conditions.