From: Donald Sharp Date: Thu, 26 Jan 2017 02:51:28 +0000 (-0500) Subject: bgpd, vtysh: Allow bgp and vtysh to work together again X-Git-Tag: frr-3.0-branchpoint~67^2~6 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=c7f1274bad25b21d2c1e9b42d0b5847779d0cd65;p=matthieu%2Ffrr.git bgpd, vtysh: Allow bgp and vtysh to work together again Harmony is restored to the world as bgp and vtysh can now, again, stay in sync with each other. Signed-off-by: Donald Sharp --- diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 17b8485237..d6a36169f8 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -5509,80 +5509,68 @@ DEFUN (no_neighbor_addpath_tx_bestpath_per_as, PEER_FLAG_ADDPATH_TX_BESTPATH_PER_AS); } - -/* Address Family configuration. */ -DEFUN (address_family_ipv4, - address_family_ipv4_cmd, - "address-family ipv4", - "Enter Address Family command mode\n" - "Address Family\n") -{ - vty->node = BGP_IPV4_NODE; - return CMD_SUCCESS; -} - DEFUN (address_family_ipv4_safi, address_family_ipv4_safi_cmd, - "address-family ipv4 "BGP_SAFI_CMD_STR, + "address-family ipv4 []", "Enter Address Family command mode\n" "Address Family\n" BGP_SAFI_HELP_STR) { int idx_safi = 2; - switch (bgp_vty_safi_from_arg(argv[idx_safi]->arg)) + if (argc == idx_safi) { - case SAFI_MULTICAST: - vty->node = BGP_IPV4M_NODE; - break; - case SAFI_ENCAP: - vty->node = BGP_ENCAP_NODE; - break; - case SAFI_MPLS_VPN: - vty->node = BGP_VPNV4_NODE; - break; - case SAFI_UNICAST: - default: - vty->node = BGP_IPV4_NODE; - break; + switch (bgp_vty_safi_from_arg(argv[idx_safi]->arg)) + { + case SAFI_MULTICAST: + vty->node = BGP_IPV4M_NODE; + break; + case SAFI_ENCAP: + vty->node = BGP_ENCAP_NODE; + break; + case SAFI_MPLS_VPN: + vty->node = BGP_VPNV4_NODE; + break; + case SAFI_UNICAST: + default: + vty->node = BGP_IPV4_NODE; + break; + } } + else + vty->node = BGP_IPV4_NODE; return CMD_SUCCESS; } -DEFUN (address_family_ipv6, - address_family_ipv6_cmd, - "address-family ipv6", - "Enter Address Family command mode\n" - "Address Family\n") -{ - vty->node = BGP_IPV6_NODE; - return CMD_SUCCESS; -} - DEFUN (address_family_ipv6_safi, address_family_ipv6_safi_cmd, - "address-family ipv6 "BGP_SAFI_CMD_STR, + "address-family ipv6 []", "Enter Address Family command mode\n" "Address Family\n" BGP_SAFI_HELP_STR) { int idx_safi = 2; - switch (bgp_vty_safi_from_arg(argv[idx_safi]->arg)) + if (argc == idx_safi) { - case SAFI_MULTICAST: - vty->node = BGP_IPV6M_NODE; - break; - case SAFI_ENCAP: - vty->node = BGP_ENCAPV6_NODE; - break; - case SAFI_MPLS_VPN: - vty->node = BGP_VPNV6_NODE; - break; - case SAFI_UNICAST: - default: - vty->node = BGP_IPV6_NODE; - break; + switch (bgp_vty_safi_from_arg(argv[idx_safi]->arg)) + { + case SAFI_MULTICAST: + vty->node = BGP_IPV6M_NODE; + break; + case SAFI_ENCAP: + vty->node = BGP_ENCAPV6_NODE; + break; + case SAFI_MPLS_VPN: + vty->node = BGP_VPNV6_NODE; + break; + case SAFI_UNICAST: + default: + vty->node = BGP_IPV6_NODE; + break; + } } + else + vty->node = BGP_IPV6_NODE; return CMD_SUCCESS; } @@ -5609,28 +5597,6 @@ 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 */ DEFUN (address_family_encap, @@ -10772,15 +10738,11 @@ bgp_vty_init (void) install_element (BGP_ENCAPV6_NODE, &no_neighbor_allowas_in_cmd); /* address-family commands. */ - install_element (BGP_NODE, &address_family_ipv4_cmd); install_element (BGP_NODE, &address_family_ipv4_safi_cmd); - install_element (BGP_NODE, &address_family_ipv6_cmd); install_element (BGP_NODE, &address_family_ipv6_safi_cmd); #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); diff --git a/vtysh/extract.pl.in b/vtysh/extract.pl.in index d38ea60a03..e3c859dab3 100755 --- a/vtysh/extract.pl.in +++ b/vtysh/extract.pl.in @@ -54,18 +54,14 @@ $ignore{'"router bgp [(1-4294967295) [ WORD]]"'} = "ignore"; $ignore{'"router isis WORD"'} = "ignore"; $ignore{'"router zebra"'} = "ignore"; $ignore{'"address-family ipv4"'} = "ignore"; -$ignore{'"address-family ipv4 "'} = "ignore"; +$ignore{'"address-family ipv4 []"'} = "ignore"; $ignore{'"address-family ipv6"'} = "ignore"; -$ignore{'"address-family ipv6 "'} = "ignore"; -$ignore{'"address-family ipv4 vpn"'} = "ignore"; +$ignore{'"address-family ipv6 []"'} = "ignore"; $ignore{'"address-family vpnv4"'} = "ignore"; $ignore{'"address-family vpnv4 unicast"'} = "ignore"; $ignore{'"address-family ipv4 vrf NAME"'} = "ignore"; $ignore{'"address-family "'} = "ignore"; $ignore{'"address-family encapv6"'} = "ignore"; -$ignore{'"address-family ipv4 encap"'} = "ignore"; -$ignore{'"address-family ipv6 encap"'} = "ignore"; -$ignore{'"address-family ipv6 vpn"'} = "ignore"; $ignore{'"address-family vpnv6"'} = "ignore"; $ignore{'"address-family vpnv6 unicast"'} = "ignore"; $ignore{'"exit-address-family"'} = "ignore"; diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c index 51b5091c57..1db3dca352 100644 --- a/vtysh/vtysh.c +++ b/vtysh/vtysh.c @@ -1149,48 +1149,56 @@ DEFUNSH (VTYSH_BGPD, DEFUNSH (VTYSH_BGPD, address_family_ipv4_unicast, address_family_ipv4_unicast_cmd, - "address-family ipv4 unicast", + "address-family ipv4 []", "Enter Address Family command mode\n" "Address Family\n" - "Address Family Modifier\n") + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n") { - vty->node = BGP_IPV4_NODE; - return CMD_SUCCESS; -} + int idx = 0; + + if (argv_find (argv, argc, "multicast", &idx)) + vty->node = BGP_IPV4M_NODE; + + else if (argv_find (argv, argc, "encap", &idx)) + vty->node = BGP_ENCAP_NODE; + + else if (argv_find (argv, argc, "vpn", &idx)) + vty->node = BGP_VPNV4_NODE; + + else + vty->node = BGP_IPV4_NODE; -DEFUNSH (VTYSH_BGPD, - address_family_ipv4_multicast, - address_family_ipv4_multicast_cmd, - "address-family ipv4 multicast", - "Enter Address Family command mode\n" - "Address Family\n" - "Address Family Modifier\n") -{ - vty->node = BGP_IPV4M_NODE; return CMD_SUCCESS; } DEFUNSH (VTYSH_BGPD, address_family_ipv6, address_family_ipv6_cmd, - "address-family ipv6 [unicast]", + "address-family ipv6 []", "Enter Address Family command mode\n" "Address Family\n" - "Address Family Modifier\n") + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n") { - vty->node = BGP_IPV6_NODE; - return CMD_SUCCESS; -} + int idx = 0; + + if (argv_find (argv, argc, "multicast", &idx)) + vty->node = BGP_IPV6M_NODE; + + else if (argv_find (argv, argc, "encap", &idx)) + vty->node = BGP_ENCAPV6_NODE; + + else if (argv_find (argv, argc, "vpn", &idx)) + vty->node = BGP_VPNV6_NODE; + + else + vty->node = BGP_IPV6_NODE; -DEFUNSH (VTYSH_BGPD, - address_family_ipv6_multicast, - address_family_ipv6_multicast_cmd, - "address-family ipv6 multicast", - "Enter Address Family command mode\n" - "Address Family\n" - "Address Family Modifier\n") -{ - vty->node = BGP_IPV6M_NODE; return CMD_SUCCESS; } @@ -3282,9 +3290,7 @@ vtysh_init_vty (void) install_element (BGP_NODE, &vnc_l2_group_cmd); #endif install_element (BGP_NODE, &address_family_ipv4_unicast_cmd); - install_element (BGP_NODE, &address_family_ipv4_multicast_cmd); install_element (BGP_NODE, &address_family_ipv6_cmd); - install_element (BGP_NODE, &address_family_ipv6_multicast_cmd); install_element (BGP_VPNV4_NODE, &exit_address_family_cmd); install_element (BGP_VPNV6_NODE, &exit_address_family_cmd); install_element (BGP_ENCAP_NODE, &exit_address_family_cmd);