summaryrefslogtreecommitdiffstats
path: root/bgpd
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-05-15 03:19:33 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-05-15 03:19:33 +0200
commit56afaa8bcbe59b62faff57546359df89c7b6fb4a (patch)
treeb83ebd62b6f5f2f617b26b07a830dc41bb51da00 /bgpd
parentMerge pull request #525 from qlyoung/frr-script-fix (diff)
parentMerge pull request #521 from opensourcerouting/bgpd-fixes-stable (diff)
downloadfrr-56afaa8bcbe59b62faff57546359df89c7b6fb4a.tar.xz
frr-56afaa8bcbe59b62faff57546359df89c7b6fb4a.zip
Merge remote-tracking branch 'origin/stable/3.0'
Diffstat (limited to 'bgpd')
-rw-r--r--bgpd/bgp_encap.c137
-rw-r--r--bgpd/bgp_mplsvpn.c1
-rw-r--r--bgpd/bgp_route.c25
3 files changed, 20 insertions, 143 deletions
diff --git a/bgpd/bgp_encap.c b/bgpd/bgp_encap.c
index 603979942..23be34c63 100644
--- a/bgpd/bgp_encap.c
+++ b/bgpd/bgp_encap.c
@@ -577,73 +577,6 @@ DEFUN (show_bgp_ipv6_encap_rd_tags,
return bgp_show_encap (vty, AFI_IP6, &prd, bgp_show_type_normal, NULL, 1);
}
-DEFUN (show_bgp_ipv4_encap_neighbor_routes,
- show_bgp_ipv4_encap_neighbor_routes_cmd,
- "show [ip] bgp ipv4 encap neighbors A.B.C.D routes",
- SHOW_STR
- IP_STR
- BGP_STR
- "Address Family\n"
- "Display ENCAP NLRI specific information\n"
- "Detailed information on TCP and BGP neighbor connections\n"
- "Neighbor to display information about\n"
- "Display routes learned from neighbor\n")
-{
- int idx_peer = 0;
- union sockunion *su;
- struct peer *peer;
-
- argv_find(argv, argc, "A.B.C.D", &idx_peer);
- su = sockunion_str2su (argv[idx_peer]->arg);
-
- if (!su)
- {
- vty_out (vty, "Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- peer = peer_lookup (NULL, su);
- if (! peer || ! peer->afc[AFI_IP][SAFI_ENCAP])
- {
- vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- return bgp_show_encap (vty, AFI_IP, NULL, bgp_show_type_neighbor, su, 0);
-}
-
-DEFUN (show_bgp_ipv6_encap_neighbor_routes,
- show_bgp_ipv6_encap_neighbor_routes_cmd,
- "show [ip] bgp ipv6 encap neighbors A.B.C.D routes",
- SHOW_STR
- IP_STR
- BGP_STR
- "Address Family\n"
- "Display ENCAP NLRI specific information\n"
- "Detailed information on TCP and BGP neighbor connections\n"
- "Neighbor to display information about\n"
- "Display routes learned from neighbor\n")
-{
- int idx_peer = 5;
- union sockunion su;
- struct peer *peer;
-
- if (str2sockunion(argv[idx_peer]->arg, &su))
- {
- vty_out (vty, "Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- peer = peer_lookup (NULL, &su);
- if (! peer || ! peer->afc[AFI_IP6][SAFI_ENCAP])
- {
- vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- return bgp_show_encap (vty, AFI_IP6, NULL, bgp_show_type_neighbor, &su, 0);
-}
-
DEFUN (show_bgp_ipv4_encap_rd_neighbor_routes,
show_bgp_ipv4_encap_rd_neighbor_routes_cmd,
"show [ip] bgp ipv4 encap rd ASN:nn_or_IP-address:nn neighbors <A.B.C.D|X:X::X:X> routes",
@@ -734,72 +667,6 @@ DEFUN (show_bgp_ipv6_encap_rd_neighbor_routes,
return bgp_show_encap (vty, AFI_IP6, &prd, bgp_show_type_neighbor, &su, 0);
}
-DEFUN (show_bgp_ipv4_encap_neighbor_advertised_routes,
- show_bgp_ipv4_encap_neighbor_advertised_routes_cmd,
- "show [ip] bgp ipv4 encap neighbors A.B.C.D advertised-routes",
- SHOW_STR
- IP_STR
- BGP_STR
- "Address Family\n"
- "Display ENCAP NLRI specific information\n"
- "Detailed information on TCP and BGP neighbor connections\n"
- "Neighbor to display information about\n"
- "Display the routes advertised to a BGP neighbor\n")
-{
- int idx_peer = 5;
- int ret;
- struct peer *peer;
- union sockunion su;
-
- ret = str2sockunion (argv[idx_peer]->arg, &su);
- if (ret < 0)
- {
- vty_out (vty, "%% Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
- return CMD_WARNING;
- }
- peer = peer_lookup (NULL, &su);
- if (! peer || ! peer->afc[AFI_IP][SAFI_ENCAP])
- {
- vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- return show_adj_route_encap (vty, peer, NULL);
-}
-
-DEFUN (show_bgp_ipv6_encap_neighbor_advertised_routes,
- show_bgp_ipv6_encap_neighbor_advertised_routes_cmd,
- "show [ip] bgp ipv6 encap neighbors A.B.C.D advertised-routes",
- SHOW_STR
- IP_STR
- BGP_STR
- "Address Family\n"
- "Display ENCAP NLRI specific information\n"
- "Detailed information on TCP and BGP neighbor connections\n"
- "Neighbor to display information about\n"
- "Display the routes advertised to a BGP neighbor\n")
-{
- int idx_peer = 5;
- int ret;
- struct peer *peer;
- union sockunion su;
-
- ret = str2sockunion (argv[idx_peer]->arg, &su);
- if (ret < 0)
- {
- vty_out (vty, "%% Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
- return CMD_WARNING;
- }
- peer = peer_lookup (NULL, &su);
- if (! peer || ! peer->afc[AFI_IP6][SAFI_ENCAP])
- {
- vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
- return CMD_WARNING;
- }
-
- return show_adj_route_encap (vty, peer, NULL);
-}
-
DEFUN (show_bgp_ipv4_encap_rd_neighbor_advertised_routes,
show_bgp_ipv4_encap_rd_neighbor_advertised_routes_cmd,
"show [ip] bgp ipv4 encap rd ASN:nn_or_IP-address:nn neighbors <A.B.C.D|X:X::X:X> advertised-routes",
@@ -899,16 +766,12 @@ bgp_encap_init (void)
install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_cmd);
install_element (VIEW_NODE, &show_bgp_ipv4_encap_tags_cmd);
install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_tags_cmd);
- install_element (VIEW_NODE, &show_bgp_ipv4_encap_neighbor_routes_cmd);
install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_neighbor_routes_cmd);
- install_element (VIEW_NODE, &show_bgp_ipv4_encap_neighbor_advertised_routes_cmd);
install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_neighbor_advertised_routes_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_encap_tags_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_tags_cmd);
- install_element (VIEW_NODE, &show_bgp_ipv6_encap_neighbor_routes_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_neighbor_routes_cmd);
- install_element (VIEW_NODE, &show_bgp_ipv6_encap_neighbor_advertised_routes_cmd);
install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_neighbor_advertised_routes_cmd);
}
diff --git a/bgpd/bgp_mplsvpn.c b/bgpd/bgp_mplsvpn.c
index 421b62fba..97b40df28 100644
--- a/bgpd/bgp_mplsvpn.c
+++ b/bgpd/bgp_mplsvpn.c
@@ -1196,7 +1196,6 @@ bgp_mplsvpn_init (void)
install_element (VIEW_NODE, &show_ip_bgp_vpn_rd_cmd);
#ifdef KEEP_OLD_VPN_COMMANDS
install_element (VIEW_NODE, &show_ip_bgp_vpn_all_cmd);
- install_element (VIEW_NODE, &show_ip_bgp_vpn_rd_cmd);
install_element (VIEW_NODE, &show_ip_bgp_vpn_all_tags_cmd);
install_element (VIEW_NODE, &show_ip_bgp_vpn_rd_tags_cmd);
install_element (VIEW_NODE, &show_ip_bgp_vpn_all_neighbor_routes_cmd);
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 24a68778d..834b9e073 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -4401,7 +4401,7 @@ bgp_static_add (struct bgp *bgp)
for (rm = bgp_table_top (table); rm; rm = bgp_route_next (rm))
{
- bgp_static = rn->info;
+ bgp_static = rm->info;
bgp_static_update_safi (bgp, &rm->p, bgp_static, afi, safi);
}
}
@@ -4435,7 +4435,7 @@ bgp_static_delete (struct bgp *bgp)
for (rm = bgp_table_top (table); rm; rm = bgp_route_next (rm))
{
- bgp_static = rn->info;
+ bgp_static = rm->info;
bgp_static_withdraw_safi (bgp, &rm->p,
AFI_IP, safi,
(struct prefix_rd *)&rn->p,
@@ -4462,6 +4462,8 @@ bgp_static_redo_import_check (struct bgp *bgp)
afi_t afi;
safi_t safi;
struct bgp_node *rn;
+ struct bgp_node *rm;
+ struct bgp_table *table;
struct bgp_static *bgp_static;
/* Use this flag to force reprocessing of the route */
@@ -4471,8 +4473,21 @@ bgp_static_redo_import_check (struct bgp *bgp)
for (rn = bgp_table_top (bgp->route[afi][safi]); rn; rn = bgp_route_next (rn))
if (rn->info != NULL)
{
- bgp_static = rn->info;
- bgp_static_update (bgp, &rn->p, bgp_static, afi, safi);
+ if ((safi == SAFI_MPLS_VPN) || (safi == SAFI_ENCAP) || (safi == SAFI_EVPN))
+ {
+ table = rn->info;
+
+ for (rm = bgp_table_top (table); rm; rm = bgp_route_next (rm))
+ {
+ bgp_static = rm->info;
+ bgp_static_update_safi (bgp, &rm->p, bgp_static, afi, safi);
+ }
+ }
+ else
+ {
+ bgp_static = rn->info;
+ bgp_static_update (bgp, &rn->p, bgp_static, afi, safi);
+ }
}
bgp_flag_unset(bgp, BGP_FLAG_FORCE_STATIC_PROCESS);
}
@@ -8654,7 +8669,7 @@ DEFUN (show_ip_bgp,
}
/* prefix-longer */
if (argv_find(argv, argc, "A.B.C.D/M", &idx) || argv_find(argv, argc, "X:X::X:X/M", &idx))
- return bgp_show_prefix_longer (vty, bgp, argv[idx + 1]->arg, afi, safi, bgp_show_type_prefix_longer);
+ return bgp_show_prefix_longer (vty, bgp, argv[idx]->arg, afi, safi, bgp_show_type_prefix_longer);
if (safi == SAFI_MPLS_VPN)
return bgp_show_mpls_vpn (vty, afi, NULL, bgp_show_type_normal, NULL, 0, uj);