From f86b967c368ed982ca439a96bab4604025345c00 Mon Sep 17 00:00:00 2001 From: Ivan Shvedunov Date: Fri, 19 Feb 2021 23:32:18 +0300 Subject: [PATCH] ip-neighbor: add set ip neighbor-config CLI command Type: improvement Signed-off-by: Ivan Shvedunov Change-Id: I77ade50425e88d2da979f732d2248bed383f4ba4 --- src/vnet/ip-neighbor/ip_neighbor.c | 54 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/src/vnet/ip-neighbor/ip_neighbor.c b/src/vnet/ip-neighbor/ip_neighbor.c index 78b45a27c9d..8637e16fd8e 100644 --- a/src/vnet/ip-neighbor/ip_neighbor.c +++ b/src/vnet/ip-neighbor/ip_neighbor.c @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -1717,12 +1718,65 @@ ip_neighbor_config_show (vlib_main_t * vm, return (NULL); } +static clib_error_t * +ip_neighbor_config_set (vlib_main_t *vm, unformat_input_t *input, + vlib_cli_command_t *cmd) +{ + unformat_input_t _line_input, *line_input = &_line_input; + clib_error_t *error = NULL; + ip_address_family_t af; + u32 limit, age; + bool recycle; + + if (!unformat_user (input, unformat_line_input, line_input)) + return 0; + + if (!unformat (line_input, "%U", unformat_ip_address_family, &af)) + { + error = unformat_parse_error (line_input); + goto done; + } + + limit = ip_neighbor_db[af].ipndb_limit; + age = ip_neighbor_db[af].ipndb_age; + recycle = ip_neighbor_db[af].ipndb_recycle; + + while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT) + { + if (unformat (line_input, "limit %u", &limit)) + ; + else if (unformat (line_input, "age %u", &age)) + ; + else if (unformat (line_input, "recycle")) + recycle = true; + else if (unformat (line_input, "norecycle")) + recycle = false; + else + { + error = unformat_parse_error (line_input); + goto done; + } + } + + ip_neighbor_config (af, limit, age, recycle); + +done: + unformat_free (line_input); + return error; +} + /* *INDENT-OFF* */ VLIB_CLI_COMMAND (show_ip_neighbor_cfg_cmd_node, static) = { .path = "show ip neighbor-config", .function = ip_neighbor_config_show, .short_help = "show ip neighbor-config", }; +VLIB_CLI_COMMAND (set_ip_neighbor_cfg_cmd_node, static) = { + .path = "set ip neighbor-config", + .function = ip_neighbor_config_set, + .short_help = "set ip neighbor-config ip4|ip6 [limit ] [age ] " + "[recycle|norecycle]", +}; /* *INDENT-ON* */ static clib_error_t * -- 2.16.6