diff options
-rw-r--r-- | bgpd/bgp_routemap.c | 25 | ||||
-rw-r--r-- | bgpd/bgp_vty.c | 288 | ||||
-rw-r--r-- | vtysh/vtysh.c | 5 |
3 files changed, 137 insertions, 181 deletions
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c index d57d58866..e08b43bc1 100644 --- a/bgpd/bgp_routemap.c +++ b/bgpd/bgp_routemap.c @@ -3612,28 +3612,17 @@ DEFUN (no_set_ip_nexthop, } - -/* - * CHECK ME - The following ALIASes need to be implemented in this DEFUN - * "set metric (rtt|+rtt|-rtt)", - * SET_STR - * "Metric value for destination routing protocol\n" - * "Assign round trip time\n" - * "Add round trip time\n" - * "Subtract round trip time\n" - * - * "set metric <+/-metric>", - * SET_STR - * "Metric value for destination routing protocol\n" - * "Add or subtract metric\n" - * - */ DEFUN (set_metric, set_metric_cmd, - "set metric (0-4294967295)", + "set metric <(0-4294967295)|rtt|+rtt|-rtt|+metric|-metric>", SET_STR "Metric value for destination routing protocol\n" - "Metric value\n") + "Metric value\n" + "Assign round trip time\n" + "Add round trip time\n" + "Subtract round trip time\n" + "Add metric\n" + "Subtract metric\n") { int idx_number = 2; return bgp_route_set_add (vty, vty->index, "metric", argv[idx_number]->arg); diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 0ced86023..0d6a071ec 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -6747,34 +6747,6 @@ bgp_show_summary (struct vty *vty, struct bgp *bgp, int afi, int safi, return CMD_SUCCESS; } -static int -bgp_show_summary_vty (struct vty *vty, const char *name, - afi_t afi, safi_t safi, u_char use_json) -{ - struct bgp *bgp; - - if (name) - { - bgp = bgp_lookup_by_name (name); - - if (! bgp) - { - vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE); - return CMD_WARNING; - } - - bgp_show_summary (vty, bgp, afi, safi, use_json, NULL); - return CMD_SUCCESS; - } - - bgp = bgp_get_default (); - - if (bgp) - bgp_show_summary (vty, bgp, afi, safi, use_json, NULL); - - return CMD_SUCCESS; -} - static void bgp_show_all_instances_summary_vty (struct vty *vty, afi_t afi, safi_t safi, u_char use_json) @@ -6791,14 +6763,7 @@ bgp_show_all_instances_summary_vty (struct vty *vty, afi_t afi, safi_t safi, { if (use_json) { - if (!(json = json_object_new_object())) - { - zlog_err("Unable to allocate memory for JSON object"); - vty_out (vty, - "{\"error\": {\"message:\": \"Unable to allocate memory for JSON object\"}}}%s", - VTY_NEWLINE); - return; - } + json = json_object_new_object(); if (! is_first) vty_out (vty, ",%s", VTY_NEWLINE); @@ -6823,6 +6788,45 @@ bgp_show_all_instances_summary_vty (struct vty *vty, afi_t afi, safi_t safi, } +static int +bgp_show_summary_vty (struct vty *vty, const char *name, + afi_t afi, safi_t safi, u_char use_json) +{ + struct bgp *bgp; + + if (name) + { + if (strmatch(name, "all")) + { + bgp_show_all_instances_summary_vty (vty, afi, safi, use_json); + return CMD_SUCCESS; + } + else + { + bgp = bgp_lookup_by_name (name); + + if (! bgp) + { + if (use_json) + vty_out (vty, "{}%s", VTY_NEWLINE); + else + vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE); + return CMD_WARNING; + } + + bgp_show_summary (vty, bgp, afi, safi, use_json, NULL); + return CMD_SUCCESS; + } + } + + bgp = bgp_get_default (); + + if (bgp) + bgp_show_summary (vty, bgp, afi, safi, use_json, NULL); + + return CMD_SUCCESS; +} + /* `show ip bgp summary' commands. */ DEFUN (show_ip_bgp_summary, show_ip_bgp_summary_cmd, @@ -6857,22 +6861,6 @@ DEFUN (show_ip_bgp_summary, return bgp_show_summary_vty (vty, vrf, afi, safi, uj); } -DEFUN (show_ip_bgp_instance_all_summary, - show_ip_bgp_instance_all_summary_cmd, - "show ip bgp <view|vrf> all summary [json]", - SHOW_STR - IP_STR - BGP_STR - BGP_INSTANCE_ALL_HELP_STR - "Summary of BGP neighbor status\n" - "JavaScript Object Notation\n") -{ - u_char uj = use_json(argc, argv); - - bgp_show_all_instances_summary_vty (vty, AFI_IP, SAFI_UNICAST, uj); - return CMD_SUCCESS; -} - const char * afi_safi_print (afi_t afi, safi_t safi) { @@ -8595,59 +8583,6 @@ bgp_show_neighbor (struct vty *vty, struct bgp *bgp, enum show_type type, return CMD_SUCCESS; } -static int -bgp_show_neighbor_vty (struct vty *vty, const char *name, - enum show_type type, const char *ip_str, u_char use_json) -{ - int ret; - struct bgp *bgp; - union sockunion su; - json_object *json = NULL; - - if (use_json) - json = json_object_new_object(); - - if (name) - { - bgp = bgp_lookup_by_name (name); - if (! bgp) - { - if (use_json) - { - json_object_boolean_true_add(json, "bgpNoSuchInstance"); - vty_out (vty, "%s%s", json_object_to_json_string(json), VTY_NEWLINE); - json_object_free(json); - } - else - vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE); - - return CMD_WARNING; - } - } - else - { - bgp = bgp_get_default (); - } - - if (bgp) - { - if (ip_str) - { - ret = str2sockunion (ip_str, &su); - if (ret < 0) - bgp_show_neighbor (vty, bgp, type, NULL, ip_str, use_json, json); - else - bgp_show_neighbor (vty, bgp, type, &su, NULL, use_json, json); - } - else - { - bgp_show_neighbor (vty, bgp, type, NULL, NULL, use_json, json); - } - } - - return CMD_SUCCESS; -} - static void bgp_show_all_instances_neighbors_vty (struct vty *vty, u_char use_json) { @@ -8702,6 +8637,67 @@ bgp_show_all_instances_neighbors_vty (struct vty *vty, u_char use_json) vty_out (vty, "}%s", VTY_NEWLINE); } +static int +bgp_show_neighbor_vty (struct vty *vty, const char *name, + enum show_type type, const char *ip_str, u_char use_json) +{ + int ret; + struct bgp *bgp; + union sockunion su; + json_object *json = NULL; + + if (use_json) + json = json_object_new_object(); + + if (name) + { + if (strmatch(name, "all")) + { + bgp_show_all_instances_neighbors_vty (vty, use_json); + return CMD_SUCCESS; + } + else + { + bgp = bgp_lookup_by_name (name); + if (! bgp) + { + if (use_json) + { + json_object_boolean_true_add(json, "bgpNoSuchInstance"); + vty_out (vty, "%s%s", json_object_to_json_string(json), VTY_NEWLINE); + json_object_free(json); + } + else + vty_out (vty, "%% No such BGP instance exist%s", VTY_NEWLINE); + + return CMD_WARNING; + } + } + } + else + { + bgp = bgp_get_default (); + } + + if (bgp) + { + if (ip_str) + { + ret = str2sockunion (ip_str, &su); + if (ret < 0) + bgp_show_neighbor (vty, bgp, type, NULL, ip_str, use_json, json); + else + bgp_show_neighbor (vty, bgp, type, &su, NULL, use_json, json); + } + else + { + bgp_show_neighbor (vty, bgp, type, NULL, NULL, use_json, json); + } + } + + return CMD_SUCCESS; +} + /* "show ip bgp neighbors" commands. */ DEFUN (show_ip_bgp_neighbors, show_ip_bgp_neighbors_cmd, @@ -8755,22 +8751,6 @@ DEFUN (show_ip_bgp_neighbors, return bgp_show_neighbor_vty (vty, vrf, sh_type, sh_arg, uj); } -DEFUN (show_ip_bgp_instance_all_neighbors, - show_ip_bgp_instance_all_neighbors_cmd, - "show [ip] bgp <view|vrf> all neighbors [json]", - SHOW_STR - IP_STR - BGP_STR - BGP_INSTANCE_ALL_HELP_STR - "Detailed information on TCP and BGP neighbor connections\n" - "JavaScript Object Notation\n") -{ - u_char uj = use_json(argc, argv); - - bgp_show_all_instances_neighbors_vty (vty, uj); - return CMD_SUCCESS; -} - /* Show BGP's AS paths internal data. There are both `show ip bgp paths' and `show ip mbgp paths'. Those functions results are the same.*/ @@ -8847,22 +8827,6 @@ DEFUN (show_ip_bgp_attr_info, return CMD_SUCCESS; } -static int bgp_show_update_groups(struct vty *vty, const char *name, - int afi, int safi, - uint64_t subgrp_id) -{ - struct bgp *bgp; - - if (name) - bgp = bgp_lookup_by_name (name); - else - bgp = bgp_get_default (); - - if (bgp) - update_group_show(bgp, afi, safi, vty, subgrp_id); - return CMD_SUCCESS; -} - static void bgp_show_all_instances_updgrps_vty (struct vty *vty, afi_t afi, safi_t safi) { @@ -8879,6 +8843,35 @@ bgp_show_all_instances_updgrps_vty (struct vty *vty, afi_t afi, safi_t safi) } } +static int +bgp_show_update_groups(struct vty *vty, const char *name, + int afi, int safi, + uint64_t subgrp_id) +{ + struct bgp *bgp; + + if (name) + { + if (strmatch (name, "all")) + { + bgp_show_all_instances_updgrps_vty (vty, afi, safi); + return CMD_SUCCESS; + } + else + { + bgp = bgp_lookup_by_name (name); + } + } + else + { + bgp = bgp_get_default (); + } + + if (bgp) + update_group_show(bgp, afi, safi, vty, subgrp_id); + return CMD_SUCCESS; +} + DEFUN (show_ip_bgp_updgrps, show_ip_bgp_updgrps_cmd, "show [ip] bgp [<view|vrf> WORD] [<<ipv4|ipv6|vpnv4|encap> [unicast]|ipv4 multicast>] update-groups [SUBGROUP-ID]", @@ -8921,19 +8914,6 @@ DEFUN (show_ip_bgp_updgrps, return (bgp_show_update_groups(vty, vrf, afi, safi, subgrp_id)); } -DEFUN (show_ip_bgp_instance_all_updgrps, - show_ip_bgp_instance_all_updgrps_cmd, - "show ip bgp <view|vrf> all update-groups", - SHOW_STR - IP_STR - BGP_STR - BGP_INSTANCE_ALL_HELP_STR - "Detailed info about dynamic update groups\n") -{ - bgp_show_all_instances_updgrps_vty (vty, AFI_IP, SAFI_UNICAST); - return CMD_SUCCESS; -} - DEFUN (show_bgp_instance_all_ipv6_updgrps, show_bgp_instance_all_ipv6_updgrps_cmd, "show bgp <view|vrf> all update-groups", @@ -10987,7 +10967,6 @@ bgp_vty_init (void) /* "show ip bgp summary" commands. */ install_element (VIEW_NODE, &show_ip_bgp_summary_cmd); install_element (VIEW_NODE, &show_ip_bgp_updgrps_cmd); - install_element (VIEW_NODE, &show_ip_bgp_instance_all_updgrps_cmd); install_element (VIEW_NODE, &show_bgp_instance_all_ipv6_updgrps_cmd); install_element (VIEW_NODE, &show_ip_bgp_updgrps_adj_cmd); install_element (VIEW_NODE, &show_ip_bgp_instance_updgrps_adj_cmd); @@ -10999,10 +10978,8 @@ bgp_vty_init (void) install_element (VIEW_NODE, &show_bgp_updgrps_adj_s_cmd); install_element (VIEW_NODE, &show_bgp_instance_updgrps_adj_s_cmd); install_element (VIEW_NODE, &show_bgp_updgrps_afi_adj_s_cmd); - install_element (VIEW_NODE, &show_ip_bgp_instance_all_summary_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_summary_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_updgrps_cmd); - install_element (RESTRICTED_NODE, &show_ip_bgp_instance_all_updgrps_cmd); install_element (RESTRICTED_NODE, &show_bgp_instance_all_ipv6_updgrps_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_updgrps_adj_cmd); install_element (RESTRICTED_NODE, &show_ip_bgp_instance_updgrps_adj_cmd); @@ -11014,10 +10991,8 @@ bgp_vty_init (void) install_element (RESTRICTED_NODE, &show_bgp_updgrps_adj_s_cmd); install_element (RESTRICTED_NODE, &show_bgp_instance_updgrps_adj_s_cmd); install_element (RESTRICTED_NODE, &show_bgp_updgrps_afi_adj_s_cmd); - install_element (RESTRICTED_NODE, &show_ip_bgp_instance_all_summary_cmd); install_element (ENABLE_NODE, &show_ip_bgp_summary_cmd); install_element (ENABLE_NODE, &show_ip_bgp_updgrps_cmd); - install_element (ENABLE_NODE, &show_ip_bgp_instance_all_updgrps_cmd); install_element (ENABLE_NODE, &show_bgp_instance_all_ipv6_updgrps_cmd); install_element (ENABLE_NODE, &show_ip_bgp_updgrps_adj_cmd); install_element (ENABLE_NODE, &show_ip_bgp_instance_updgrps_adj_cmd); @@ -11029,13 +11004,10 @@ bgp_vty_init (void) install_element (ENABLE_NODE, &show_bgp_updgrps_adj_s_cmd); install_element (ENABLE_NODE, &show_bgp_instance_updgrps_adj_s_cmd); install_element (ENABLE_NODE, &show_bgp_updgrps_afi_adj_s_cmd); - install_element (ENABLE_NODE, &show_ip_bgp_instance_all_summary_cmd); /* "show ip bgp neighbors" commands. */ install_element (VIEW_NODE, &show_ip_bgp_neighbors_cmd); - install_element (VIEW_NODE, &show_ip_bgp_instance_all_neighbors_cmd); install_element (ENABLE_NODE, &show_ip_bgp_neighbors_cmd); - install_element (ENABLE_NODE, &show_ip_bgp_instance_all_neighbors_cmd); /* "show ip bgp peer-group" commands. */ install_element (VIEW_NODE, &show_ip_bgp_peer_groups_cmd); diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c index 09f761a3f..ec94c37d6 100644 --- a/vtysh/vtysh.c +++ b/vtysh/vtysh.c @@ -2177,7 +2177,6 @@ DEFUN (vtysh_write_terminal, "Write running configuration to memory, network, or terminal\n" "Write to terminal\n") { - /* CHECK ME argc referenced below */ u_int i; char line[] = "write terminal\n"; FILE *fp = NULL; @@ -2199,10 +2198,6 @@ DEFUN (vtysh_write_terminal, VTY_NEWLINE); vty_out (vty, "!%s", VTY_NEWLINE); - for (i = 0; i < array_size(vtysh_client); i++) - if ((argc < 1 ) || (begins_with(vtysh_client[i].name, argv[0]))) - vtysh_client_config (&vtysh_client[i], line); - /* Integrate vtysh specific configuration. */ vtysh_config_write (); |