diff options
author | Daniel Walton <dwalton@cumulusnetworks.com> | 2015-11-10 16:29:12 +0100 |
---|---|---|
committer | Daniel Walton <dwalton@cumulusnetworks.com> | 2015-11-10 16:29:12 +0100 |
commit | 2a3d57318c315aca75d54f93037e2fe52de30569 (patch) | |
tree | 2573b389faf240771837f3fc9fa5e006471c2696 /bgpd/bgp_route.h | |
parent | Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga in... (diff) | |
download | frr-2a3d57318c315aca75d54f93037e2fe52de30569.tar.xz frr-2a3d57318c315aca75d54f93037e2fe52de30569.zip |
BGP: route-server will now use addpath...chop the _rsclient code
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-8122
per draft-ietf-idr-ix-bgp-route-server-09:
2.3.2.2.2. BGP ADD-PATH Approach
The [I-D.ietf-idr-add-paths] Internet draft proposes a different
approach to multiple path propagation, by allowing a BGP speaker to
forward multiple paths for the same prefix on a single BGP session.
As [RFC4271] specifies that a BGP listener must implement an implicit
withdraw when it receives an UPDATE message for a prefix which
already exists in its Adj-RIB-In, this approach requires explicit
support for the feature both on the route server and on its clients.
If the ADD-PATH capability is negotiated bidirectionally between the
route server and a route server client, and the route server client
propagates multiple paths for the same prefix to the route server,
then this could potentially cause the propagation of inactive,
invalid or suboptimal paths to the route server, thereby causing loss
of reachability to other route server clients. For this reason, ADD-
PATH implementations on a route server should enforce send-only mode
with the route server clients, which would result in negotiating
receive-only mode from the client to the route server.
This allows us to delete all of the following code:
- All XXXX_rsclient() functions
- peer->rib
- BGP_TABLE_MAIN and BGP_TABLE_RSCLIENT
- RMAP_IMPORT and RMAP_EXPORT
Diffstat (limited to 'bgpd/bgp_route.h')
-rw-r--r-- | bgpd/bgp_route.h | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/bgpd/bgp_route.h b/bgpd/bgp_route.h index 0d2134e99..60152e947 100644 --- a/bgpd/bgp_route.h +++ b/bgpd/bgp_route.h @@ -188,20 +188,9 @@ struct bgp_static #define ROUTE_MAP_OUT_NAME(F) ((F)->map[RMAP_OUT].name) #define ROUTE_MAP_OUT(F) ((F)->map[RMAP_OUT].map) -#define ROUTE_MAP_IMPORT_NAME(F) ((F)->map[RMAP_IMPORT].name) -#define ROUTE_MAP_IMPORT(F) ((F)->map[RMAP_IMPORT].map) -#define ROUTE_MAP_EXPORT_NAME(F) ((F)->map[RMAP_EXPORT].name) -#define ROUTE_MAP_EXPORT(F) ((F)->map[RMAP_EXPORT].map) - #define UNSUPPRESS_MAP_NAME(F) ((F)->usmap.name) #define UNSUPPRESS_MAP(F) ((F)->usmap.map) -enum bgp_clear_route_type -{ - BGP_CLEAR_ROUTE_NORMAL, - BGP_CLEAR_ROUTE_MY_RSCLIENT -}; - enum bgp_path_type { BGP_PATH_ALL, @@ -225,10 +214,7 @@ extern void bgp_stop_announce_route_timer(struct peer_af *paf); extern void bgp_announce_route_all (struct peer *); extern void bgp_default_originate (struct peer *, afi_t, safi_t, int); extern void bgp_soft_reconfig_in (struct peer *, afi_t, safi_t); -extern void bgp_soft_reconfig_rsclient (struct peer *, afi_t, safi_t); -extern void bgp_check_local_routes_rsclient (struct peer *rsclient, afi_t afi, safi_t safi); -extern void bgp_clear_route (struct peer *, afi_t, safi_t, - enum bgp_clear_route_type); +extern void bgp_clear_route (struct peer *, afi_t, safi_t); extern void bgp_clear_route_all (struct peer *); extern void bgp_clear_adj_in (struct peer *, afi_t, safi_t); extern void bgp_clear_stale_route (struct peer *, afi_t, safi_t); @@ -281,7 +267,7 @@ extern void bgp_process (struct bgp *, struct bgp_node *, afi_t, safi_t); * Add an end-of-initial-update marker to the process queue. This is just a * queue element with NULL bgp node. */ -extern void bgp_add_eoiu_mark (struct bgp *, bgp_table_t); +extern void bgp_add_eoiu_mark (struct bgp *); extern int bgp_config_write_table_map (struct vty *, struct bgp *, afi_t, safi_t, int *); extern int bgp_config_write_network (struct vty *, struct bgp *, afi_t, safi_t, int *); |