]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pimd: More pim cli fixup
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 26 Jan 2017 14:10:54 +0000 (09:10 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 26 Jan 2017 14:10:54 +0000 (09:10 -0500)
Found some additional issues with the pim
cli.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_cmd.c

index b8bb694b78d3db883cd7441b0fd499ee50ddb550..7e60232bacdfe1791efb748cd8fe989d9f847fcd 100644 (file)
@@ -2423,8 +2423,11 @@ DEFUN (show_ip_igmp_interface,
        "JavaScript Object Notation\n")
 {
   u_char uj = use_json(argc, argv);
-  if (argv[4]->arg)
-    igmp_show_interfaces_single(vty, argv[4]->arg, uj);
+  int idx = 0;
+
+  if (argv_find(argv, argc, "detail", &idx) ||
+      argv_find(argv, argc, "WORD", &idx))
+    igmp_show_interfaces_single(vty, argv[idx]->arg, uj);
   else
     igmp_show_interfaces(vty, uj);
 
@@ -2564,8 +2567,12 @@ DEFUN (show_ip_pim_interface,
        "JavaScript Object Notation\n")
 {
   u_char uj = use_json(argc, argv);
-  if (argv[4]->arg)
-    pim_show_interfaces_single(vty, argv[4]->arg, uj);
+  int idx = 0;
+
+  if (argv_find(argv, argc, "WORD", &idx) ||
+      argv_find(argv, argc, "detail", &idx))
+    pim_show_interfaces_single(vty, argv[idx]->arg, uj);
+
   else
     pim_show_interfaces(vty, uj);
 
@@ -2614,8 +2621,11 @@ DEFUN (show_ip_pim_neighbor,
        "JavaScript Object Notation\n")
 {
   u_char uj = use_json(argc, argv);
-  if (argv[4]->arg)
-    pim_show_neighbors_single(vty, argv[4]->arg, uj);
+  int idx = 0;
+
+  if (argv_find(argv, argc, "detail", &idx) ||
+      argv_find(argv, argc, "WORD", &idx))
+    pim_show_neighbors_single(vty, argv[idx]->arg, uj);
   else
     pim_show_neighbors(vty, uj);
 
@@ -2637,7 +2647,7 @@ DEFUN (show_ip_pim_secondary,
 
 DEFUN (show_ip_pim_state,
        show_ip_pim_state_cmd,
-       "show ip pim state [A.B.C.D] [A.B.C.D] [json]",
+       "show ip pim state [A.B.C.D [A.B.C.D]] [json]",
        SHOW_STR
        IP_STR
        PIM_STR
@@ -2649,9 +2659,16 @@ DEFUN (show_ip_pim_state,
   const char *src_or_group = NULL;
   const char *group = NULL;
   u_char uj = use_json(argc, argv);
+  if (uj)
+    argc--;
 
-  src_or_group = argv[4]->arg;
-  group = argv[5]->arg;
+  if (argc == 5)
+    {
+      src_or_group = argv[4]->arg;
+      group = argv[5]->arg;
+    }
+  else if (argc == 4)
+    src_or_group = argv[4]->arg;
 
   pim_show_state(vty, src_or_group, group, uj);
 
@@ -3476,7 +3493,11 @@ DEFUN (ip_pim_rp,
        "Group Address range to cover\n")
 {
   int idx_ipv4 = 3;
-  return pim_rp_cmd_worker (vty, argv[idx_ipv4]->arg, argv[idx_ipv4 + 1]->arg, NULL);
+
+  if (argc == (idx_ipv4 + 1))
+    return pim_rp_cmd_worker (vty, argv[idx_ipv4]->arg, argv[idx_ipv4 + 1]->arg, NULL);
+  else
+    return pim_rp_cmd_worker (vty, argv[idx_ipv4]->arg, NULL, NULL);
 }
 
 DEFUN (ip_pim_rp_prefix_list,
@@ -3530,7 +3551,11 @@ DEFUN (no_ip_pim_rp,
        "Group Address range to cover\n")
 {
   int idx_ipv4 = 4;
-  return pim_no_rp_cmd_worker (vty, argv[idx_ipv4]->arg, argv[idx_ipv4 + 1]->arg, NULL);
+
+  if (argc == (idx_ipv4 + 1))
+    return pim_no_rp_cmd_worker (vty, argv[idx_ipv4]->arg, argv[idx_ipv4 + 1]->arg, NULL);
+  else
+    return pim_no_rp_cmd_worker (vty, argv[idx_ipv4]->arg, NULL, NULL);
 }
 
 DEFUN (no_ip_pim_rp_prefix_list,
@@ -3585,7 +3610,7 @@ DEFUN (ip_ssmpingd,
   int idx_ipv4 = 2;
   int result;
   struct in_addr source_addr;
-  const char *source_str = (argc > idx_ipv4) ? argv[idx_ipv4]->arg : "0.0.0.0";
+  const char *source_str = (argc == idx_ipv4) ? argv[idx_ipv4]->arg : "0.0.0.0";
 
   result = inet_pton(AF_INET, source_str, &source_addr);
   if (result <= 0) {
@@ -3615,7 +3640,7 @@ DEFUN (no_ip_ssmpingd,
   int idx_ipv4 = 3;
   int result;
   struct in_addr source_addr;
-  const char *source_str = (argc > idx_ipv4) ? argv[idx_ipv4]->arg : "0.0.0.0";
+  const char *source_str = (argc == idx_ipv4) ? argv[idx_ipv4]->arg : "0.0.0.0";
 
   result = inet_pton(AF_INET, source_str, &source_addr);
   if (result <= 0) {
@@ -3937,7 +3962,7 @@ DEFUN (interface_ip_igmp_query_interval,
     return CMD_WARNING;
   }
 
-  query_interval = atoi(argv[4]->arg);
+  query_interval = atoi(argv[3]->arg);
   query_interval_dsec = 10 * query_interval;
 
   /*
@@ -4006,7 +4031,7 @@ DEFUN (interface_no_ip_igmp_query_interval,
 
 DEFUN (interface_ip_igmp_version,
        interface_ip_igmp_version_cmd,
-       "ip igmp version <2-3>",
+       "ip igmp version (2-3)",
        IP_STR
        IFACE_IGMP_STR
        "IGMP version\n"
@@ -4034,7 +4059,7 @@ DEFUN (interface_ip_igmp_version,
 
 DEFUN (interface_no_ip_igmp_version,
        interface_no_ip_igmp_version_cmd,
-       "no ip igmp version <2-3>",
+       "no ip igmp version (2-3)",
        NO_STR
        IP_STR
        IFACE_IGMP_STR
@@ -4079,7 +4104,7 @@ DEFUN (interface_ip_igmp_query_max_response_time,
     return CMD_WARNING;
   }
 
-  query_max_response_time = atoi(argv[4]->arg);
+  query_max_response_time = atoi(argv[3]->arg);
 
   if (query_max_response_time >= pim_ifp->igmp_default_query_interval * 10) {
     vty_out(vty,
@@ -4096,7 +4121,7 @@ DEFUN (interface_ip_igmp_query_max_response_time,
 
 DEFUN (interface_no_ip_igmp_query_max_response_time,
        interface_no_ip_igmp_query_max_response_time_cmd,
-       "no ip igmp query-max-response-time <10-250>",
+       "no ip igmp query-max-response-time (10-250)",
        NO_STR
        IP_STR
        IFACE_IGMP_STR
@@ -4576,7 +4601,7 @@ DEFUN (interface_ip_pim_hello,
 
   pim_ifp->pim_hello_period = strtol(argv[idx_time]->arg, NULL, 10);
 
-  if (argc > idx_hold)
+  if (argc == idx_hold)
     pim_ifp->pim_default_holdtime = strtol(argv[idx_hold]->arg, NULL, 10);
 
   return CMD_SUCCESS;
@@ -5451,7 +5476,7 @@ DEFUN (no_ip_msdp_mesh_group_source,
        "mesh group source\n"
        "mesh group local address\n")
 {
-  if (argv[6]->arg)
+  if (argc == 6)
     return ip_no_msdp_mesh_group_cmd_worker(vty, argv[6]->arg);
   else
     return ip_no_msdp_mesh_group_source_cmd_worker(vty, argv[4]->arg);
@@ -5696,7 +5721,10 @@ DEFUN (show_ip_msdp_peer_detail,
        "JavaScript Object Notation\n")
 {
   u_char uj = use_json(argc, argv);
-  if (argv[4]->arg)
+  if (uj)
+    argc--;
+
+  if (argc == 4)
     ip_msdp_show_peers_detail(vty, argv[4]->arg, uj);
   else
     ip_msdp_show_peers(vty, uj);
@@ -5948,9 +5976,12 @@ DEFUN (show_ip_msdp_sa_sg,
        "JavaScript Object Notation\n")
 {
   u_char uj = use_json(argc, argv);
-  if (argv[5]->arg)
+  if (uj)
+    argc--;
+
+  if (argc == 5)
     ip_msdp_show_sa_sg(vty, argv[4]->arg, argv[5]->arg, uj);
-  else if (argv[4]->arg)
+  else if (argc == 4)
     ip_msdp_show_sa_addr(vty, argv[4]->arg, uj);
   else
     ip_msdp_show_sa(vty, uj);