]> git.puffer.fish Git - mirror/frr.git/commitdiff
ospfd/ospf_vty.c: use keyword cmd style
authorChristian Franke <chris@opensourcerouting.org>
Mon, 30 Sep 2013 12:27:52 +0000 (12:27 +0000)
committerDavid Lamparter <equinox@opensourcerouting.org>
Tue, 1 Apr 2014 18:21:42 +0000 (20:21 +0200)
Use the new keyword command style for:

  - default-information originate
  - distance ospf
  - redistribute

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
ospfd/ospf_vty.c
tests/testcommands.in
tests/testcommands.refout

index 5e5a0b0d58fbb45a9dca7c72fa7e06d55ca276b3..1489b20a4cfce0e9b71fe1eaa2cea3610a1dd1de 100644 (file)
@@ -5787,11 +5787,10 @@ ALIAS (no_ip_ospf_transmit_delay,
        "OSPF interface commands\n"
        "Link state transmit delay\n")
 
-\f
-DEFUN (ospf_redistribute_source_metric_type,
-       ospf_redistribute_source_metric_type_routemap_cmd,
-       "redistribute " QUAGGA_REDIST_STR_OSPFD 
-         " metric <0-16777214> metric-type (1|2) route-map WORD",
+DEFUN (ospf_redistribute_source,
+       ospf_redistribute_source_cmd,
+       "redistribute " QUAGGA_REDIST_STR_OSPFD
+         " {metric <0-16777214>|metric-type (1|2)|route-map WORD}",
        REDIST_STR
        QUAGGA_REDIST_HELP_STR_OSPFD
        "Metric for redistributed routes\n"
@@ -5807,84 +5806,25 @@ DEFUN (ospf_redistribute_source_metric_type,
   int type = -1;
   int metric = -1;
 
+  if (argc < 4)
+    return CMD_WARNING; /* should not happen */
+
   /* Get distribute source. */
   source = proto_redistnum(AFI_IP, argv[0]);
   if (source < 0 || source == ZEBRA_ROUTE_OSPF)
     return CMD_WARNING;
 
   /* Get metric value. */
-  if (argc >= 2)
+  if (argv[1] != NULL)
     if (!str2metric (argv[1], &metric))
       return CMD_WARNING;
 
   /* Get metric type. */
-  if (argc >= 3)
+  if (argv[2] != NULL)
     if (!str2metric_type (argv[2], &type))
       return CMD_WARNING;
 
-  if (argc == 4)
-    ospf_routemap_set (ospf, source, argv[3]);
-  else
-    ospf_routemap_unset (ospf, source);
-  
-  return ospf_redistribute_set (ospf, source, type, metric);
-}
-
-ALIAS (ospf_redistribute_source_metric_type,
-       ospf_redistribute_source_metric_type_cmd,
-       "redistribute " QUAGGA_REDIST_STR_OSPFD 
-       " metric <0-16777214> metric-type (1|2)",
-       REDIST_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD
-       "Metric for redistributed routes\n"
-       "OSPF default metric\n"
-       "OSPF exterior metric type for redistributed routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n")
-
-ALIAS (ospf_redistribute_source_metric_type,
-       ospf_redistribute_source_metric_cmd,
-       "redistribute " QUAGGA_REDIST_STR_OSPFD " metric <0-16777214>",
-       REDIST_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD
-       "Metric for redistributed routes\n"
-       "OSPF default metric\n")
-
-DEFUN (ospf_redistribute_source_type_metric,
-       ospf_redistribute_source_type_metric_routemap_cmd,
-       "redistribute " QUAGGA_REDIST_STR_OSPFD 
-         " metric-type (1|2) metric <0-16777214> route-map WORD",
-       REDIST_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD
-       "OSPF exterior metric type for redistributed routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n"
-       "Metric for redistributed routes\n"
-       "OSPF default metric\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-  int source;
-  int type = -1;
-  int metric = -1;
-
-  /* Get distribute source. */
-  source = proto_redistnum(AFI_IP, argv[0]);
-  if (source < 0 || source == ZEBRA_ROUTE_OSPF)
-    return CMD_WARNING;
-
-  /* Get metric value. */
-  if (argc >= 2)
-    if (!str2metric_type (argv[1], &type))
-      return CMD_WARNING;
-
-  /* Get metric type. */
-  if (argc >= 3)
-    if (!str2metric (argv[2], &metric))
-      return CMD_WARNING;
-
-  if (argc == 4)
+  if (argv[3] != NULL)
     ospf_routemap_set (ospf, source, argv[3]);
   else
     ospf_routemap_unset (ospf, source);
@@ -5892,124 +5832,6 @@ DEFUN (ospf_redistribute_source_type_metric,
   return ospf_redistribute_set (ospf, source, type, metric);
 }
 
-ALIAS (ospf_redistribute_source_type_metric,
-       ospf_redistribute_source_type_metric_cmd,
-       "redistribute " QUAGGA_REDIST_STR_OSPFD 
-         " metric-type (1|2) metric <0-16777214>",
-       REDIST_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD
-       "OSPF exterior metric type for redistributed routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n"
-       "Metric for redistributed routes\n"
-       "OSPF default metric\n")
-
-ALIAS (ospf_redistribute_source_type_metric,
-       ospf_redistribute_source_type_cmd,
-       "redistribute " QUAGGA_REDIST_STR_OSPFD " metric-type (1|2)",
-       REDIST_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD
-       "OSPF exterior metric type for redistributed routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n")
-
-ALIAS (ospf_redistribute_source_type_metric,
-       ospf_redistribute_source_cmd,
-       "redistribute " QUAGGA_REDIST_STR_OSPFD,
-       REDIST_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD)
-
-DEFUN (ospf_redistribute_source_metric_routemap,
-       ospf_redistribute_source_metric_routemap_cmd,
-       "redistribute " QUAGGA_REDIST_STR_OSPFD 
-         " metric <0-16777214> route-map WORD",
-       REDIST_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD
-       "Metric for redistributed routes\n"
-       "OSPF default metric\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-  int source;
-  int metric = -1;
-
-  /* Get distribute source. */
-  source = proto_redistnum(AFI_IP, argv[0]);
-  if (source < 0 || source == ZEBRA_ROUTE_OSPF)
-    return CMD_WARNING;
-
-  /* Get metric value. */
-  if (argc >= 2)
-    if (!str2metric (argv[1], &metric))
-      return CMD_WARNING;
-
-  if (argc == 3)
-    ospf_routemap_set (ospf, source, argv[2]);
-  else
-    ospf_routemap_unset (ospf, source);
-  
-  return ospf_redistribute_set (ospf, source, -1, metric);
-}
-
-DEFUN (ospf_redistribute_source_type_routemap,
-       ospf_redistribute_source_type_routemap_cmd,
-       "redistribute " QUAGGA_REDIST_STR_OSPFD 
-         " metric-type (1|2) route-map WORD",
-       REDIST_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD
-       "OSPF exterior metric type for redistributed routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-  int source;
-  int type = -1;
-
-  /* Get distribute source. */
-  source = proto_redistnum(AFI_IP, argv[0]);
-  if (source < 0 || source == ZEBRA_ROUTE_OSPF)
-    return CMD_WARNING;
-
-  /* Get metric value. */
-  if (argc >= 2)
-    if (!str2metric_type (argv[1], &type))
-      return CMD_WARNING;
-
-  if (argc == 3)
-    ospf_routemap_set (ospf, source, argv[2]);
-  else
-    ospf_routemap_unset (ospf, source);
-
-  return ospf_redistribute_set (ospf, source, type, -1);
-}
-
-DEFUN (ospf_redistribute_source_routemap,
-       ospf_redistribute_source_routemap_cmd,
-       "redistribute " QUAGGA_REDIST_STR_OSPFD " route-map WORD",
-       REDIST_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-  int source;
-
-  /* Get distribute source. */
-  source = proto_redistnum(AFI_IP, argv[0]);
-  if (source < 0 || source == ZEBRA_ROUTE_OSPF)
-    return CMD_WARNING;
-
-  if (argc == 2)
-    ospf_routemap_set (ospf, source, argv[1]);
-  else
-    ospf_routemap_unset (ospf, source);
-
-  return ospf_redistribute_set (ospf, source, -1, -1);
-}
-
 DEFUN (no_ospf_redistribute_source,
        no_ospf_redistribute_source_cmd,
        "no redistribute " QUAGGA_REDIST_STR_OSPFD,
@@ -6032,432 +5854,85 @@ DEFUN (ospf_distribute_list_out,
        ospf_distribute_list_out_cmd,
        "distribute-list WORD out " QUAGGA_REDIST_STR_OSPFD,
        "Filter networks in routing updates\n"
-       "Access-list name\n"
-       OUT_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD)
-{
-  struct ospf *ospf = vty->index;
-  int source;
-
-  /* Get distribute source. */
-  source = proto_redistnum(AFI_IP, argv[1]);
-  if (source < 0 || source == ZEBRA_ROUTE_OSPF)
-    return CMD_WARNING;
-
-  return ospf_distribute_list_out_set (ospf, source, argv[0]);
-}
-
-DEFUN (no_ospf_distribute_list_out,
-       no_ospf_distribute_list_out_cmd,
-       "no distribute-list WORD out " QUAGGA_REDIST_STR_OSPFD,
-       NO_STR
-       "Filter networks in routing updates\n"
-       "Access-list name\n"
-       OUT_STR
-       QUAGGA_REDIST_HELP_STR_OSPFD)
-{
-  struct ospf *ospf = vty->index;
-  int source;
-
-  source = proto_redistnum(AFI_IP, argv[1]);
-  if (source < 0 || source == ZEBRA_ROUTE_OSPF)
-    return CMD_WARNING;
-
-  return ospf_distribute_list_out_unset (ospf, source, argv[0]);
-}
-
-/* Default information originate. */
-DEFUN (ospf_default_information_originate_metric_type_routemap,
-       ospf_default_information_originate_metric_type_routemap_cmd,
-       "default-information originate metric <0-16777214> metric-type (1|2) route-map WORD",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "OSPF default metric\n"
-       "OSPF metric\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-  int type = -1;
-  int metric = -1;
-
-  /* Get metric value. */
-  if (argc >= 1)
-    if (!str2metric (argv[0], &metric))
-      return CMD_WARNING;
-
-  /* Get metric type. */
-  if (argc >= 2)
-    if (!str2metric_type (argv[1], &type))
-      return CMD_WARNING;
-
-  if (argc == 3)
-    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[2]);
-  else
-    ospf_routemap_unset (ospf, DEFAULT_ROUTE);
-
-  return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ZEBRA,
-                                       type, metric);
-}
-
-ALIAS (ospf_default_information_originate_metric_type_routemap,
-       ospf_default_information_originate_metric_type_cmd,
-       "default-information originate metric <0-16777214> metric-type (1|2)",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "OSPF default metric\n"
-       "OSPF metric\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n")
-
-ALIAS (ospf_default_information_originate_metric_type_routemap,
-       ospf_default_information_originate_metric_cmd,
-       "default-information originate metric <0-16777214>",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "OSPF default metric\n"
-       "OSPF metric\n")
-
-ALIAS (ospf_default_information_originate_metric_type_routemap,
-       ospf_default_information_originate_cmd,
-       "default-information originate",
-       "Control distribution of default information\n"
-       "Distribute a default route\n")
-
-/* Default information originate. */
-DEFUN (ospf_default_information_originate_metric_routemap,
-       ospf_default_information_originate_metric_routemap_cmd,
-       "default-information originate metric <0-16777214> route-map WORD",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "OSPF default metric\n"
-       "OSPF metric\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-  int metric = -1;
-
-  /* Get metric value. */
-  if (argc >= 1)
-    if (!str2metric (argv[0], &metric))
-      return CMD_WARNING;
-
-  if (argc == 2)
-    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[1]);
-  else
-    ospf_routemap_unset (ospf, DEFAULT_ROUTE);
-
-  return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ZEBRA,
-                                       -1, metric);
-}
-
-/* Default information originate. */
-DEFUN (ospf_default_information_originate_routemap,
-       ospf_default_information_originate_routemap_cmd,
-       "default-information originate route-map WORD",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-
-  if (argc == 1)
-    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[0]);
-  else
-    ospf_routemap_unset (ospf, DEFAULT_ROUTE);
-
-  return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ZEBRA, -1, -1);
-}
-
-DEFUN (ospf_default_information_originate_type_metric_routemap,
-       ospf_default_information_originate_type_metric_routemap_cmd,
-       "default-information originate metric-type (1|2) metric <0-16777214> route-map WORD",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n"
-       "OSPF default metric\n"
-       "OSPF metric\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-  int type = -1;
-  int metric = -1;
-
-  /* Get metric type. */
-  if (argc >= 1)
-    if (!str2metric_type (argv[0], &type))
-      return CMD_WARNING;
-
-  /* Get metric value. */
-  if (argc >= 2)
-    if (!str2metric (argv[1], &metric))
-      return CMD_WARNING;
-
-  if (argc == 3)
-    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[2]);
-  else
-    ospf_routemap_unset (ospf, DEFAULT_ROUTE);
-
-  return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ZEBRA,
-                                       type, metric);
-}
-
-ALIAS (ospf_default_information_originate_type_metric_routemap,
-       ospf_default_information_originate_type_metric_cmd,
-       "default-information originate metric-type (1|2) metric <0-16777214>",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n"
-       "OSPF default metric\n"
-       "OSPF metric\n")
-
-ALIAS (ospf_default_information_originate_type_metric_routemap,
-       ospf_default_information_originate_type_cmd,
-       "default-information originate metric-type (1|2)",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n")
-
-DEFUN (ospf_default_information_originate_type_routemap,
-       ospf_default_information_originate_type_routemap_cmd,
-       "default-information originate metric-type (1|2) route-map WORD",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-  int type = -1;
-
-  /* Get metric type. */
-  if (argc >= 1)
-    if (!str2metric_type (argv[0], &type))
-      return CMD_WARNING;
-
-  if (argc == 2)
-    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[1]);
-  else
-    ospf_routemap_unset (ospf, DEFAULT_ROUTE);
-
-  return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ZEBRA,
-                                       type, -1);
-}
-
-DEFUN (ospf_default_information_originate_always_metric_type_routemap,
-       ospf_default_information_originate_always_metric_type_routemap_cmd,
-       "default-information originate always metric <0-16777214> metric-type (1|2) route-map WORD",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "Always advertise default route\n"
-       "OSPF default metric\n"
-       "OSPF metric\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-  int type = -1;
-  int metric = -1;
-
-  /* Get metric value. */
-  if (argc >= 1)
-    if (!str2metric (argv[0], &metric))
-      return CMD_WARNING;
-
-  /* Get metric type. */
-  if (argc >= 2)
-    if (!str2metric_type (argv[1], &type))
-      return CMD_WARNING;
-
-  if (argc == 3)
-    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[2]);
-  else
-    ospf_routemap_unset (ospf, DEFAULT_ROUTE);
-
-  return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ALWAYS,
-                                       type, metric);
-}
-
-ALIAS (ospf_default_information_originate_always_metric_type_routemap,
-       ospf_default_information_originate_always_metric_type_cmd,
-       "default-information originate always metric <0-16777214> metric-type (1|2)",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "Always advertise default route\n"
-       "OSPF default metric\n"
-       "OSPF metric\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n")
-
-ALIAS (ospf_default_information_originate_always_metric_type_routemap,
-       ospf_default_information_originate_always_metric_cmd,
-       "default-information originate always metric <0-16777214>",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "Always advertise default route\n"
-       "OSPF default metric\n"
-       "OSPF metric\n"
-       "OSPF metric type for default routes\n")
-
-ALIAS (ospf_default_information_originate_always_metric_type_routemap,
-       ospf_default_information_originate_always_cmd,
-       "default-information originate always",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "Always advertise default route\n")
-
-DEFUN (ospf_default_information_originate_always_metric_routemap,
-       ospf_default_information_originate_always_metric_routemap_cmd,
-       "default-information originate always metric <0-16777214> route-map WORD",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "Always advertise default route\n"
-       "OSPF default metric\n"
-       "OSPF metric\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
+       "Access-list name\n"
+       OUT_STR
+       QUAGGA_REDIST_HELP_STR_OSPFD)
 {
   struct ospf *ospf = vty->index;
-  int metric = -1;
-
-  /* Get metric value. */
-  if (argc >= 1)
-    if (!str2metric (argv[0], &metric))
-      return CMD_WARNING;
+  int source;
 
-  if (argc == 2)
-    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[1]);
-  else
-    ospf_routemap_unset (ospf, DEFAULT_ROUTE);
+  /* Get distribute source. */
+  source = proto_redistnum(AFI_IP, argv[1]);
+  if (source < 0 || source == ZEBRA_ROUTE_OSPF)
+    return CMD_WARNING;
 
-  return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ALWAYS,
-                                       -1, metric);
+  return ospf_distribute_list_out_set (ospf, source, argv[0]);
 }
 
-DEFUN (ospf_default_information_originate_always_routemap,
-       ospf_default_information_originate_always_routemap_cmd,
-       "default-information originate always route-map WORD",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "Always advertise default route\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
+DEFUN (no_ospf_distribute_list_out,
+       no_ospf_distribute_list_out_cmd,
+       "no distribute-list WORD out " QUAGGA_REDIST_STR_OSPFD,
+       NO_STR
+       "Filter networks in routing updates\n"
+       "Access-list name\n"
+       OUT_STR
+       QUAGGA_REDIST_HELP_STR_OSPFD)
 {
   struct ospf *ospf = vty->index;
+  int source;
 
-  if (argc == 1)
-    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[0]);
-  else
-    ospf_routemap_unset (ospf, DEFAULT_ROUTE);
+  source = proto_redistnum(AFI_IP, argv[1]);
+  if (source < 0 || source == ZEBRA_ROUTE_OSPF)
+    return CMD_WARNING;
 
-  return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ALWAYS, -1, -1);
+  return ospf_distribute_list_out_unset (ospf, source, argv[0]);
 }
 
-DEFUN (ospf_default_information_originate_always_type_metric_routemap,
-       ospf_default_information_originate_always_type_metric_routemap_cmd,
-       "default-information originate always metric-type (1|2) metric <0-16777214> route-map WORD",
+/* Default information originate. */
+DEFUN (ospf_default_information_originate,
+       ospf_default_information_originate_cmd,
+       "default-information originate "
+         "{always|metric <0-16777214>|metric-type (1|2)|route-map WORD}",
        "Control distribution of default information\n"
        "Distribute a default route\n"
        "Always advertise default route\n"
+       "OSPF default metric\n"
+       "OSPF metric\n"
        "OSPF metric type for default routes\n"
        "Set OSPF External Type 1 metrics\n"
        "Set OSPF External Type 2 metrics\n"
-       "OSPF default metric\n"
-       "OSPF metric\n"
        "Route map reference\n"
        "Pointer to route-map entries\n")
 {
   struct ospf *ospf = vty->index;
+  int default_originate = DEFAULT_ORIGINATE_ZEBRA;
   int type = -1;
   int metric = -1;
 
-  /* Get metric type. */
-  if (argc >= 1)
-    if (!str2metric_type (argv[0], &type))
-      return CMD_WARNING;
+  if (argc < 4)
+    return CMD_WARNING; /* this should not happen */
+
+  /* Check whether "always" was specified */
+  if (argv[0] != NULL)
+    default_originate = DEFAULT_ORIGINATE_ALWAYS;
 
   /* Get metric value. */
-  if (argc >= 2)
+  if (argv[1] != NULL)
     if (!str2metric (argv[1], &metric))
       return CMD_WARNING;
 
-  if (argc == 3)
-    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[2]);
-  else
-    ospf_routemap_unset (ospf, DEFAULT_ROUTE);
-
-  return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ALWAYS,
-                                       type, metric);
-}
-
-ALIAS (ospf_default_information_originate_always_type_metric_routemap,
-       ospf_default_information_originate_always_type_metric_cmd,
-       "default-information originate always metric-type (1|2) metric <0-16777214>",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "Always advertise default route\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n"
-       "OSPF default metric\n"
-       "OSPF metric\n")
-
-ALIAS (ospf_default_information_originate_always_type_metric_routemap,
-       ospf_default_information_originate_always_type_cmd,
-       "default-information originate always metric-type (1|2)",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "Always advertise default route\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n")
-
-DEFUN (ospf_default_information_originate_always_type_routemap,
-       ospf_default_information_originate_always_type_routemap_cmd,
-       "default-information originate always metric-type (1|2) route-map WORD",
-       "Control distribution of default information\n"
-       "Distribute a default route\n"
-       "Always advertise default route\n"
-       "OSPF metric type for default routes\n"
-       "Set OSPF External Type 1 metrics\n"
-       "Set OSPF External Type 2 metrics\n"
-       "Route map reference\n"
-       "Pointer to route-map entries\n")
-{
-  struct ospf *ospf = vty->index;
-  int type = -1;
-
   /* Get metric type. */
-  if (argc >= 1)
-    if (!str2metric_type (argv[0], &type))
+  if (argv[2] != NULL)
+    if (!str2metric_type (argv[2], &type))
       return CMD_WARNING;
 
-  if (argc == 2)
-    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[1]);
+  if (argv[3] != NULL)
+    ospf_routemap_set (ospf, DEFAULT_ROUTE, argv[3]);
   else
     ospf_routemap_unset (ospf, DEFAULT_ROUTE);
 
-  return ospf_redistribute_default_set (ospf, DEFAULT_ORIGINATE_ALWAYS,
-                                       type, -1);
+  return ospf_redistribute_default_set (ospf, default_originate,
+                                       type, metric);
 }
 
 DEFUN (no_ospf_default_information_originate,
@@ -6552,296 +6027,73 @@ DEFUN (no_ospf_distance,
 
 DEFUN (no_ospf_distance_ospf,
        no_ospf_distance_ospf_cmd,
-       "no distance ospf",
+       "no distance ospf {intra-area|inter-area|external}",
        NO_STR
        "Define an administrative distance\n"
        "OSPF Administrative distance\n"
-       "OSPF Distance\n")
-{
-  struct ospf *ospf = vty->index;
-
-  ospf->distance_intra = 0;
-  ospf->distance_inter = 0;
-  ospf->distance_external = 0;
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_intra,
-       ospf_distance_ospf_intra_cmd,
-       "distance ospf intra-area <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "Intra-area routes\n"
-       "Distance for intra-area routes\n")
-{
-  struct ospf *ospf = vty->index;
-
-  ospf->distance_intra = atoi (argv[0]);
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_intra_inter,
-       ospf_distance_ospf_intra_inter_cmd,
-       "distance ospf intra-area <1-255> inter-area <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "Intra-area routes\n"
-       "Distance for intra-area routes\n"
-       "Inter-area routes\n"
-       "Distance for inter-area routes\n")
-{
-  struct ospf *ospf = vty->index;
-
-  ospf->distance_intra = atoi (argv[0]);
-  ospf->distance_inter = atoi (argv[1]);
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_intra_external,
-       ospf_distance_ospf_intra_external_cmd,
-       "distance ospf intra-area <1-255> external <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "Intra-area routes\n"
-       "Distance for intra-area routes\n"
-       "External routes\n"
-       "Distance for external routes\n")
-{
-  struct ospf *ospf = vty->index;
-
-  ospf->distance_intra = atoi (argv[0]);
-  ospf->distance_external = atoi (argv[1]);
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_intra_inter_external,
-       ospf_distance_ospf_intra_inter_external_cmd,
-       "distance ospf intra-area <1-255> inter-area <1-255> external <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "Intra-area routes\n"
-       "Distance for intra-area routes\n"
-       "Inter-area routes\n"
-       "Distance for inter-area routes\n"
-       "External routes\n"
-       "Distance for external routes\n")
-{
-  struct ospf *ospf = vty->index;
-
-  ospf->distance_intra = atoi (argv[0]);
-  ospf->distance_inter = atoi (argv[1]);
-  ospf->distance_external = atoi (argv[2]);
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_intra_external_inter,
-       ospf_distance_ospf_intra_external_inter_cmd,
-       "distance ospf intra-area <1-255> external <1-255> inter-area <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
+       "OSPF Distance\n"
        "Intra-area routes\n"
-       "Distance for intra-area routes\n"
-       "External routes\n"
-       "Distance for external routes\n"
-       "Inter-area routes\n"
-       "Distance for inter-area routes\n")
-{
-  struct ospf *ospf = vty->index;
-
-  ospf->distance_intra = atoi (argv[0]);
-  ospf->distance_external = atoi (argv[1]);
-  ospf->distance_inter = atoi (argv[2]);
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_inter,
-       ospf_distance_ospf_inter_cmd,
-       "distance ospf inter-area <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
        "Inter-area routes\n"
-       "Distance for inter-area routes\n")
+       "External routes\n")
 {
   struct ospf *ospf = vty->index;
 
-  ospf->distance_inter = atoi (argv[0]);
-
-  return CMD_SUCCESS;
-}
+  if (argc < 3)
+    return CMD_WARNING;
 
-DEFUN (ospf_distance_ospf_inter_intra,
-       ospf_distance_ospf_inter_intra_cmd,
-       "distance ospf inter-area <1-255> intra-area <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "Inter-area routes\n"
-       "Distance for inter-area routes\n"
-       "Intra-area routes\n"
-       "Distance for intra-area routes\n")
-{
-  struct ospf *ospf = vty->index;
+  if (argv[0] != NULL)
+    ospf->distance_intra = 0;
 
-  ospf->distance_inter = atoi (argv[0]);
-  ospf->distance_intra = atoi (argv[1]);
+  if (argv[1] != NULL)
+    ospf->distance_inter = 0;
 
-  return CMD_SUCCESS;
-}
+  if (argv[2] != NULL)
+    ospf->distance_external = 0;
 
-DEFUN (ospf_distance_ospf_inter_external,
-       ospf_distance_ospf_inter_external_cmd,
-       "distance ospf inter-area <1-255> external <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "Inter-area routes\n"
-       "Distance for inter-area routes\n"
-       "External routes\n"
-       "Distance for external routes\n")
-{
-  struct ospf *ospf = vty->index;
+  if (argv[0] || argv[1] || argv[2])
+    return CMD_SUCCESS;
 
-  ospf->distance_inter = atoi (argv[0]);
-  ospf->distance_external = atoi (argv[1]);
+  /* If no arguments are given, clear all distance information */
+  ospf->distance_intra = 0;
+  ospf->distance_inter = 0;
+  ospf->distance_external = 0;
 
   return CMD_SUCCESS;
 }
 
-DEFUN (ospf_distance_ospf_inter_intra_external,
-       ospf_distance_ospf_inter_intra_external_cmd,
-       "distance ospf inter-area <1-255> intra-area <1-255> external <1-255>",
+DEFUN (ospf_distance_ospf,
+       ospf_distance_ospf_cmd,
+       "distance ospf "
+         "{intra-area <1-255>|inter-area <1-255>|external <1-255>}",
        "Define an administrative distance\n"
        "OSPF Administrative distance\n"
-       "Inter-area routes\n"
-       "Distance for inter-area routes\n"
        "Intra-area routes\n"
        "Distance for intra-area routes\n"
-       "External routes\n"
-       "Distance for external routes\n")
-{
-  struct ospf *ospf = vty->index;
-
-  ospf->distance_inter = atoi (argv[0]);
-  ospf->distance_intra = atoi (argv[1]);
-  ospf->distance_external = atoi (argv[2]);
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_inter_external_intra,
-       ospf_distance_ospf_inter_external_intra_cmd,
-       "distance ospf inter-area <1-255> external <1-255> intra-area <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
        "Inter-area routes\n"
        "Distance for inter-area routes\n"
        "External routes\n"
-       "Distance for external routes\n"
-       "Intra-area routes\n"
-       "Distance for intra-area routes\n")
-{
-  struct ospf *ospf = vty->index;
-
-  ospf->distance_inter = atoi (argv[0]);
-  ospf->distance_external = atoi (argv[1]);
-  ospf->distance_intra = atoi (argv[2]);
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_external,
-       ospf_distance_ospf_external_cmd,
-       "distance ospf external <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "External routes\n"
        "Distance for external routes\n")
 {
   struct ospf *ospf = vty->index;
 
-  ospf->distance_external = atoi (argv[0]);
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_external_intra,
-       ospf_distance_ospf_external_intra_cmd,
-       "distance ospf external <1-255> intra-area <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "External routes\n"
-       "Distance for external routes\n"
-       "Intra-area routes\n"
-       "Distance for intra-area routes\n")
-{
-  struct ospf *ospf = vty->index;
-
-  ospf->distance_external = atoi (argv[0]);
-  ospf->distance_intra = atoi (argv[1]);
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_external_inter,
-       ospf_distance_ospf_external_inter_cmd,
-       "distance ospf external <1-255> inter-area <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "External routes\n"
-       "Distance for external routes\n"
-       "Inter-area routes\n"
-       "Distance for inter-area routes\n")
-{
-  struct ospf *ospf = vty->index;
-
-  ospf->distance_external = atoi (argv[0]);
-  ospf->distance_inter = atoi (argv[1]);
-
-  return CMD_SUCCESS;
-}
-
-DEFUN (ospf_distance_ospf_external_intra_inter,
-       ospf_distance_ospf_external_intra_inter_cmd,
-       "distance ospf external <1-255> intra-area <1-255> inter-area <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "External routes\n"
-       "Distance for external routes\n"
-       "Intra-area routes\n"
-       "Distance for intra-area routes\n"
-       "Inter-area routes\n"
-       "Distance for inter-area routes\n")
-{
-  struct ospf *ospf = vty->index;
+  if (argc < 3) /* should not happen */
+    return CMD_WARNING;
 
-  ospf->distance_external = atoi (argv[0]);
-  ospf->distance_intra = atoi (argv[1]);
-  ospf->distance_inter = atoi (argv[2]);
+  if (!argv[0] && !argv[1] && !argv[2])
+    {
+      vty_out(vty, "%% Command incomplete. (Arguments required)%s",
+              VTY_NEWLINE);
+      return CMD_WARNING;
+    }
 
-  return CMD_SUCCESS;
-}
+  if (argv[0] != NULL)
+    ospf->distance_intra = atoi(argv[0]);
 
-DEFUN (ospf_distance_ospf_external_inter_intra,
-       ospf_distance_ospf_external_inter_intra_cmd,
-       "distance ospf external <1-255> inter-area <1-255> intra-area <1-255>",
-       "Define an administrative distance\n"
-       "OSPF Administrative distance\n"
-       "External routes\n"
-       "Distance for external routes\n"
-       "Inter-area routes\n"
-       "Distance for inter-area routes\n"
-       "Intra-area routes\n"
-       "Distance for intra-area routes\n")
-{
-  struct ospf *ospf = vty->index;
+  if (argv[1] != NULL)
+    ospf->distance_inter = atoi(argv[1]);
 
-  ospf->distance_external = atoi (argv[0]);
-  ospf->distance_inter = atoi (argv[1]);
-  ospf->distance_intra = atoi (argv[2]);
+  if (argv[2] != NULL)
+    ospf->distance_external = atoi(argv[2]);
 
   return CMD_SUCCESS;
 }
@@ -8268,63 +7520,13 @@ ospf_vty_if_init (void)
 static void
 ospf_vty_zebra_init (void)
 {
-  install_element (OSPF_NODE, &ospf_redistribute_source_type_metric_cmd);
-  install_element (OSPF_NODE, &ospf_redistribute_source_metric_type_cmd);
-  install_element (OSPF_NODE, &ospf_redistribute_source_type_cmd);
-  install_element (OSPF_NODE, &ospf_redistribute_source_metric_cmd);
   install_element (OSPF_NODE, &ospf_redistribute_source_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_redistribute_source_metric_type_routemap_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_redistribute_source_type_metric_routemap_cmd);
-  install_element (OSPF_NODE, &ospf_redistribute_source_metric_routemap_cmd);
-  install_element (OSPF_NODE, &ospf_redistribute_source_type_routemap_cmd);
-  install_element (OSPF_NODE, &ospf_redistribute_source_routemap_cmd);
-  
   install_element (OSPF_NODE, &no_ospf_redistribute_source_cmd);
 
   install_element (OSPF_NODE, &ospf_distribute_list_out_cmd);
   install_element (OSPF_NODE, &no_ospf_distribute_list_out_cmd);
 
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_metric_type_cmd);
-  install_element (OSPF_NODE, &ospf_default_information_originate_metric_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_type_metric_cmd);
-  install_element (OSPF_NODE, &ospf_default_information_originate_type_cmd);
   install_element (OSPF_NODE, &ospf_default_information_originate_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_always_metric_type_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_always_metric_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_always_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_always_type_metric_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_always_type_cmd);
-
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_metric_type_routemap_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_metric_routemap_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_routemap_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_type_metric_routemap_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_type_routemap_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_always_metric_type_routemap_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_always_metric_routemap_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_always_routemap_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_always_type_metric_routemap_cmd);
-  install_element (OSPF_NODE,
-                  &ospf_default_information_originate_always_type_routemap_cmd);
-
   install_element (OSPF_NODE, &no_ospf_default_information_originate_cmd);
 
   install_element (OSPF_NODE, &ospf_default_metric_cmd);
@@ -8334,21 +7536,7 @@ ospf_vty_zebra_init (void)
   install_element (OSPF_NODE, &ospf_distance_cmd);
   install_element (OSPF_NODE, &no_ospf_distance_cmd);
   install_element (OSPF_NODE, &no_ospf_distance_ospf_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_intra_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_intra_inter_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_intra_external_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_intra_inter_external_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_intra_external_inter_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_inter_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_inter_intra_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_inter_external_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_inter_intra_external_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_inter_external_intra_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_external_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_external_intra_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_external_inter_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_external_intra_inter_cmd);
-  install_element (OSPF_NODE, &ospf_distance_ospf_external_inter_intra_cmd);
+  install_element (OSPF_NODE, &ospf_distance_ospf_cmd);
 #if 0
   install_element (OSPF_NODE, &ospf_distance_source_cmd);
   install_element (OSPF_NODE, &no_ospf_distance_source_cmd);
index 70c57052fb40e2475995286e6ed6fa9b31cabc21..7fe62799f10976da91dc833cdbb1c79cc00d86d0 100644 (file)
@@ -199,3 +199,18 @@ sow ip bgp ipv4 mulicast community no-export no-adertise no-export no-advertise
 sow ipv6 ospf6 databIase as-external adv-router 1.2.3.4
 Whow bgp view VARIAeBLE ipv4 unicast community local-AS no-advrtise no-advertise local-AS
 Wneighbor 1.2.3.4 dot-capabiliy-negotiate
+#
+#
+# Some teststrings explicitly used for keyword commands
+#
+#
+redistribute bgp
+redistribute bgp m 10
+redistribute bgp metric 10 metric-type 1
+redistribute bgp metric 10 metric 10
+redistribute bgp route-map RMAP_REDIST_BGP
+default-information originate metric-type 1 metric 10
+default-information originate always metric-type 1 metric 10
+default-information originate route-map RMAP_DEFAULT
+default-information originate route-map RMAP_DEFAULT metric 10
+default-information originate always metric-type 2 metric 23
index 1422aefcccf28503898eaed6dd9622fab0db83bc..11483b84b6f02f2c75bc758fd6de87e7386059b5 100644 (file)
@@ -299,6 +299,18 @@ complete 'no neighbor VARIABLE maximum-prefix'@22: rv==7
   'maximum-prefix'
 describe 'no neighbor VARIABLE maximum-prefix'@22: rv==0
   'maximum-prefix' 'Maximum number of prefix accept from this peer'
+execute relaxed 'redistribute isis route-map VARIABLE metric 0 metric-type 2'@23: rv==0, 'redistribute (kernel|connected|static|rip|isis|bgp|babel) {metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'isis', '0', '2', 'VARIABLE'
+execute strict 'redistribute isis route-map VARIABLE metric 0 metric-type 2'@23: rv==0, 'redistribute (kernel|connected|static|rip|isis|bgp|babel) {metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'isis', '0', '2', 'VARIABLE'
+complete 'redistribute isis route-map VARIABLE metric 0 metric-type 2'@23: rv==7
+  '2'
+describe 'redistribute isis route-map VARIABLE metric 0 metric-type 2'@23: rv==0
+  '2' 'Set OSPF External Type 2 metrics'
+execute relaxed 'redistribute rip metric 0 route-map VARIABLE metric-type 1'@23: rv==0, 'redistribute (kernel|connected|static|rip|isis|bgp|babel) {metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'rip', '0', '1', 'VARIABLE'
+execute strict 'redistribute rip metric 0 route-map VARIABLE metric-type 1'@23: rv==0, 'redistribute (kernel|connected|static|rip|isis|bgp|babel) {metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'rip', '0', '1', 'VARIABLE'
+complete 'redistribute rip metric 0 route-map VARIABLE metric-type 1'@23: rv==7
+  '1'
+describe 'redistribute rip metric 0 route-map VARIABLE metric-type 1'@23: rv==0
+  '1' 'Set OSPF External Type 1 metrics'
 execute relaxed 'show bgp community VARIABLE local-AS no-export VARIABLE exact-match'@1: rv==0, 'show bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match': 'VARIABLE', 'local-AS', 'no-export', 'VARIABLE'
 execute strict 'show bgp community VARIABLE local-AS no-export VARIABLE exact-match'@1: rv==0, 'show bgp community (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) (AA:NN|local-AS|no-advertise|no-export) exact-match': 'VARIABLE', 'local-AS', 'no-export', 'VARIABLE'
 complete 'show bgp community VARIABLE local-AS no-export VARIABLE exact-match'@1: rv==7
@@ -898,3 +910,98 @@ execute strict 'show ipv6 bgp community wARIBLE VARIABLE 8ARIABLE'@4: rv==0, 'sh
 complete 'show ipv6 bgp community wARIBLE VARIABLE 8ARIABLE'@4: rv==2
 describe 'show ipv6 bgp community wARIBLE VARIABLE 8ARIABLE'@4: rv==0
   'AA:NN' 'community number'
+execute relaxed 'redistribute bgp'@14: rv==0, 'redistribute (kernel|connected|static|ospf|isis|bgp|babel)': 'bgp'
+execute strict 'redistribute bgp'@14: rv==0, 'redistribute (kernel|connected|static|ospf|isis|bgp|babel)': 'bgp'
+complete 'redistribute bgp'@14: rv==7
+  'bgp'
+describe 'redistribute bgp'@14: rv==0
+  'bgp' 'Border Gateway Protocol (BGP)'
+execute relaxed 'redistribute bgp'@15: rv==0, 'redistribute (kernel|connected|static|ospf6|isis|bgp|babel)': 'bgp'
+execute strict 'redistribute bgp'@15: rv==0, 'redistribute (kernel|connected|static|ospf6|isis|bgp|babel)': 'bgp'
+complete 'redistribute bgp'@15: rv==7
+  'bgp'
+describe 'redistribute bgp'@15: rv==0
+  'bgp' 'Border Gateway Protocol (BGP)'
+execute relaxed 'redistribute bgp'@16: rv==0, 'redistribute (kernel|connected|static|rip|ripng|ospf|ospf6|isis|bgp)': 'bgp'
+execute strict 'redistribute bgp'@16: rv==0, 'redistribute (kernel|connected|static|rip|ripng|ospf|ospf6|isis|bgp)': 'bgp'
+complete 'redistribute bgp'@16: rv==7
+  'bgp'
+describe 'redistribute bgp'@16: rv==0
+  'bgp' 'Border Gateway Protocol (BGP)'
+execute relaxed 'redistribute bgp'@23: rv==0, 'redistribute (kernel|connected|static|rip|isis|bgp|babel) {metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'bgp', '(null)', '(null)', '(null)'
+execute strict 'redistribute bgp'@23: rv==0, 'redistribute (kernel|connected|static|rip|isis|bgp|babel) {metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'bgp', '(null)', '(null)', '(null)'
+complete 'redistribute bgp'@23: rv==7
+  'bgp'
+describe 'redistribute bgp'@23: rv==0
+  'bgp' 'Border Gateway Protocol (BGP)'
+execute relaxed 'redistribute bgp'@24: rv==0, 'redistribute (kernel|connected|static|ripng|isis|bgp|babel)': 'bgp'
+execute strict 'redistribute bgp'@24: rv==0, 'redistribute (kernel|connected|static|ripng|isis|bgp|babel)': 'bgp'
+complete 'redistribute bgp'@24: rv==7
+  'bgp'
+describe 'redistribute bgp'@24: rv==0
+  'bgp' 'Border Gateway Protocol (BGP)'
+execute relaxed 'redistribute bgp m 10'@14: rv==0, 'redistribute (kernel|connected|static|ospf|isis|bgp|babel) metric <0-16>': 'bgp', '10'
+execute strict 'redistribute bgp m 10'@14: rv==2
+complete 'redistribute bgp m 10'@14: rv==2
+describe 'redistribute bgp m 10'@14: rv==0
+  '<0-16>' 'Metric value'
+execute relaxed 'redistribute bgp m 10'@15: rv==0, 'redistribute (kernel|connected|static|ospf6|isis|bgp|babel) metric <0-16>': 'bgp', '10'
+execute strict 'redistribute bgp m 10'@15: rv==2
+complete 'redistribute bgp m 10'@15: rv==2
+describe 'redistribute bgp m 10'@15: rv==0
+  '<0-16>' 'Metric value'
+execute relaxed 'redistribute bgp m 10'@23: rv==3
+execute strict 'redistribute bgp m 10'@23: rv==2
+complete 'redistribute bgp m 10'@23: rv==3
+describe 'redistribute bgp m 10'@23: rv==3
+execute relaxed 'redistribute bgp metric 10 metric-type 1'@23: rv==0, 'redistribute (kernel|connected|static|rip|isis|bgp|babel) {metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'bgp', '10', '1', '(null)'
+execute strict 'redistribute bgp metric 10 metric-type 1'@23: rv==0, 'redistribute (kernel|connected|static|rip|isis|bgp|babel) {metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'bgp', '10', '1', '(null)'
+complete 'redistribute bgp metric 10 metric-type 1'@23: rv==7
+  '1'
+describe 'redistribute bgp metric 10 metric-type 1'@23: rv==0
+  '1' 'Set OSPF External Type 1 metrics'
+execute relaxed 'redistribute bgp route-map RMAP_REDIST_BGP'@14: rv==0, 'redistribute (kernel|connected|static|ospf|isis|bgp|babel) route-map WORD': 'bgp', 'RMAP_REDIST_BGP'
+execute strict 'redistribute bgp route-map RMAP_REDIST_BGP'@14: rv==0, 'redistribute (kernel|connected|static|ospf|isis|bgp|babel) route-map WORD': 'bgp', 'RMAP_REDIST_BGP'
+complete 'redistribute bgp route-map RMAP_REDIST_BGP'@14: rv==2
+describe 'redistribute bgp route-map RMAP_REDIST_BGP'@14: rv==0
+  'WORD' 'Pointer to route-map entries'
+execute relaxed 'redistribute bgp route-map RMAP_REDIST_BGP'@15: rv==0, 'redistribute (kernel|connected|static|ospf6|isis|bgp|babel) route-map WORD': 'bgp', 'RMAP_REDIST_BGP'
+execute strict 'redistribute bgp route-map RMAP_REDIST_BGP'@15: rv==0, 'redistribute (kernel|connected|static|ospf6|isis|bgp|babel) route-map WORD': 'bgp', 'RMAP_REDIST_BGP'
+complete 'redistribute bgp route-map RMAP_REDIST_BGP'@15: rv==2
+describe 'redistribute bgp route-map RMAP_REDIST_BGP'@15: rv==0
+  'WORD' 'Pointer to route-map entries'
+execute relaxed 'redistribute bgp route-map RMAP_REDIST_BGP'@23: rv==0, 'redistribute (kernel|connected|static|rip|isis|bgp|babel) {metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'bgp', '(null)', '(null)', 'RMAP_REDIST_BGP'
+execute strict 'redistribute bgp route-map RMAP_REDIST_BGP'@23: rv==0, 'redistribute (kernel|connected|static|rip|isis|bgp|babel) {metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'bgp', '(null)', '(null)', 'RMAP_REDIST_BGP'
+complete 'redistribute bgp route-map RMAP_REDIST_BGP'@23: rv==2
+describe 'redistribute bgp route-map RMAP_REDIST_BGP'@23: rv==0
+  'WORD' 'Pointer to route-map entries'
+execute relaxed 'redistribute bgp route-map RMAP_REDIST_BGP'@24: rv==0, 'redistribute (kernel|connected|static|ripng|isis|bgp|babel) route-map WORD': 'bgp', 'RMAP_REDIST_BGP'
+execute strict 'redistribute bgp route-map RMAP_REDIST_BGP'@24: rv==0, 'redistribute (kernel|connected|static|ripng|isis|bgp|babel) route-map WORD': 'bgp', 'RMAP_REDIST_BGP'
+complete 'redistribute bgp route-map RMAP_REDIST_BGP'@24: rv==2
+describe 'redistribute bgp route-map RMAP_REDIST_BGP'@24: rv==0
+  'WORD' 'Route map name'
+execute relaxed 'default-information originate metric-type 1 metric 10'@23: rv==0, 'default-information originate {always|metric <0-16777214>|metric-type (1|2)|route-map WORD}': '(null)', '10', '1', '(null)'
+execute strict 'default-information originate metric-type 1 metric 10'@23: rv==0, 'default-information originate {always|metric <0-16777214>|metric-type (1|2)|route-map WORD}': '(null)', '10', '1', '(null)'
+complete 'default-information originate metric-type 1 metric 10'@23: rv==2
+describe 'default-information originate metric-type 1 metric 10'@23: rv==0
+  '<0-16777214>' 'OSPF metric'
+execute relaxed 'default-information originate always metric-type 1 metric 10'@23: rv==0, 'default-information originate {always|metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'always', '10', '1', '(null)'
+execute strict 'default-information originate always metric-type 1 metric 10'@23: rv==0, 'default-information originate {always|metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'always', '10', '1', '(null)'
+complete 'default-information originate always metric-type 1 metric 10'@23: rv==2
+describe 'default-information originate always metric-type 1 metric 10'@23: rv==0
+  '<0-16777214>' 'OSPF metric'
+execute relaxed 'default-information originate route-map RMAP_DEFAULT'@23: rv==0, 'default-information originate {always|metric <0-16777214>|metric-type (1|2)|route-map WORD}': '(null)', '(null)', '(null)', 'RMAP_DEFAULT'
+execute strict 'default-information originate route-map RMAP_DEFAULT'@23: rv==0, 'default-information originate {always|metric <0-16777214>|metric-type (1|2)|route-map WORD}': '(null)', '(null)', '(null)', 'RMAP_DEFAULT'
+complete 'default-information originate route-map RMAP_DEFAULT'@23: rv==2
+describe 'default-information originate route-map RMAP_DEFAULT'@23: rv==0
+  'WORD' 'Pointer to route-map entries'
+execute relaxed 'default-information originate route-map RMAP_DEFAULT metric 10'@23: rv==0, 'default-information originate {always|metric <0-16777214>|metric-type (1|2)|route-map WORD}': '(null)', '10', '(null)', 'RMAP_DEFAULT'
+execute strict 'default-information originate route-map RMAP_DEFAULT metric 10'@23: rv==0, 'default-information originate {always|metric <0-16777214>|metric-type (1|2)|route-map WORD}': '(null)', '10', '(null)', 'RMAP_DEFAULT'
+complete 'default-information originate route-map RMAP_DEFAULT metric 10'@23: rv==2
+describe 'default-information originate route-map RMAP_DEFAULT metric 10'@23: rv==0
+  '<0-16777214>' 'OSPF metric'
+execute relaxed 'default-information originate always metric-type 2 metric 23'@23: rv==0, 'default-information originate {always|metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'always', '23', '2', '(null)'
+execute strict 'default-information originate always metric-type 2 metric 23'@23: rv==0, 'default-information originate {always|metric <0-16777214>|metric-type (1|2)|route-map WORD}': 'always', '23', '2', '(null)'
+complete 'default-information originate always metric-type 2 metric 23'@23: rv==2
+describe 'default-information originate always metric-type 2 metric 23'@23: rv==0
+  '<0-16777214>' 'OSPF metric'