From: Donald Sharp Date: Fri, 27 Jan 2017 16:44:42 +0000 (-0500) Subject: Merge remote-tracking branch 'origin/master' into pr/111 X-Git-Tag: frr-3.0-branchpoint~71 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=c016b6c796fe3a8520fdd0f30ef377cbb73e0037;p=mirror%2Ffrr.git Merge remote-tracking branch 'origin/master' into pr/111 --- c016b6c796fe3a8520fdd0f30ef377cbb73e0037 diff --cc bgpd/bgp_encap.h index f06dfc128c,7442c73c47..0de737c49b --- a/bgpd/bgp_encap.h +++ b/bgpd/bgp_encap.h @@@ -24,14 -24,6 +24,8 @@@ extern void bgp_encap_init (void); extern int bgp_nlri_parse_encap (struct peer *, struct attr *, struct bgp_nlri *); - int - bgp_show_encap ( - struct vty *vty, - afi_t afi, - struct prefix_rd *prd, - enum bgp_show_type type, - void *output_arg, - int tags); ++extern int bgp_show_encap (struct vty *vty, afi_t afi, struct prefix_rd *prd, ++ enum bgp_show_type type, void *output_arg, int tags); #include "bgp_encap_types.h" #endif /* _QUAGGA_BGP_ENCAP_H */ diff --cc bgpd/bgp_mplsvpn.c index 7a2717acc0,6575189ab1..6e722bbb55 --- a/bgpd/bgp_mplsvpn.c +++ b/bgpd/bgp_mplsvpn.c @@@ -732,8 -733,25 +733,9 @@@ show_adj_route_vpn (struct vty *vty, st } return CMD_SUCCESS; } + #endif -enum bgp_show_type -{ - bgp_show_type_normal, - bgp_show_type_regexp, - bgp_show_type_prefix_list, - bgp_show_type_filter_list, - bgp_show_type_neighbor, - bgp_show_type_cidr_only, - bgp_show_type_prefix_longer, - bgp_show_type_community_all, - bgp_show_type_community, - bgp_show_type_community_exact, - bgp_show_type_community_list, - bgp_show_type_community_list_exact -}; - -static int +int bgp_show_mpls_vpn (struct vty *vty, afi_t afi, struct prefix_rd *prd, enum bgp_show_type type, void *output_arg, int tags, u_char use_json) { diff --cc bgpd/bgp_mplsvpn.h index 97eed3c35a,234cf9baa2..ea6cbcd272 --- a/bgpd/bgp_mplsvpn.h +++ b/bgpd/bgp_mplsvpn.h @@@ -100,8 -106,5 +106,7 @@@ extern char *prefix_rd2str (struct pref extern int argv_find_and_parse_vpnvx(struct cmd_token **argv, int argc, int *index, afi_t *afi); - int - bgp_show_mpls_vpn (struct vty *vty, afi_t afi, struct prefix_rd *prd, - enum bgp_show_type type, void *output_arg, int tags, u_char use_json); ++extern int bgp_show_mpls_vpn (struct vty *vty, afi_t afi, struct prefix_rd *prd, ++ enum bgp_show_type type, void *output_arg, int tags, u_char use_json); #endif /* _QUAGGA_BGP_MPLSVPN_H */ diff --cc bgpd/bgp_route.c index eea0f86b34,ca96bae020..fb33b234f4 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@@ -7214,8 -7220,32 +7221,8 @@@ route_vty_out_detail (struct vty *vty, #define BGP_SHOW_DAMP_HEADER " Network From Reuse Path%s" #define BGP_SHOW_FLAP_HEADER " Network From Flaps Duration Reuse Path%s" -enum bgp_show_type -{ - bgp_show_type_normal, - bgp_show_type_regexp, - bgp_show_type_prefix_list, - bgp_show_type_filter_list, - bgp_show_type_route_map, - bgp_show_type_neighbor, - bgp_show_type_cidr_only, - bgp_show_type_prefix_longer, - bgp_show_type_community_all, - bgp_show_type_community, - bgp_show_type_community_exact, - bgp_show_type_community_list, - bgp_show_type_community_list_exact, - bgp_show_type_lcommunity_all, - bgp_show_type_lcommunity, - bgp_show_type_lcommunity_list, - bgp_show_type_flap_statistics, - bgp_show_type_flap_neighbor, - bgp_show_type_dampend_paths, - bgp_show_type_damp_neighbor -}; - static int - bgp_show_prefix_list (struct vty *vty, const char *name, + bgp_show_prefix_list (struct vty *vty, struct bgp *bgp, const char *prefix_list_str, afi_t afi, safi_t safi, enum bgp_show_type type); static int @@@ -7935,23 -8112,18 +8089,24 @@@ DEFUN (show_ip_bgp else return bgp_show (vty, bgp, afi, safi, bgp_show_type_community_all, NULL, uj); } - else if (strmatch(argv[idx]->text, "community-list")) - { - const char *clist_number_or_name = argv[++idx]->arg; - if (++idx < argc && strmatch (argv[idx]->arg, "exact-match")) - exact_match = 1; - return bgp_show_community_list (vty, vrf, clist_number_or_name, exact_match, afi, safi); - } - /* prefix-longer */ - else if (argv[idx]->type == IPV4_TKN || argv[idx]->type == IPV6_TKN) - return bgp_show_prefix_longer (vty, vrf, argv[idx + 1]->arg, afi, safi, bgp_show_type_prefix_longer); - } ++ + if (argv_find(argv, argc, "community-list", &idx)) + { + const char *clist_number_or_name = argv[++idx]->arg; + if (++idx < argc && strmatch (argv[idx]->text, "exact-match")) + exact_match = 1; + return bgp_show_community_list (vty, bgp, clist_number_or_name, exact_match, afi, safi); + } + /* 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 (vty, bgp, afi, safi, sh_type, NULL, uj); + if (safi == SAFI_MPLS_VPN) + return bgp_show_mpls_vpn (vty, afi, NULL, bgp_show_type_normal, NULL, 0, uj); + else if (safi == SAFI_ENCAP) + return bgp_show_encap (vty, afi, NULL, bgp_show_type_normal, NULL, 0); + else + return bgp_show (vty, bgp, afi, safi, sh_type, NULL, uj); } DEFUN (show_ip_bgp_route, diff --cc bgpd/bgp_route.h index f2e6273b84,3c7aa83a0e..2103338b7d --- a/bgpd/bgp_route.h +++ b/bgpd/bgp_route.h @@@ -26,28 -26,6 +26,31 @@@ Software Foundation, Inc., 59 Temple Pl struct bgp_nexthop_cache; +enum bgp_show_type +{ + bgp_show_type_normal, + bgp_show_type_regexp, + bgp_show_type_prefix_list, + bgp_show_type_filter_list, + bgp_show_type_route_map, + bgp_show_type_neighbor, + bgp_show_type_cidr_only, + bgp_show_type_prefix_longer, + bgp_show_type_community_all, + bgp_show_type_community, + bgp_show_type_community_exact, + bgp_show_type_community_list, + bgp_show_type_community_list_exact, ++ bgp_show_type_lcommunity_all, ++ bgp_show_type_lcommunity, ++ bgp_show_type_lcommunity_list, + bgp_show_type_flap_statistics, + bgp_show_type_flap_neighbor, + bgp_show_type_dampend_paths, + bgp_show_type_damp_neighbor +}; + + #define BGP_SHOW_SCODE_HEADER "Status codes: s suppressed, d damped, "\ "h history, * valid, > best, = multipath,%s"\ " i internal, r RIB-failure, S Stale, R Removed%s" diff --cc bgpd/bgp_vty.c index 80efe5f591,d9043e520d..94809d69f5 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@@ -44,11 -45,11 +45,11 @@@ Software Foundation, Inc., 59 Temple Pl #include "bgpd/bgp_damp.h" #include "bgpd/bgp_debug.h" #include "bgpd/bgp_fsm.h" --#include "bgpd/bgp_mplsvpn.h" #include "bgpd/bgp_nexthop.h" #include "bgpd/bgp_open.h" #include "bgpd/bgp_regex.h" #include "bgpd/bgp_route.h" ++#include "bgpd/bgp_mplsvpn.h" #include "bgpd/bgp_zebra.h" #include "bgpd/bgp_table.h" #include "bgpd/bgp_vty.h" @@@ -5586,7 -5673,29 +5673,7 @@@ DEFUN (address_family_vpnv6 vty->node = BGP_VPNV6_NODE; return CMD_SUCCESS; } - -DEFUN (address_family_ipv4_vpn, - address_family_ipv4_vpn_cmd, - "address-family ipv4 vpn", - "Enter Address Family command mode\n" - "Address Family\n" - "Subsequent Address Family modifier\n") -{ - vty->node = BGP_VPNV4_NODE; - return CMD_SUCCESS; -} - -DEFUN (address_family_ipv6_vpn, - address_family_ipv6_vpn_cmd, - "address-family ipv6 vpn", - "Enter Address Family command mode\n" - "Address Family\n" - "Subsequent Address Family modifier\n") -{ - vty->node = BGP_VPNV6_NODE; - return CMD_SUCCESS; -} --#endif /* KEEP_OLD_VPN_COMMANDS */ ++#endif DEFUN (address_family_encap, address_family_encap_cmd, @@@ -10694,7 -10843,10 +10821,8 @@@ bgp_vty_init (void #ifdef KEEP_OLD_VPN_COMMANDS install_element (BGP_NODE, &address_family_vpnv4_cmd); install_element (BGP_NODE, &address_family_vpnv6_cmd); - install_element (BGP_NODE, &address_family_ipv4_vpn_cmd); - install_element (BGP_NODE, &address_family_ipv6_vpn_cmd); #endif /* KEEP_OLD_VPN_COMMANDS */ + install_element (BGP_NODE, &address_family_encap_cmd); install_element (BGP_NODE, &address_family_encapv6_cmd); diff --cc bgpd/rfapi/bgp_rfapi_cfg.c index ab9a24e831,10b365c1c8..8ff28a39d7 --- a/bgpd/rfapi/bgp_rfapi_cfg.c +++ b/bgpd/rfapi/bgp_rfapi_cfg.c @@@ -30,8 -30,8 +30,8 @@@ #include "bgpd/bgpd.h" #include "bgpd/bgp_attr.h" --#include "bgpd/bgp_mplsvpn.h" #include "bgpd/bgp_route.h" ++#include "bgpd/bgp_mplsvpn.h" #include "bgpd/bgp_ecommunity.h" #include "bgpd/rfapi/rfapi.h" diff --cc bgpd/rfapi/rfapi.c index 61da18a308,c195d09ce7..cc6b555c9d --- a/bgpd/rfapi/rfapi.c +++ b/bgpd/rfapi/rfapi.c @@@ -36,13 -36,13 +36,13 @@@ #include "bgpd/bgpd.h" #include "bgpd/bgp_ecommunity.h" #include "bgpd/bgp_attr.h" --#include "bgpd/bgp_mplsvpn.h" #include "bgpd/rfapi/bgp_rfapi_cfg.h" #include "bgpd/rfapi/rfapi.h" #include "bgpd/rfapi/rfapi_backend.h" #include "bgpd/bgp_route.h" ++#include "bgpd/bgp_mplsvpn.h" #include "bgpd/bgp_aspath.h" #include "bgpd/bgp_advertise.h" #include "bgpd/bgp_vnc_types.h" diff --cc bgpd/rfapi/rfapi_ap.c index 4b8eb9511b,4c415504fa..5cc1dd7815 --- a/bgpd/rfapi/rfapi_ap.c +++ b/bgpd/rfapi/rfapi_ap.c @@@ -35,13 -35,13 +35,13 @@@ #include "bgpd/bgpd.h" #include "bgpd/bgp_ecommunity.h" #include "bgpd/bgp_attr.h" --#include "bgpd/bgp_mplsvpn.h" #include "bgpd/rfapi/bgp_rfapi_cfg.h" #include "bgpd/rfapi/rfapi.h" #include "bgpd/rfapi/rfapi_backend.h" #include "bgpd/bgp_route.h" ++#include "bgpd/bgp_mplsvpn.h" #include "bgpd/bgp_aspath.h" #include "bgpd/bgp_advertise.h"