]> git.proxmox.com Git - mirror_frr.git/commit - zebra/main.c
zebra-redistribute-table.patch
authorDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 20 May 2015 01:03:42 +0000 (18:03 -0700)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Wed, 20 May 2015 01:03:42 +0000 (18:03 -0700)
commit7a4bb9c54e529225cfc59926cf3bd5f858be0155
tree1262f5e751cf02b40683569cc968a8eb10894d2b
parent7c8ff89e9346227f0e721f7686d4c4d58f9c9135
zebra-redistribute-table.patch

Zebra: Redistribute routes from non-main kernel table to main.

This can be the basis for many interesting features such as variations
of redistribute ARP, using zebra as the RIB in the presence of multiple
routing protocol stacks etc. The code only supports IPv4 for now, but
the infrastructure is in place for IPv6.

Usage:
There is a new route type introduced by this model: TABLE. Routes
imported from alternate kernel tables will have their protocol type set to
TABLE.

Routes from alternate kernel tables MUST be first imported into the main
table via "ip import-table <table id>". They can then be redistributed via
a routing protocol via the "redistribute table" command. Each imported table
can an optional administrative distance specified. In Zebra, a route with a
lower distance is chosen over routes with a higher distance. So, distance
is how the user can choose to prioritize routes from a particular table over
routes from other tables or routes learnt another way in zebra.

Route maps for imported tables are specified via "ip protocol" command in
zebra. Route maps for redistributed routes within a routing protocol are
subject to the route map options supported by the protocol. The
"match source-protocol" option in route maps can match against "table"
to filter routes learnt from alternate kernel routing tables.

Signed-off-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
12 files changed:
bgpd/bgp_vty.c
lib/log.c
lib/route_types.txt
lib/zebra.h
zebra/main.c
zebra/redistribute.c
zebra/redistribute.h
zebra/redistribute_null.c
zebra/rib.h
zebra/rt_netlink.c
zebra/zebra_rib.c
zebra/zebra_vty.c