]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: combine special cases for vrf "all"
authorDaniel Walton <dwalton@cumulusnetworks.com>
Fri, 30 Sep 2016 14:27:04 +0000 (14:27 +0000)
committerDaniel Walton <dwalton@cumulusnetworks.com>
Fri, 30 Sep 2016 14:27:04 +0000 (14:27 +0000)
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
bgpd/bgp_routemap.c
bgpd/bgp_vty.c
vtysh/vtysh.c

index d57d5886678644583887d51a7a6ff406d18b2623..e08b43bc17a7f7e342d0103b437984e498bc7955 100644 (file)
@@ -3612,28 +3612,17 @@ DEFUN (no_set_ip_nexthop,
 }
 
 
-
-/*
- * CHECK ME - The following ALIASes need to be implemented in this DEFUN
- * "set metric (rtt|+rtt|-rtt)",
- *     SET_STR
- *     "Metric value for destination routing protocol\n"
- *     "Assign round trip time\n"
- *     "Add round trip time\n"
- *     "Subtract round trip time\n"
- *
- * "set metric <+/-metric>",
- *     SET_STR
- *     "Metric value for destination routing protocol\n"
- *     "Add or subtract metric\n"
- *
- */
 DEFUN (set_metric,
        set_metric_cmd,
-       "set metric (0-4294967295)",
+       "set metric <(0-4294967295)|rtt|+rtt|-rtt|+metric|-metric>",
        SET_STR
        "Metric value for destination routing protocol\n"
-       "Metric value\n")
+       "Metric value\n"
+       "Assign round trip time\n"
+       "Add round trip time\n"
+       "Subtract round trip time\n"
+       "Add metric\n"
+       "Subtract metric\n")
 {
   int idx_number = 2;
   return bgp_route_set_add (vty, vty->index, "metric", argv[idx_number]->arg);
index 0ced86023dd746359e8d358eede46c2585fd6e39..0d6a071ec6d66613b92dcabacb0087834c6d30d9 100644 (file)
@@ -6747,34 +6747,6 @@ bgp_show_summary (struct vty *vty, struct bgp *bgp, int afi, int safi,
   return CMD_SUCCESS;
 }
 
-static int
-bgp_show_summary_vty (struct vty *vty, const char *name,
-                      afi_t afi, safi_t safi, u_char use_json)
-{
-  struct bgp *bgp;
-
-  if (name)
-    {
-      bgp = bgp_lookup_by_name (name);
-
-      if (! bgp)
-       {
-         vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE);
-         return CMD_WARNING;
-       }
-
-      bgp_show_summary (vty, bgp, afi, safi, use_json, NULL);
-      return CMD_SUCCESS;
-    }
-
-  bgp = bgp_get_default ();
-
-  if (bgp)
-    bgp_show_summary (vty, bgp, afi, safi, use_json, NULL);
-
-  return CMD_SUCCESS;
-}
-
 static void
 bgp_show_all_instances_summary_vty (struct vty *vty, afi_t afi, safi_t safi,
                                     u_char use_json)
@@ -6791,14 +6763,7 @@ bgp_show_all_instances_summary_vty (struct vty *vty, afi_t afi, safi_t safi,
     {
       if (use_json)
         {
-          if (!(json = json_object_new_object()))
-            {
-              zlog_err("Unable to allocate memory for JSON object");
-              vty_out (vty,
-                       "{\"error\": {\"message:\": \"Unable to allocate memory for JSON object\"}}}%s",
-                       VTY_NEWLINE);
-              return;
-            }
+          json = json_object_new_object();
 
           if (! is_first)
             vty_out (vty, ",%s", VTY_NEWLINE);
@@ -6823,6 +6788,45 @@ bgp_show_all_instances_summary_vty (struct vty *vty, afi_t afi, safi_t safi,
 
 }
 
+static int
+bgp_show_summary_vty (struct vty *vty, const char *name,
+                      afi_t afi, safi_t safi, u_char use_json)
+{
+  struct bgp *bgp;
+
+  if (name)
+    {
+      if (strmatch(name, "all"))
+        {
+          bgp_show_all_instances_summary_vty (vty, afi, safi, use_json);
+          return CMD_SUCCESS;
+        }
+      else
+        {
+          bgp = bgp_lookup_by_name (name);
+
+          if (! bgp)
+            {
+              if (use_json)
+                vty_out (vty, "{}%s", VTY_NEWLINE);
+              else
+                vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE);
+              return CMD_WARNING;
+            }
+
+          bgp_show_summary (vty, bgp, afi, safi, use_json, NULL);
+          return CMD_SUCCESS;
+        }
+    }
+
+  bgp = bgp_get_default ();
+
+  if (bgp)
+    bgp_show_summary (vty, bgp, afi, safi, use_json, NULL);
+
+  return CMD_SUCCESS;
+}
+
 /* `show ip bgp summary' commands. */
 DEFUN (show_ip_bgp_summary,
        show_ip_bgp_summary_cmd,
@@ -6857,22 +6861,6 @@ DEFUN (show_ip_bgp_summary,
   return bgp_show_summary_vty (vty, vrf, afi, safi, uj);
 }
 
-DEFUN (show_ip_bgp_instance_all_summary,
-       show_ip_bgp_instance_all_summary_cmd,
-       "show ip bgp <view|vrf> all summary [json]",
-       SHOW_STR
-       IP_STR
-       BGP_STR
-       BGP_INSTANCE_ALL_HELP_STR
-       "Summary of BGP neighbor status\n"
-       "JavaScript Object Notation\n")
-{
-  u_char uj = use_json(argc, argv);
-
-  bgp_show_all_instances_summary_vty (vty, AFI_IP, SAFI_UNICAST, uj);
-  return CMD_SUCCESS;
-}
-
 const char *
 afi_safi_print (afi_t afi, safi_t safi)
 {
@@ -8595,59 +8583,6 @@ bgp_show_neighbor (struct vty *vty, struct bgp *bgp, enum show_type type,
   return CMD_SUCCESS;
 }
 
-static int 
-bgp_show_neighbor_vty (struct vty *vty, const char *name, 
-                       enum show_type type, const char *ip_str, u_char use_json)
-{
-  int ret;
-  struct bgp *bgp;
-  union sockunion su;
-  json_object *json = NULL;
-
-  if (use_json)
-    json = json_object_new_object();
-
-  if (name)
-    {
-      bgp = bgp_lookup_by_name (name);
-      if (! bgp)
-        {
-          if (use_json)
-            {
-              json_object_boolean_true_add(json, "bgpNoSuchInstance");
-              vty_out (vty, "%s%s", json_object_to_json_string(json), VTY_NEWLINE);
-              json_object_free(json);
-            }
-          else
-            vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE);
-
-          return CMD_WARNING;
-        }
-    }
-  else
-    {
-      bgp = bgp_get_default ();
-    }
-
-  if (bgp)
-    {
-      if (ip_str)
-        {
-          ret = str2sockunion (ip_str, &su);
-          if (ret < 0)
-            bgp_show_neighbor (vty, bgp, type, NULL, ip_str, use_json, json);
-          else
-            bgp_show_neighbor (vty, bgp, type, &su, NULL, use_json, json);
-        }
-      else
-        {
-          bgp_show_neighbor (vty, bgp, type, NULL, NULL, use_json, json);
-        }
-    }
-
-  return CMD_SUCCESS;
-}
-
 static void
 bgp_show_all_instances_neighbors_vty (struct vty *vty, u_char use_json)
 {
@@ -8702,6 +8637,67 @@ bgp_show_all_instances_neighbors_vty (struct vty *vty, u_char use_json)
     vty_out (vty, "}%s", VTY_NEWLINE);
 }
 
+static int
+bgp_show_neighbor_vty (struct vty *vty, const char *name,
+                       enum show_type type, const char *ip_str, u_char use_json)
+{
+  int ret;
+  struct bgp *bgp;
+  union sockunion su;
+  json_object *json = NULL;
+
+  if (use_json)
+    json = json_object_new_object();
+
+  if (name)
+    {
+      if (strmatch(name, "all"))
+        {
+          bgp_show_all_instances_neighbors_vty (vty, use_json);
+          return CMD_SUCCESS;
+        }
+      else
+        {
+          bgp = bgp_lookup_by_name (name);
+          if (! bgp)
+            {
+              if (use_json)
+                {
+                  json_object_boolean_true_add(json, "bgpNoSuchInstance");
+                  vty_out (vty, "%s%s", json_object_to_json_string(json), VTY_NEWLINE);
+                  json_object_free(json);
+                }
+              else
+                vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE);
+
+              return CMD_WARNING;
+            }
+          }
+    }
+  else
+    {
+      bgp = bgp_get_default ();
+    }
+
+  if (bgp)
+    {
+      if (ip_str)
+        {
+          ret = str2sockunion (ip_str, &su);
+          if (ret < 0)
+            bgp_show_neighbor (vty, bgp, type, NULL, ip_str, use_json, json);
+          else
+            bgp_show_neighbor (vty, bgp, type, &su, NULL, use_json, json);
+        }
+      else
+        {
+          bgp_show_neighbor (vty, bgp, type, NULL, NULL, use_json, json);
+        }
+    }
+
+  return CMD_SUCCESS;
+}
+
 /* "show ip bgp neighbors" commands.  */
 DEFUN (show_ip_bgp_neighbors,
        show_ip_bgp_neighbors_cmd,
@@ -8755,22 +8751,6 @@ DEFUN (show_ip_bgp_neighbors,
   return bgp_show_neighbor_vty (vty, vrf, sh_type, sh_arg, uj);
 }
 
-DEFUN (show_ip_bgp_instance_all_neighbors,
-       show_ip_bgp_instance_all_neighbors_cmd,
-       "show [ip] bgp <view|vrf> all neighbors [json]",
-       SHOW_STR
-       IP_STR
-       BGP_STR
-       BGP_INSTANCE_ALL_HELP_STR
-       "Detailed information on TCP and BGP neighbor connections\n"
-       "JavaScript Object Notation\n")
-{
-  u_char uj = use_json(argc, argv);
-
-  bgp_show_all_instances_neighbors_vty (vty, uj);
-  return CMD_SUCCESS;
-}
-
 /* Show BGP's AS paths internal data.  There are both `show ip bgp
    paths' and `show ip mbgp paths'.  Those functions results are the
    same.*/
@@ -8847,22 +8827,6 @@ DEFUN (show_ip_bgp_attr_info,
   return CMD_SUCCESS;
 }
 
-static int bgp_show_update_groups(struct vty *vty, const char *name,
-                                  int afi, int safi,
-                                  uint64_t subgrp_id)
-{
-  struct bgp *bgp;
-
- if (name)
-    bgp = bgp_lookup_by_name (name);
-  else
-    bgp = bgp_get_default ();
-
-  if (bgp)
-    update_group_show(bgp, afi, safi, vty, subgrp_id);
-  return CMD_SUCCESS;
-}
-
 static void
 bgp_show_all_instances_updgrps_vty (struct vty *vty, afi_t afi, safi_t safi)
 {
@@ -8879,6 +8843,35 @@ bgp_show_all_instances_updgrps_vty (struct vty *vty, afi_t afi, safi_t safi)
     }
 }
 
+static int
+bgp_show_update_groups(struct vty *vty, const char *name,
+                       int afi, int safi,
+                       uint64_t subgrp_id)
+{
+  struct bgp *bgp;
+
+  if (name)
+    {
+      if (strmatch (name, "all"))
+        {
+          bgp_show_all_instances_updgrps_vty (vty, afi, safi);
+          return CMD_SUCCESS;
+        }
+      else
+        {
+          bgp = bgp_lookup_by_name (name);
+        }
+    }
+  else
+    {
+      bgp = bgp_get_default ();
+    }
+
+  if (bgp)
+    update_group_show(bgp, afi, safi, vty, subgrp_id);
+  return CMD_SUCCESS;
+}
+
 DEFUN (show_ip_bgp_updgrps,
        show_ip_bgp_updgrps_cmd,
        "show [ip] bgp [<view|vrf> WORD] [<<ipv4|ipv6|vpnv4|encap> [unicast]|ipv4 multicast>] update-groups [SUBGROUP-ID]",
@@ -8921,19 +8914,6 @@ DEFUN (show_ip_bgp_updgrps,
   return (bgp_show_update_groups(vty, vrf, afi, safi, subgrp_id));
 }
 
-DEFUN (show_ip_bgp_instance_all_updgrps,
-       show_ip_bgp_instance_all_updgrps_cmd,
-       "show ip bgp <view|vrf> all update-groups",
-       SHOW_STR
-       IP_STR
-       BGP_STR
-       BGP_INSTANCE_ALL_HELP_STR
-       "Detailed info about dynamic update groups\n")
-{
-  bgp_show_all_instances_updgrps_vty (vty, AFI_IP, SAFI_UNICAST);
-  return CMD_SUCCESS;
-}
-
 DEFUN (show_bgp_instance_all_ipv6_updgrps,
        show_bgp_instance_all_ipv6_updgrps_cmd,
        "show bgp <view|vrf> all update-groups",
@@ -10987,7 +10967,6 @@ bgp_vty_init (void)
   /* "show ip bgp summary" commands. */
   install_element (VIEW_NODE, &show_ip_bgp_summary_cmd);
   install_element (VIEW_NODE, &show_ip_bgp_updgrps_cmd);
-  install_element (VIEW_NODE, &show_ip_bgp_instance_all_updgrps_cmd);
   install_element (VIEW_NODE, &show_bgp_instance_all_ipv6_updgrps_cmd);
   install_element (VIEW_NODE, &show_ip_bgp_updgrps_adj_cmd);
   install_element (VIEW_NODE, &show_ip_bgp_instance_updgrps_adj_cmd);
@@ -10999,10 +10978,8 @@ bgp_vty_init (void)
   install_element (VIEW_NODE, &show_bgp_updgrps_adj_s_cmd);
   install_element (VIEW_NODE, &show_bgp_instance_updgrps_adj_s_cmd);
   install_element (VIEW_NODE, &show_bgp_updgrps_afi_adj_s_cmd);
-  install_element (VIEW_NODE, &show_ip_bgp_instance_all_summary_cmd);
   install_element (RESTRICTED_NODE, &show_ip_bgp_summary_cmd);
   install_element (RESTRICTED_NODE, &show_ip_bgp_updgrps_cmd);
-  install_element (RESTRICTED_NODE, &show_ip_bgp_instance_all_updgrps_cmd);
   install_element (RESTRICTED_NODE, &show_bgp_instance_all_ipv6_updgrps_cmd);
   install_element (RESTRICTED_NODE, &show_ip_bgp_updgrps_adj_cmd);
   install_element (RESTRICTED_NODE, &show_ip_bgp_instance_updgrps_adj_cmd);
@@ -11014,10 +10991,8 @@ bgp_vty_init (void)
   install_element (RESTRICTED_NODE, &show_bgp_updgrps_adj_s_cmd);
   install_element (RESTRICTED_NODE, &show_bgp_instance_updgrps_adj_s_cmd);
   install_element (RESTRICTED_NODE, &show_bgp_updgrps_afi_adj_s_cmd);
-  install_element (RESTRICTED_NODE, &show_ip_bgp_instance_all_summary_cmd);
   install_element (ENABLE_NODE, &show_ip_bgp_summary_cmd);
   install_element (ENABLE_NODE, &show_ip_bgp_updgrps_cmd);
-  install_element (ENABLE_NODE, &show_ip_bgp_instance_all_updgrps_cmd);
   install_element (ENABLE_NODE, &show_bgp_instance_all_ipv6_updgrps_cmd);
   install_element (ENABLE_NODE, &show_ip_bgp_updgrps_adj_cmd);
   install_element (ENABLE_NODE, &show_ip_bgp_instance_updgrps_adj_cmd);
@@ -11029,13 +11004,10 @@ bgp_vty_init (void)
   install_element (ENABLE_NODE, &show_bgp_updgrps_adj_s_cmd);
   install_element (ENABLE_NODE, &show_bgp_instance_updgrps_adj_s_cmd);
   install_element (ENABLE_NODE, &show_bgp_updgrps_afi_adj_s_cmd);
-  install_element (ENABLE_NODE, &show_ip_bgp_instance_all_summary_cmd);
 
   /* "show ip bgp neighbors" commands. */
   install_element (VIEW_NODE, &show_ip_bgp_neighbors_cmd);
-  install_element (VIEW_NODE, &show_ip_bgp_instance_all_neighbors_cmd);
   install_element (ENABLE_NODE, &show_ip_bgp_neighbors_cmd);
-  install_element (ENABLE_NODE, &show_ip_bgp_instance_all_neighbors_cmd);
 
   /* "show ip bgp peer-group" commands. */
   install_element (VIEW_NODE, &show_ip_bgp_peer_groups_cmd);
index 09f761a3f79fa0dbc7edffa4dc452987fae69960..ec94c37d66fc7260b12567c0d8e2d8640e5d385b 100644 (file)
@@ -2177,7 +2177,6 @@ DEFUN (vtysh_write_terminal,
        "Write running configuration to memory, network, or terminal\n"
        "Write to terminal\n")
 {
-  /* CHECK ME argc referenced below */
   u_int i;
   char line[] = "write terminal\n";
   FILE *fp = NULL;
@@ -2199,10 +2198,6 @@ DEFUN (vtysh_write_terminal,
           VTY_NEWLINE);
   vty_out (vty, "!%s", VTY_NEWLINE);
 
-  for (i = 0; i < array_size(vtysh_client); i++)
-    if ((argc < 1 ) || (begins_with(vtysh_client[i].name, argv[0])))
-      vtysh_client_config (&vtysh_client[i], line);
-
   /* Integrate vtysh specific configuration. */
   vtysh_config_write ();