]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Consolidate aggregate-address commands
authorQuentin Young <qlyoung@cumulusnetworks.com>
Sat, 29 Oct 2016 05:34:10 +0000 (05:34 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Sat, 29 Oct 2016 05:34:10 +0000 (05:34 +0000)
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
bgpd/bgp_route.c

index b4eafd13fe37c4005e5a6f2717e05793b7d92fe2..90b75080f110f4da4214143d8bb6bc4c778da5bc 100644 (file)
@@ -5447,115 +5447,7 @@ bgp_aggregate_set (struct vty *vty, const char *prefix_str,
 
 DEFUN (aggregate_address,
        aggregate_address_cmd,
-       "aggregate-address A.B.C.D/M",
-       "Configure BGP aggregate entries\n"
-       "Aggregate prefix\n")
-{
-  int idx_ipv4_prefixlen = 1;
-  return bgp_aggregate_set (vty, argv[idx_ipv4_prefixlen]->arg, AFI_IP, bgp_node_safi (vty), 0, 0);
-}
-
-DEFUN (aggregate_address_mask,
-       aggregate_address_mask_cmd,
-       "aggregate-address A.B.C.D A.B.C.D",
-       "Configure BGP aggregate entries\n"
-       "Aggregate address\n"
-       "Aggregate mask\n")
-{
-  int idx_ipv4 = 1;
-  int idx_ipv4_2 = 2;
-  int ret;
-  char prefix_str[BUFSIZ];
-
-  ret = netmask_str2prefix_str (argv[idx_ipv4]->arg, argv[idx_ipv4_2]->arg, prefix_str);
-
-  if (! ret)
-    {
-      vty_out (vty, "%% Inconsistent address and mask%s", VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-
-  return bgp_aggregate_set (vty, prefix_str, AFI_IP, bgp_node_safi (vty),
-                           0, 0);
-}
-
-DEFUN (aggregate_address_summary_only,
-       aggregate_address_summary_only_cmd,
-       "aggregate-address A.B.C.D/M summary-only",
-       "Configure BGP aggregate entries\n"
-       "Aggregate prefix\n"
-       "Filter more specific routes from updates\n")
-{
-  int idx_ipv4_prefixlen = 1;
-  return bgp_aggregate_set (vty, argv[idx_ipv4_prefixlen]->arg, AFI_IP, bgp_node_safi (vty),
-                           AGGREGATE_SUMMARY_ONLY, 0);
-}
-
-DEFUN (aggregate_address_mask_summary_only,
-       aggregate_address_mask_summary_only_cmd,
-       "aggregate-address A.B.C.D A.B.C.D summary-only",
-       "Configure BGP aggregate entries\n"
-       "Aggregate address\n"
-       "Aggregate mask\n"
-       "Filter more specific routes from updates\n")
-{
-  int idx_ipv4 = 1;
-  int idx_ipv4_2 = 2;
-  int ret;
-  char prefix_str[BUFSIZ];
-
-  ret = netmask_str2prefix_str (argv[idx_ipv4]->arg, argv[idx_ipv4_2]->arg, prefix_str);
-
-  if (! ret)
-    {
-      vty_out (vty, "%% Inconsistent address and mask%s", VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-
-  return bgp_aggregate_set (vty, prefix_str, AFI_IP, bgp_node_safi (vty),
-                           AGGREGATE_SUMMARY_ONLY, 0);
-}
-
-DEFUN (aggregate_address_as_set,
-       aggregate_address_as_set_cmd,
-       "aggregate-address A.B.C.D/M as-set",
-       "Configure BGP aggregate entries\n"
-       "Aggregate prefix\n"
-       "Generate AS set path information\n")
-{
-  int idx_ipv4_prefixlen = 1;
-  return bgp_aggregate_set (vty, argv[idx_ipv4_prefixlen]->arg, AFI_IP, bgp_node_safi (vty),
-                           0, AGGREGATE_AS_SET);
-}
-
-DEFUN (aggregate_address_mask_as_set,
-       aggregate_address_mask_as_set_cmd,
-       "aggregate-address A.B.C.D A.B.C.D as-set",
-       "Configure BGP aggregate entries\n"
-       "Aggregate address\n"
-       "Aggregate mask\n"
-       "Generate AS set path information\n")
-{
-  int idx_ipv4 = 1;
-  int idx_ipv4_2 = 2;
-  int ret;
-  char prefix_str[BUFSIZ];
-
-  ret = netmask_str2prefix_str (argv[idx_ipv4]->arg, argv[idx_ipv4_2]->arg, prefix_str);
-
-  if (! ret)
-    {
-      vty_out (vty, "%% Inconsistent address and mask%s", VTY_NEWLINE);
-      return CMD_WARNING;
-    }
-
-  return bgp_aggregate_set (vty, prefix_str, AFI_IP, bgp_node_safi (vty),
-                           0, AGGREGATE_AS_SET);
-}
-
-DEFUN (aggregate_address_as_set_summary,
-       aggregate_address_as_set_summary_cmd,
-       "aggregate-address A.B.C.D/M <as-set summary-only|summary-only as-set>",
+       "aggregate-address A.B.C.D/M [<as-set [summary-only]|summary-only [as-set]>]",
        "Configure BGP aggregate entries\n"
        "Aggregate prefix\n"
        "Generate AS set path information\n"
@@ -5563,14 +5455,19 @@ DEFUN (aggregate_address_as_set_summary,
        "Filter more specific routes from updates\n"
        "Generate AS set path information\n")
 {
-  int idx_ipv4_prefixlen = 1;
-  return bgp_aggregate_set (vty, argv[idx_ipv4_prefixlen]->arg, AFI_IP, bgp_node_safi (vty),
-                           AGGREGATE_SUMMARY_ONLY, AGGREGATE_AS_SET);
+  int idx = 0;
+  argv_find (argv, argc, "A.B.C.D/M", &idx);
+  char *prefix = argv[idx]->arg;
+  int as_set = argv_find (argv, argc, "as-set", &idx) ? AGGREGATE_AS_SET : 0;
+  idx = 0;
+  int summary_only = argv_find (argv, argc, "summary-only", &idx) ? AGGREGATE_SUMMARY_ONLY : 0;
+
+  return bgp_aggregate_set (vty, prefix, AFI_IP, bgp_node_safi (vty), summary_only, as_set);
 }
 
-DEFUN (aggregate_address_mask_as_set_summary,
-       aggregate_address_mask_as_set_summary_cmd,
-       "aggregate-address A.B.C.D A.B.C.D <as-set summary-only|summary-only as-set>",
+DEFUN (aggregate_address_mask,
+       aggregate_address_mask_cmd,
+       "aggregate-address A.B.C.D A.B.C.D [<as-set [summary-only]|summary-only [as-set]>]",
        "Configure BGP aggregate entries\n"
        "Aggregate address\n"
        "Aggregate mask\n"
@@ -5579,12 +5476,17 @@ DEFUN (aggregate_address_mask_as_set_summary,
        "Filter more specific routes from updates\n"
        "Generate AS set path information\n")
 {
-  int idx_ipv4 = 1;
-  int idx_ipv4_2 = 2;
-  int ret;
-  char prefix_str[BUFSIZ];
+  int idx = 0;
+  argv_find (argv, argc, "A.B.C.D", &idx);
+  char *prefix = argv[idx]->arg;
+  argv_find (argv, argc, "A.B.C.D", &idx);
+  char *mask = argv[idx]->arg;
+  int as_set = argv_find (argv, argc, "as-set", &idx) ? AGGREGATE_AS_SET : 0;
+  idx = 0;
+  int summary_only = argv_find (argv, argc, "summary-only", &idx) ? AGGREGATE_SUMMARY_ONLY : 0;
 
-  ret = netmask_str2prefix_str (argv[idx_ipv4]->arg, argv[idx_ipv4_2]->arg, prefix_str);
+  char prefix_str[BUFSIZ];
+  int ret = netmask_str2prefix_str (prefix, mask, prefix_str);
 
   if (! ret)
     {
@@ -5592,39 +5494,46 @@ DEFUN (aggregate_address_mask_as_set_summary,
       return CMD_WARNING;
     }
 
-  return bgp_aggregate_set (vty, prefix_str, AFI_IP, bgp_node_safi (vty),
-                           AGGREGATE_SUMMARY_ONLY, AGGREGATE_AS_SET);
+  return bgp_aggregate_set (vty, prefix_str, AFI_IP, bgp_node_safi (vty), summary_only, as_set);
 }
 
 DEFUN (no_aggregate_address,
        no_aggregate_address_cmd,
-       "no aggregate-address A.B.C.D/M [as-set] [summary-only]",
+       "no aggregate-address A.B.C.D/M [<as-set [summary-only]|summary-only [as-set]>]",
        NO_STR
        "Configure BGP aggregate entries\n"
        "Aggregate prefix\n"
        "Generate AS set path information\n"
-       "Filter more specific routes from updates\n")
+       "Filter more specific routes from updates\n"
+       "Filter more specific routes from updates\n"
+       "Generate AS set path information\n")
 {
-  int idx_ipv4_prefixlen = 2;
-  return bgp_aggregate_unset (vty, argv[idx_ipv4_prefixlen]->arg, AFI_IP, bgp_node_safi (vty));
+  int idx = 0;
+  argv_find (argv, argc, "A.B.C.D/M", &idx);
+  char *prefix = argv[idx]->arg;
+  return bgp_aggregate_unset (vty, prefix, AFI_IP, bgp_node_safi (vty));
 }
 
 DEFUN (no_aggregate_address_mask,
        no_aggregate_address_mask_cmd,
-       "no aggregate-address A.B.C.D A.B.C.D [as-set] [summary-only]",
+       "no aggregate-address A.B.C.D A.B.C.D [<as-set [summary-only]|summary-only [as-set]>]",
        NO_STR
        "Configure BGP aggregate entries\n"
        "Aggregate address\n"
        "Aggregate mask\n"
        "Generate AS set path information\n"
-       "Filter more specific routes from updates\n")
+       "Filter more specific routes from updates\n"
+       "Filter more specific routes from updates\n"
+       "Generate AS set path information\n")
 {
-  int idx_ipv4 = 2;
-  int idx_ipv4_2 = 3;
-  int ret;
-  char prefix_str[BUFSIZ];
+  int idx = 0;
+  argv_find (argv, argc, "A.B.C.D", &idx);
+  char *prefix = argv[idx]->arg;
+  argv_find (argv, argc, "A.B.C.D", &idx);
+  char *mask = argv[idx]->arg;
 
-  ret = netmask_str2prefix_str (argv[idx_ipv4]->arg, argv[idx_ipv4_2]->arg, prefix_str);
+  char prefix_str[BUFSIZ];
+  int ret = netmask_str2prefix_str (prefix, mask, prefix_str);
 
   if (! ret)
     {
@@ -5637,47 +5546,29 @@ DEFUN (no_aggregate_address_mask,
 
 DEFUN (ipv6_aggregate_address,
        ipv6_aggregate_address_cmd,
-       "aggregate-address X:X::X:X/M",
-       "Configure BGP aggregate entries\n"
-       "Aggregate prefix\n")
-{
-  int idx_ipv6_prefixlen = 1;
-  return bgp_aggregate_set (vty, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_UNICAST, 0, 0);
-}
-
-DEFUN (ipv6_aggregate_address_summary_only,
-       ipv6_aggregate_address_summary_only_cmd,
-       "aggregate-address X:X::X:X/M summary-only",
+       "aggregate-address X:X::X:X/M [summary-only]",
        "Configure BGP aggregate entries\n"
        "Aggregate prefix\n"
        "Filter more specific routes from updates\n")
 {
-  int idx_ipv6_prefixlen = 1;
-  return bgp_aggregate_set (vty, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_UNICAST, 
-                           AGGREGATE_SUMMARY_ONLY, 0);
+  int idx = 0;
+  argv_find (argv, argc, "X:X::X:X/M", &idx);
+  char *prefix = argv[idx]->arg;
+  int sum_only = argv_find (argv, argc, "summary-only", &idx) ? AGGREGATE_SUMMARY_ONLY : 0;
+  return bgp_aggregate_set (vty, prefix, AFI_IP6, SAFI_UNICAST, sum_only, 0);
 }
 
 DEFUN (no_ipv6_aggregate_address,
        no_ipv6_aggregate_address_cmd,
-       "no aggregate-address X:X::X:X/M",
+       "no aggregate-address X:X::X:X/M [summary-only]",
        NO_STR
        "Configure BGP aggregate entries\n"
        "Aggregate prefix\n")
 {
-  int idx_ipv6_prefixlen = 2;
-  return bgp_aggregate_unset (vty, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_UNICAST);
-}
-
-DEFUN (no_ipv6_aggregate_address_summary_only,
-       no_ipv6_aggregate_address_summary_only_cmd,
-       "no aggregate-address X:X::X:X/M summary-only",
-       NO_STR
-       "Configure BGP aggregate entries\n"
-       "Aggregate prefix\n"
-       "Filter more specific routes from updates\n")
-{
-  int idx_ipv6_prefixlen = 2;
-  return bgp_aggregate_unset (vty, argv[idx_ipv6_prefixlen]->arg, AFI_IP6, SAFI_UNICAST);
+  int idx = 0;
+  argv_find (argv, argc, "X:X::X:X/M", &idx);
+  char *prefix = argv[idx]->arg;
+  return bgp_aggregate_unset (vty, prefix, AFI_IP6, SAFI_UNICAST);
 }
 
 /* Redistribute route treatment. */
@@ -10665,12 +10556,6 @@ bgp_route_init (void)
 
   install_element (BGP_NODE, &aggregate_address_cmd);
   install_element (BGP_NODE, &aggregate_address_mask_cmd);
-  install_element (BGP_NODE, &aggregate_address_summary_only_cmd);
-  install_element (BGP_NODE, &aggregate_address_mask_summary_only_cmd);
-  install_element (BGP_NODE, &aggregate_address_as_set_cmd);
-  install_element (BGP_NODE, &aggregate_address_mask_as_set_cmd);
-  install_element (BGP_NODE, &aggregate_address_as_set_summary_cmd);
-  install_element (BGP_NODE, &aggregate_address_mask_as_set_summary_cmd);
   install_element (BGP_NODE, &no_aggregate_address_cmd);
   install_element (BGP_NODE, &no_aggregate_address_mask_cmd);
 
@@ -10689,12 +10574,6 @@ bgp_route_init (void)
   
   install_element (BGP_IPV4_NODE, &aggregate_address_cmd);
   install_element (BGP_IPV4_NODE, &aggregate_address_mask_cmd);
-  install_element (BGP_IPV4_NODE, &aggregate_address_summary_only_cmd);
-  install_element (BGP_IPV4_NODE, &aggregate_address_mask_summary_only_cmd);
-  install_element (BGP_IPV4_NODE, &aggregate_address_as_set_cmd);
-  install_element (BGP_IPV4_NODE, &aggregate_address_mask_as_set_cmd);
-  install_element (BGP_IPV4_NODE, &aggregate_address_as_set_summary_cmd);
-  install_element (BGP_IPV4_NODE, &aggregate_address_mask_as_set_summary_cmd);
   install_element (BGP_IPV4_NODE, &no_aggregate_address_cmd);
   install_element (BGP_IPV4_NODE, &no_aggregate_address_mask_cmd);
 
@@ -10712,12 +10591,6 @@ bgp_route_init (void)
   install_element (BGP_IPV4M_NODE, &no_bgp_network_mask_natural_cmd);
   install_element (BGP_IPV4M_NODE, &aggregate_address_cmd);
   install_element (BGP_IPV4M_NODE, &aggregate_address_mask_cmd);
-  install_element (BGP_IPV4M_NODE, &aggregate_address_summary_only_cmd);
-  install_element (BGP_IPV4M_NODE, &aggregate_address_mask_summary_only_cmd);
-  install_element (BGP_IPV4M_NODE, &aggregate_address_as_set_cmd);
-  install_element (BGP_IPV4M_NODE, &aggregate_address_mask_as_set_cmd);
-  install_element (BGP_IPV4M_NODE, &aggregate_address_as_set_summary_cmd);
-  install_element (BGP_IPV4M_NODE, &aggregate_address_mask_as_set_summary_cmd);
   install_element (BGP_IPV4M_NODE, &no_aggregate_address_cmd);
   install_element (BGP_IPV4M_NODE, &no_aggregate_address_mask_cmd);
 
@@ -10767,9 +10640,7 @@ bgp_route_init (void)
   install_element (BGP_IPV6_NODE, &no_ipv6_bgp_network_cmd);
 
   install_element (BGP_IPV6_NODE, &ipv6_aggregate_address_cmd);
-  install_element (BGP_IPV6_NODE, &ipv6_aggregate_address_summary_only_cmd);
   install_element (BGP_IPV6_NODE, &no_ipv6_aggregate_address_cmd);
-  install_element (BGP_IPV6_NODE, &no_ipv6_aggregate_address_summary_only_cmd);
 
   install_element (BGP_IPV6M_NODE, &ipv6_bgp_network_cmd);
   install_element (BGP_IPV6M_NODE, &no_ipv6_bgp_network_cmd);