]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd, vtysh: Allow bgp and vtysh to work together again
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 26 Jan 2017 02:51:28 +0000 (21:51 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 26 Jan 2017 02:51:28 +0000 (21:51 -0500)
Harmony is restored to the world as bgp and vtysh
can now, again, stay in sync with each other.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
bgpd/bgp_vty.c
vtysh/extract.pl.in
vtysh/vtysh.c

index 17b8485237a33663f7eb9c7737a6897d72c6d97a..d6a36169f809438f2bc47bcf1273564cad639a34 100644 (file)
@@ -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 [<unicast|multicast|vpn|encap>]",
        "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 [<unicast|multicast|vpn|encap>]",
        "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);
index d38ea60a0368dc036241af1e95f0bc3a80317218..e3c859dab3c5802c1d087ca22b22d4291d597809 100755 (executable)
@@ -54,18 +54,14 @@ $ignore{'"router bgp [(1-4294967295) [<view|vrf> WORD]]"'} = "ignore";
 $ignore{'"router isis WORD"'} = "ignore";
 $ignore{'"router zebra"'} = "ignore";
 $ignore{'"address-family ipv4"'} = "ignore";
-$ignore{'"address-family ipv4 <unicast|multicast>"'} = "ignore";
+$ignore{'"address-family ipv4 [<unicast|multicast|vpn|encap>]"'} = "ignore";
 $ignore{'"address-family ipv6"'} = "ignore";
-$ignore{'"address-family ipv6 <unicast|multicast>"'} = "ignore";
-$ignore{'"address-family ipv4 vpn"'} = "ignore";
+$ignore{'"address-family ipv6 [<unicast|multicast|vpn|encap>]"'} = "ignore";
 $ignore{'"address-family vpnv4"'} = "ignore";
 $ignore{'"address-family vpnv4 unicast"'} = "ignore";
 $ignore{'"address-family ipv4 vrf NAME"'} = "ignore";
 $ignore{'"address-family <encap|encapv4>"'} = "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";
index 51b5091c5753c12b683a9f670a463fc865e62afa..1db3dca3521a5f1930db857bdb373468176b437b 100644 (file)
@@ -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 [<unicast|multicast|vpn|encap>]",
         "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 [<unicast|multicast|vpn|encap>]",
         "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);