diff options
author | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-05-20 03:03:42 +0200 |
---|---|---|
committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-05-20 03:03:42 +0200 |
commit | 7a4bb9c54e529225cfc59926cf3bd5f858be0155 (patch) | |
tree | 1262f5e751cf02b40683569cc968a8eb10894d2b /zebra/redistribute.h | |
parent | Multi-Instance OSPF Summary (diff) | |
download | frr-7a4bb9c54e529225cfc59926cf3bd5f858be0155.tar.xz frr-7a4bb9c54e529225cfc59926cf3bd5f858be0155.zip |
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>
Diffstat (limited to 'zebra/redistribute.h')
-rw-r--r-- | zebra/redistribute.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/zebra/redistribute.h b/zebra/redistribute.h index 8ed39fce2..aef944ca2 100644 --- a/zebra/redistribute.h +++ b/zebra/redistribute.h @@ -25,6 +25,7 @@ #include "table.h" #include "zserv.h" +#include "vty.h" extern void zebra_redistribute_add (int, struct zserv *, int); extern void zebra_redistribute_delete (int, struct zserv *, int); @@ -48,5 +49,16 @@ extern void zebra_interface_address_delete_update (struct interface *, extern void zebra_interface_bfd_update (struct interface *, struct prefix *); extern int zebra_check_addr (struct prefix *); +extern int zebra_import_table (afi_t afi, u_int32_t table_id, + u_int32_t metric, int add); + +extern int zebra_add_import_table_entry (struct route_node *rn, + struct rib *rib); +extern int zebra_del_import_table_entry (struct route_node *rn, + struct rib *rib); +extern int is_zebra_import_table_enabled(afi_t, u_int32_t table_id); + +extern int zebra_import_table_config(struct vty *); + #endif /* _ZEBRA_REDISTRIBUTE_H */ |