From 72e81cf424ee08a173be5cbf66234d9ae7c99adb Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Thu, 26 Jan 2017 09:10:54 -0500 Subject: [PATCH] pimd: More pim cli fixup Found some additional issues with the pim cli. Signed-off-by: Donald Sharp --- pimd/pim_cmd.c | 77 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 23 deletions(-) diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index b8bb694b78..7e60232bac 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -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); -- 2.39.5