diff options
author | Daniel Walton <dwalton@cumulusnetworks.com> | 2015-11-05 18:29:43 +0100 |
---|---|---|
committer | Daniel Walton <dwalton@cumulusnetworks.com> | 2015-11-05 18:29:43 +0100 |
commit | adbac85e10692e76c01e831d658958c9f269f18f (patch) | |
tree | 84eb4707a775d00bae3761e363a27e5455bdf69f /bgpd/bgp_advertise.h | |
parent | debian: Modify Quagga cumulus version in debian packaging (diff) | |
download | frr-adbac85e10692e76c01e831d658958c9f269f18f.tar.xz frr-adbac85e10692e76c01e831d658958c9f269f18f.zip |
BGP: support for addpath TX
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Vivek Venkataraman <vivek@cumulusnetworks.com
Ticket: CM-8014
This implements addpath TX with the first feature to use it
being "neighbor x.x.x.x addpath-tx-all-paths".
One change to show output is 'show ip bgp x.x.x.x'. If no addpath-tx
features are configured for any peers then everything looks the same
as it is today in that "Advertised to" is at the top and refers to
which peers the bestpath was advertise to.
root@superm-redxp-05[quagga-stash5]# vtysh -c 'show ip bgp 1.1.1.1'
BGP routing table entry for 1.1.1.1/32
Paths: (6 available, best #6, table Default-IP-Routing-Table)
Advertised to non peer-group peers:
r1(10.0.0.1) r2(10.0.0.2) r3(10.0.0.3) r4(10.0.0.4) r5(10.0.0.5) r6(10.0.0.6) r8(10.0.0.8)
Local, (Received from a RR-client)
12.12.12.12 (metric 20) from r2(10.0.0.2) (10.0.0.2)
Origin IGP, metric 0, localpref 100, valid, internal
AddPath ID: RX 0, TX 8
Last update: Fri Oct 30 18:26:44 2015
[snip]
but once you enable an addpath feature we must display "Advertised to" on a path-by-path basis:
superm-redxp-05# show ip bgp 1.1.1.1/32
BGP routing table entry for 1.1.1.1/32
Paths: (6 available, best #6, table Default-IP-Routing-Table)
Local, (Received from a RR-client)
12.12.12.12 (metric 20) from r2(10.0.0.2) (10.0.0.2)
Origin IGP, metric 0, localpref 100, valid, internal
AddPath ID: RX 0, TX 8
Advertised to: r8(10.0.0.8)
Last update: Fri Oct 30 18:26:44 2015
Local, (Received from a RR-client)
34.34.34.34 (metric 20) from r3(10.0.0.3) (10.0.0.3)
Origin IGP, metric 0, localpref 100, valid, internal
AddPath ID: RX 0, TX 7
Advertised to: r8(10.0.0.8)
Last update: Fri Oct 30 18:26:39 2015
Local, (Received from a RR-client)
56.56.56.56 (metric 20) from r6(10.0.0.6) (10.0.0.6)
Origin IGP, metric 0, localpref 100, valid, internal
AddPath ID: RX 0, TX 6
Advertised to: r8(10.0.0.8)
Last update: Fri Oct 30 18:26:39 2015
Local, (Received from a RR-client)
56.56.56.56 (metric 20) from r5(10.0.0.5) (10.0.0.5)
Origin IGP, metric 0, localpref 100, valid, internal
AddPath ID: RX 0, TX 5
Advertised to: r8(10.0.0.8)
Last update: Fri Oct 30 18:26:39 2015
Local, (Received from a RR-client)
34.34.34.34 (metric 20) from r4(10.0.0.4) (10.0.0.4)
Origin IGP, metric 0, localpref 100, valid, internal
AddPath ID: RX 0, TX 4
Advertised to: r8(10.0.0.8)
Last update: Fri Oct 30 18:26:39 2015
Local, (Received from a RR-client)
12.12.12.12 (metric 20) from r1(10.0.0.1) (10.0.0.1)
Origin IGP, metric 0, localpref 100, valid, internal, best
AddPath ID: RX 0, TX 3
Advertised to: r1(10.0.0.1) r2(10.0.0.2) r3(10.0.0.3) r4(10.0.0.4) r5(10.0.0.5) r6(10.0.0.6) r8(10.0.0.8)
Last update: Fri Oct 30 18:26:34 2015
superm-redxp-05#
Diffstat (limited to 'bgpd/bgp_advertise.h')
-rw-r--r-- | bgpd/bgp_advertise.h | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/bgpd/bgp_advertise.h b/bgpd/bgp_advertise.h index d5b737b9e..ae6e6bd14 100644 --- a/bgpd/bgp_advertise.h +++ b/bgpd/bgp_advertise.h @@ -82,6 +82,8 @@ struct bgp_adj_out /* Prefix information. */ struct bgp_node *rn; + u_int32_t addpath_tx_id; + /* Advertised attribute. */ struct attr *attr; @@ -168,9 +170,7 @@ struct bgp_synchronize ? NULL : (F)->next) /* Prototypes. */ -extern int bgp_adj_out_lookup (struct peer *, struct prefix *, afi_t, safi_t, - struct bgp_node *); - +extern int bgp_adj_out_lookup (struct peer *, struct bgp_node *, u_int32_t); extern void bgp_adj_in_set (struct bgp_node *, struct peer *, struct attr *, u_int32_t); extern void bgp_adj_in_unset (struct bgp_node *, struct peer *, u_int32_t); extern void bgp_adj_in_remove (struct bgp_node *, struct bgp_adj_in *); @@ -191,7 +191,5 @@ bgp_advertise_delete (struct bgp_advertise_attr *baa, struct bgp_advertise *adv); extern void bgp_advertise_unintern (struct hash *hash, struct bgp_advertise_attr *baa); -extern struct bgp_adj_out * -bgp_adj_peer_lookup (struct peer *peer, struct bgp_node *rn); #endif /* _QUAGGA_BGP_ADVERTISE_H */ |