diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c index 8f2486314a..6bfb180229 100644 --- a/bgpd/bgp_routemap.c +++ b/bgpd/bgp_routemap.c @@ -3992,7 +3992,7 @@ DEFUN (set_lcommunity_delete, DEFUN (no_set_lcommunity_delete, no_set_lcommunity_delete_cmd, - "no set large-comm-list <(1-99|(100-500)|WORD)> [delete]", + "no set large-comm-list <(1-99)|(100-500)|WORD> [delete]", NO_STR SET_STR "set BGP large community list (for deletion)\n" diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 94809d69f5..86606fb8bc 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -5573,80 +5573,68 @@ DEFUN (no_neighbor_addpath_tx_bestpath_per_as, PEER_FLAG_ADDPATH_TX_BESTPATH_PER_AS); } - -/* Address Family configuration. */ -DEFUN (address_family_ipv4, - address_family_ipv4_cmd, - "address-family ipv4", - "Enter Address Family command mode\n" - "Address Family\n") -{ - vty->node = BGP_IPV4_NODE; - return CMD_SUCCESS; -} - DEFUN (address_family_ipv4_safi, address_family_ipv4_safi_cmd, - "address-family ipv4 "BGP_SAFI_CMD_STR, + "address-family ipv4 []", "Enter Address Family command mode\n" "Address Family\n" BGP_SAFI_HELP_STR) { int idx_safi = 2; - switch (bgp_vty_safi_from_arg(argv[idx_safi]->arg)) + if (argc == (idx_safi + 1)) { - case SAFI_MULTICAST: - vty->node = BGP_IPV4M_NODE; - break; - case SAFI_ENCAP: - vty->node = BGP_ENCAP_NODE; - break; - case SAFI_MPLS_VPN: - vty->node = BGP_VPNV4_NODE; - break; - case SAFI_UNICAST: - default: - vty->node = BGP_IPV4_NODE; - break; + switch (bgp_vty_safi_from_arg(argv[idx_safi]->arg)) + { + case SAFI_MULTICAST: + vty->node = BGP_IPV4M_NODE; + break; + case SAFI_ENCAP: + vty->node = BGP_ENCAP_NODE; + break; + case SAFI_MPLS_VPN: + vty->node = BGP_VPNV4_NODE; + break; + case SAFI_UNICAST: + default: + vty->node = BGP_IPV4_NODE; + break; + } } + else + vty->node = BGP_IPV4_NODE; return CMD_SUCCESS; } -DEFUN (address_family_ipv6, - address_family_ipv6_cmd, - "address-family ipv6", - "Enter Address Family command mode\n" - "Address Family\n") -{ - vty->node = BGP_IPV6_NODE; - return CMD_SUCCESS; -} - DEFUN (address_family_ipv6_safi, address_family_ipv6_safi_cmd, - "address-family ipv6 "BGP_SAFI_CMD_STR, + "address-family ipv6 []", "Enter Address Family command mode\n" "Address Family\n" BGP_SAFI_HELP_STR) { int idx_safi = 2; - switch (bgp_vty_safi_from_arg(argv[idx_safi]->arg)) + if (argc == (idx_safi + 1)) { - case SAFI_MULTICAST: - vty->node = BGP_IPV6M_NODE; - break; - case SAFI_ENCAP: - vty->node = BGP_ENCAPV6_NODE; - break; - case SAFI_MPLS_VPN: - vty->node = BGP_VPNV6_NODE; - break; - case SAFI_UNICAST: - default: - vty->node = BGP_IPV6_NODE; - break; + switch (bgp_vty_safi_from_arg(argv[idx_safi]->arg)) + { + case SAFI_MULTICAST: + vty->node = BGP_IPV6M_NODE; + break; + case SAFI_ENCAP: + vty->node = BGP_ENCAPV6_NODE; + break; + case SAFI_MPLS_VPN: + vty->node = BGP_VPNV6_NODE; + break; + case SAFI_UNICAST: + default: + vty->node = BGP_IPV6_NODE; + break; + } } + else + vty->node = BGP_IPV6_NODE; return CMD_SUCCESS; } @@ -10814,9 +10802,7 @@ bgp_vty_init (void) install_element (BGP_ENCAPV6_NODE, &no_neighbor_allowas_in_cmd); /* address-family commands. */ - install_element (BGP_NODE, &address_family_ipv4_cmd); install_element (BGP_NODE, &address_family_ipv4_safi_cmd); - install_element (BGP_NODE, &address_family_ipv6_cmd); install_element (BGP_NODE, &address_family_ipv6_safi_cmd); #ifdef KEEP_OLD_VPN_COMMANDS install_element (BGP_NODE, &address_family_vpnv4_cmd); diff --git a/bgpd/rfapi/bgp_rfapi_cfg.c b/bgpd/rfapi/bgp_rfapi_cfg.c index 8ff28a39d7..bc268f6086 100644 --- a/bgpd/rfapi/bgp_rfapi_cfg.c +++ b/bgpd/rfapi/bgp_rfapi_cfg.c @@ -3353,6 +3353,7 @@ DEFUN (vnc_vrf_policy_label, DEFUN (vnc_vrf_policy_no_label, vnc_vrf_policy_no_label_cmd, "no label", + NO_STR "Remove VRF default label\n") { VTY_DECLVAR_CONTEXT_SUB(rfapi_nve_group_cfg, rfg); @@ -3880,7 +3881,7 @@ DEFUN (vnc_l2_group_lni, DEFUN (vnc_l2_group_labels, vnc_l2_group_labels_cmd, - "labels .LABELLIST", + "labels LABELLIST...", "Specify label values associated with group\n" "Space separated list of label values <0-1048575>\n") { @@ -3923,7 +3924,7 @@ DEFUN (vnc_l2_group_labels, DEFUN (vnc_l2_group_no_labels, vnc_l2_group_no_labels_cmd, - "no labels .LABELLIST", + "no labels LABELLIST...", NO_STR "Remove label values associated with L2 group\n" "Specify label values associated with L2 group\n" diff --git a/bgpd/rfapi/rfapi_vty.c b/bgpd/rfapi/rfapi_vty.c index 1e92cbcbf1..f7c3773fd4 100644 --- a/bgpd/rfapi/rfapi_vty.c +++ b/bgpd/rfapi/rfapi_vty.c @@ -5193,7 +5193,7 @@ DEFUN (add_vrf_prefix_rd_label_pref, "IPv6 prefix\n" "Override configured VRF Route Distinguisher\n" ": or :\n" - "Override configured VRF label" + "Override configured VRF label\n" "Label Value <0-1048575>\n" "Set advertised local preference\n" "local preference (higher=more preferred)\n") 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); diff --git a/vtysh/extract.pl.in b/vtysh/extract.pl.in index d38ea60a03..5b23b2440a 100755 --- a/vtysh/extract.pl.in +++ b/vtysh/extract.pl.in @@ -54,18 +54,14 @@ $ignore{'"router bgp [(1-4294967295) [ WORD]]"'} = "ignore"; $ignore{'"router isis WORD"'} = "ignore"; $ignore{'"router zebra"'} = "ignore"; $ignore{'"address-family ipv4"'} = "ignore"; -$ignore{'"address-family ipv4 "'} = "ignore"; +$ignore{'"address-family ipv4 []"'} = "ignore"; $ignore{'"address-family ipv6"'} = "ignore"; -$ignore{'"address-family ipv6 "'} = "ignore"; -$ignore{'"address-family ipv4 vpn"'} = "ignore"; +$ignore{'"address-family ipv6 []"'} = "ignore"; $ignore{'"address-family vpnv4"'} = "ignore"; $ignore{'"address-family vpnv4 unicast"'} = "ignore"; $ignore{'"address-family ipv4 vrf NAME"'} = "ignore"; $ignore{'"address-family "'} = "ignore"; $ignore{'"address-family encapv6"'} = "ignore"; -$ignore{'"address-family ipv4 encap"'} = "ignore"; -$ignore{'"address-family ipv6 encap"'} = "ignore"; -$ignore{'"address-family ipv6 vpn"'} = "ignore"; $ignore{'"address-family vpnv6"'} = "ignore"; $ignore{'"address-family vpnv6 unicast"'} = "ignore"; $ignore{'"exit-address-family"'} = "ignore"; @@ -87,6 +83,8 @@ $ignore{'"router ospf [(1-65535)]"'} = "ignore"; $ignore{'"address-family vpnv6 [unicast]"'} = "ignore"; $ignore{'"address-family vpnv4 [unicast]"'} = "ignore"; $ignore{'"logical-router (1-65535) ns NAME"'} = "ignore"; +$ignore{'"vrf-policy NAME"' } = "ignore"; +$ignore{'"exit-vrf-policy"' } = "ignore"; my $cli_stomp = 0; diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c index 51b5091c57..1db3dca352 100644 --- a/vtysh/vtysh.c +++ b/vtysh/vtysh.c @@ -1149,48 +1149,56 @@ DEFUNSH (VTYSH_BGPD, DEFUNSH (VTYSH_BGPD, address_family_ipv4_unicast, address_family_ipv4_unicast_cmd, - "address-family ipv4 unicast", + "address-family ipv4 []", "Enter Address Family command mode\n" "Address Family\n" - "Address Family Modifier\n") + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n") { - vty->node = BGP_IPV4_NODE; - return CMD_SUCCESS; -} + int idx = 0; + + if (argv_find (argv, argc, "multicast", &idx)) + vty->node = BGP_IPV4M_NODE; + + else if (argv_find (argv, argc, "encap", &idx)) + vty->node = BGP_ENCAP_NODE; + + else if (argv_find (argv, argc, "vpn", &idx)) + vty->node = BGP_VPNV4_NODE; + + else + vty->node = BGP_IPV4_NODE; -DEFUNSH (VTYSH_BGPD, - address_family_ipv4_multicast, - address_family_ipv4_multicast_cmd, - "address-family ipv4 multicast", - "Enter Address Family command mode\n" - "Address Family\n" - "Address Family Modifier\n") -{ - vty->node = BGP_IPV4M_NODE; return CMD_SUCCESS; } DEFUNSH (VTYSH_BGPD, address_family_ipv6, address_family_ipv6_cmd, - "address-family ipv6 [unicast]", + "address-family ipv6 []", "Enter Address Family command mode\n" "Address Family\n" - "Address Family Modifier\n") + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n" + "Address Family Modifier\n") { - vty->node = BGP_IPV6_NODE; - return CMD_SUCCESS; -} + int idx = 0; + + if (argv_find (argv, argc, "multicast", &idx)) + vty->node = BGP_IPV6M_NODE; + + else if (argv_find (argv, argc, "encap", &idx)) + vty->node = BGP_ENCAPV6_NODE; + + else if (argv_find (argv, argc, "vpn", &idx)) + vty->node = BGP_VPNV6_NODE; + + else + vty->node = BGP_IPV6_NODE; -DEFUNSH (VTYSH_BGPD, - address_family_ipv6_multicast, - address_family_ipv6_multicast_cmd, - "address-family ipv6 multicast", - "Enter Address Family command mode\n" - "Address Family\n" - "Address Family Modifier\n") -{ - vty->node = BGP_IPV6M_NODE; return CMD_SUCCESS; } @@ -3282,9 +3290,7 @@ vtysh_init_vty (void) install_element (BGP_NODE, &vnc_l2_group_cmd); #endif install_element (BGP_NODE, &address_family_ipv4_unicast_cmd); - install_element (BGP_NODE, &address_family_ipv4_multicast_cmd); install_element (BGP_NODE, &address_family_ipv6_cmd); - install_element (BGP_NODE, &address_family_ipv6_multicast_cmd); install_element (BGP_VPNV4_NODE, &exit_address_family_cmd); install_element (BGP_VPNV6_NODE, &exit_address_family_cmd); install_element (BGP_ENCAP_NODE, &exit_address_family_cmd);