Go to file
Donald Sharp 73ac816057 bgpd: bgpd-table-map.patch
COMMAND:

table-map <route-map-name>

DESCRIPTION:

This feature is used to apply a route-map on route updates from BGP to Zebra.
All the applicable match operations are allowed, such as match on prefix,
next-hop, communities, etc. Set operations for this attach-point are limited
to metric and next-hop only. Any operation of this feature does not affect
BGPs internal RIB.

Supported for ipv4 and ipv6 address families. It works on multi-paths as well,
however, metric setting is based on the best-path only.

IMPLEMENTATION NOTES:

The route-map application at this point is not supposed to modify any of BGP
route's attributes (anything in bgp_info for that matter). To achieve that,
creating a copy of the bgp_attr was inevitable. Implementation tries to keep
the memory footprint low, code comments do point out the rationale behind a
few choices made.

bgp_zebra_announce() was already a big routine, adding this feature would
extend it further. Patch has created a few smaller routines/macros whereever
possible to keep the size of the routine in check without compromising on the
readability of the code/flow inside this routine.

For updating a partially filtered route (with its nexthops), BGP to Zebra
replacement semantic of the next-hops serves the purpose well. However, with
this patch there could be some redundant withdraws each time BGP announces a
route thats (all the nexthops) gets denied by the route-map application.
Handling of this case could be optimized by keeping state with the prefix and
the nexthops in BGP. The patch doesn't optimizing that case, as even with the
redundant withdraws the total number of updates to zebra are still be capped
by the total number of routes in the table.

Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com>
2015-05-19 17:40:34 -07:00
babeld lib/command.c: rewrite command matching/parsing 2014-04-01 20:21:41 +02:00
bgpd bgpd: bgpd-table-map.patch 2015-05-19 17:40:34 -07:00
debian Remove incorrect SNMP error when installing debian package 2015-05-19 17:40:32 -07:00
doc bgpd: bgpd-table-map.patch 2015-05-19 17:40:34 -07:00
fpm fpm: Add public header for Forwarding Plane Manager 2012-11-30 21:41:17 +01:00
init build: delete .cvsignore files 2011-12-13 14:27:01 +04:00
isisd isisd: type mix-up in 28a8cfc "don't require IPv4" 2014-08-18 18:16:28 +02:00
lib nexthop-tracking.patch 2015-05-19 17:40:34 -07:00
m4 build: fix "pragma weak" mixups 2013-02-09 03:00:12 +01:00
ospf6d *: nuke ^L (page feed) 2014-06-04 06:58:02 +02:00
ospfclient *: nuke ^L (page feed) 2014-06-04 06:58:02 +02:00
ospfd ospfd: ospfv2-fix-interface-mode-cmd.patch 2015-05-19 17:40:32 -07:00
pkgsrc build: delete .cvsignore files 2011-12-13 14:27:01 +04:00
ports build: delete .cvsignore files 2011-12-13 14:27:01 +04:00
redhat build: update quagga.spec.in 2013-02-23 19:43:18 +01:00
ripd ripd: use only one constant for derivation 2014-07-02 19:30:20 +02:00
ripngd *: nuke ^L (page feed) 2014-06-04 06:58:02 +02:00
solaris build: delete .cvsignore files 2011-12-13 14:27:01 +04:00
tests cluster-id length equality for multipath 2015-05-19 17:40:31 -07:00
tools tools: use standard interpreter path in all Perl scripts 2012-04-30 16:13:47 +02:00
vtysh vtysh: fix build against readline 6.3 2014-05-27 19:55:11 +02:00
watchquagga *: use array_size() helper macro 2012-10-25 10:15:59 -07:00
zebra nexthop-tracking.patch 2015-05-19 17:40:34 -07:00
.gitignore testzebra: pragma weak: detect systems with weak alias and provide alternative 2013-01-11 21:50:06 +01: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 tests: add DejaGNU framework 2013-04-14 16:01:05 +02:00
ChangeLog [trivia] Make 'make dist' happy about ChangeLog expunge 2008-08-23 08:36:42 +01:00
configure.ac build: do not assume glibc on linux 2014-08-18 01:50:26 +02: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.pending HACKING.pending: Add Quagga-RE details 2012-03-02 11:56:38 +00:00
HACKING.tex HACKING.tex: Change to a LaTeX version of HACKING 2012-03-08 16:14:13 +00:00
INSTALL.quagga.txt build: improve backtrace support/detection 2014-04-01 17:20:44 +02:00
Makefile.am build: remove now-useless --{en, dis}able-tests 2014-04-01 17:23:21 +02:00
NEWS doc: update NEWS for 0.99.23 changes 2014-06-24 07:12:01 +02: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 2607/tcp is already used by ospfapi. 2003-12-23 10:42:45 +00: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.