]> git.proxmox.com Git - mirror_frr.git/commitdiff
isisd: scrub argc CHECK ME's, refactor general
authorQuentin Young <qlyoung@cumulusnetworks.com>
Thu, 29 Sep 2016 23:24:52 +0000 (23:24 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Thu, 29 Sep 2016 23:24:52 +0000 (23:24 +0000)
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
isisd/isis_redist.c
isisd/isis_routemap.c
isisd/isis_vty.c

index 7cd3027f16aa14883b6d034f1da4d0afef34f7e3..e330a101709aee3fffcf9d14d5dd4a0169327963 100644 (file)
@@ -635,16 +635,11 @@ DEFUN (no_isis_redistribute,
   if (!afi)
     return CMD_WARNING;
 
-  type = proto_redistnum(afi, argv[idx_protocol]->arg);
+  type = proto_redistnum(afi, argv[idx_protocol]->text);
   if (type < 0 || type == ZEBRA_ROUTE_ISIS)
     return CMD_WARNING;
 
-  if (!strcmp("level-1", argv[idx_level]->arg))
-    level = 1;
-  else if (!strcmp("level-2", argv[idx_level]->arg))
-    level = 2;
-  else
-    return CMD_WARNING;
+  level = strmatch ("level-1", argv[idx_level]->text) ? 1 : 2;
 
   isis_redist_unset(area, level, family, type);
   return 0;
@@ -652,7 +647,7 @@ DEFUN (no_isis_redistribute,
 
 DEFUN (isis_default_originate,
        isis_default_originate_cmd,
-       "default-information originate <ipv4|ipv6> <level-1|level-2> [always|metric (0-16777215)|route-map WORD]",
+       "default-information originate <ipv4|ipv6> <level-1|level-2> [<always|metric (0-16777215)|route-map WORD>]",
        "Control distribution of default information\n"
        "Distribute a default route\n"
        "Distribute default route for IPv4\n"
@@ -670,21 +665,16 @@ DEFUN (isis_default_originate,
   int idx_metric_rmap = 4;
   struct isis_area *area = vty->index;
   int family;
-  int originate_type;
+  int originate_type = DEFAULT_ORIGINATE;
   int level;
-  unsigned long metric;
-  const char *routemap;
+  unsigned long metric = 0xffffffff;
+  const char *routemap = NULL;
 
-  family = str2family(argv[idx_afi]->arg);
+  family = str2family(argv[idx_afi]->text);
   if (family < 0)
     return CMD_WARNING;
 
-  if (!strcmp("level-1", argv[idx_level]->arg))
-    level = 1;
-  else if (!strcmp("level-2", argv[idx_level]->arg))
-    level = 2;
-  else
-    return CMD_WARNING;
+  level = strmatch ("level-1", argv[idx_level]->text) ? 1 : 2;
 
   if ((area->is_type & level) != level)
     {
@@ -692,10 +682,15 @@ DEFUN (isis_default_originate,
       return CMD_WARNING;
     }
 
-  if (argv[idx_metric_rmap]->arg && *argv[idx_metric_rmap]->arg != '\0')
-    originate_type = DEFAULT_ORIGINATE_ALWAYS;
-  else
-    originate_type = DEFAULT_ORIGINATE;
+  if (argc > 4)
+  {
+    if (strmatch (argv[idx_metric_rmap]->text, "always"))
+      originate_type = DEFAULT_ORIGINATE_ALWAYS;
+    else if (strmatch(argv[idx_metric_rmap]->text, "metric"))
+      metric = strtoul(argv[idx_metric_rmap + 1]->arg, NULL, 10);
+    else
+      routemap = argv[idx_metric_rmap + 1]->arg;
+  }
 
   if (family == AF_INET6 && originate_type != DEFAULT_ORIGINATE_ALWAYS)
     {
@@ -703,21 +698,6 @@ DEFUN (isis_default_originate,
       vty_out(vty, "so use with care or use default-originate always.%s", VTY_NEWLINE);
     }
 
-  if (strmatch(argv[idx_metric_rmap]->text, "metric"))
-    {
-      char *endp;
-      metric = strtoul(argv[idx_metric_rmap + 1]->arg, &endp, 10);
-      routemap = NULL;
-
-      if (argv[idx_metric_rmap]->arg[0] == '\0' || *endp != '\0')
-        return CMD_WARNING;
-    }
-  else
-    {
-      routemap = argv[idx_metric_rmap + 1]->arg;
-      metric = 0xffffffff;
-    }
-
   isis_redist_set(area, level, family, DEFAULT_ROUTE, metric, routemap, originate_type);
   return 0;
 }
@@ -740,13 +720,13 @@ DEFUN (no_isis_default_originate,
   int family;
   int level;
 
-  family = str2family(argv[idx_afi]->arg);
+  family = str2family(argv[idx_afi]->text);
   if (family < 0)
     return CMD_WARNING;
 
-  if (!strcmp("level-1", argv[idx_level]->arg))
+  if (strmatch ("level-1", argv[idx_level]->text))
     level = 1;
-  else if (!strcmp("level-2", argv[idx_level]->arg))
+  else if (strmatch ("level-2", argv[idx_level]->text))
     level = 2;
   else
     return CMD_WARNING;
index a1f087548f4dd906c87c597a0ebfc70ba31e0f50..72caa5a096c3dffd303e80fcc2701e2823886cb1 100644 (file)
@@ -371,7 +371,7 @@ DEFUN (no_match_ip_address,
        "IP Access-list name\n")
 {
   int idx_acl = 4;
-  if (argc <= idx_acl)
+  if (argc == 4)
     return isis_route_match_delete(vty, vty->index, "ip address", NULL);
   return isis_route_match_delete(vty, vty->index, "ip address", argv[idx_acl]->arg);
 }
@@ -404,7 +404,7 @@ DEFUN (no_match_ip_address_prefix_list,
        "IP prefix-list name\n")
 {
   int idx_word = 5;
-  if (argc <= idx_word)
+  if (argc == 5)
     return isis_route_match_delete (vty, vty->index, "ip address prefix-list", NULL);
   return isis_route_match_delete (vty, vty->index, "ip address prefix-list", argv[idx_word]->arg);
 }
@@ -435,7 +435,7 @@ DEFUN (no_match_ipv6_address,
        "IPv6 access-list name\n")
 {
   int idx_word = 4;
-  if (argc <= idx_word)
+  if (argc == 4)
     return isis_route_match_delete(vty, vty->index, "ipv6 address", NULL);
   return isis_route_match_delete(vty, vty->index, "ipv6 address", argv[idx_word]->arg);
 }
@@ -467,7 +467,7 @@ DEFUN (no_match_ipv6_address_prefix_list,
        "IP prefix-list name\n")
 {
   int idx_word = 5;
-  if (argc <= idx_word)
+  if (argc == 5)
     return isis_route_match_delete (vty, vty->index, "ipv6 address prefix-list", NULL);
   return isis_route_match_delete (vty, vty->index, "ipv6 address prefix-list", argv[idx_word]->arg);
 }
@@ -498,7 +498,7 @@ DEFUN (no_set_metric,
       "Metric value\n")
 {
   int idx_number = 3;
-  if (argc <= idx_number)
+  if (argc == 3)
     return isis_route_set_delete(vty, vty->index, "metric", NULL);
   return isis_route_set_delete(vty, vty->index, "metric", argv[idx_number]->arg);
 }
index a1970a9017e0e58666034f17f897ef3ff3c5f050..93c54726098d1a9a48c512dbdcc800e4eb8fa1aa 100644 (file)
@@ -2057,9 +2057,8 @@ area_passwd_set(struct vty *vty, int level,
 
 DEFUN (area_passwd_md5,
        area_passwd_md5_cmd,
-       "<area-password|domain-password> md5 WORD [authenticate snp <send-only|validate>]",
+       "area-password md5 WORD [authenticate snp <send-only|validate>]",
        "Configure the authentication password for an area\n"
-       "Set the authentication password for a routing domain\n"
        "Authentication type\n"
        "Level-wide password\n"
        "Authentication\n"
@@ -2084,12 +2083,24 @@ DEFUN (area_passwd_md5,
                          argv[idx_word]->arg, snp_auth);
 }
 
+DEFUN (domain_passwd_md5,
+       domain_passwd_md5_cmd,
+       "domain-password md5 WORD [authenticate snp <send-only|validate>]",
+       "Set the authentication password for a routing domain\n"
+       "Authentication type\n"
+       "Level-wide password\n"
+       "Authentication\n"
+       "SNP PDUs\n"
+       "Send but do not check PDUs on receiving\n"
+       "Send and check PDUs on receiving\n")
+{
+  return area_passwd_md5 (self, vty, argc, argv);
+}
 
 DEFUN (area_passwd_clear,
        area_passwd_clear_cmd,
-       "<area-password|domain-password> clear WORD [authenticate snp <send-only|validate>]",
+       "area-password clear WORD [authenticate snp <send-only|validate>]",
        "Configure the authentication password for an area\n"
-       "Set the authentication password for a routing domain\n"
        "Authentication type\n"
        "Area password\n"
        "Authentication\n"
@@ -2106,7 +2117,7 @@ DEFUN (area_passwd_clear,
   if (argc > 3)
     {
       snp_auth = SNP_AUTH_SEND;
-      if (strmatch(argv[idx_type]->arg, "validate"))
+      if (strmatch (argv[idx_type]->text, "validate"))
         snp_auth |= SNP_AUTH_RECV;
     }
 
@@ -2114,6 +2125,19 @@ DEFUN (area_passwd_clear,
                          argv[idx_word]->arg, snp_auth);
 }
 
+DEFUN (domain_passwd_clear,
+       domain_passwd_clear_cmd,
+       "domain-password clear WORD [authenticate snp <send-only|validate>]",
+       "Set the authentication password for a routing domain\n"
+       "Authentication type\n"
+       "Area password\n"
+       "Authentication\n"
+       "SNP PDUs\n"
+       "Send but do not check PDUs on receiving\n"
+       "Send and check PDUs on receiving\n")
+{
+  return area_passwd_clear (self, vty, argc, argv);
+}
 
 DEFUN (no_area_passwd,
        no_area_passwd_cmd,
@@ -2123,7 +2147,7 @@ DEFUN (no_area_passwd,
        "Set the authentication password for a routing domain\n")
 {
   int idx_password = 1;
-  int level = (argv[idx_password]->arg[0] == 'd') ? IS_LEVEL_2 : IS_LEVEL_1;
+  int level = strmatch (argv[idx_password]->text, "domain-password") ? IS_LEVEL_2 : IS_LEVEL_1;
   struct isis_area *area = vty->index;
 
   if (!area)
@@ -2246,5 +2270,7 @@ isis_vty_init (void)
 
   install_element (ISIS_NODE, &area_passwd_md5_cmd);
   install_element (ISIS_NODE, &area_passwd_clear_cmd);
+  install_element (ISIS_NODE, &domain_passwd_md5_cmd);
+  install_element (ISIS_NODE, &domain_passwd_clear_cmd);
   install_element (ISIS_NODE, &no_area_passwd_cmd);
 }