vlib_cli_output (vm, "%s %40s\n", "leid", "reid");
unformat_input_t _line_input, *line_input = &_line_input;
u32 vni = ~0;
+ clib_error_t *error = NULL;
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
{
vlib_cli_output (vm, "parse error: '%U'",
format_unformat_error, line_input);
- return 0;
+ goto done;
}
}
if (~0 == vni)
{
vlib_cli_output (vm, "error: no vni specified!");
- return 0;
+ goto done;
}
adjs = vnet_lisp_adjacencies_get_by_vni (vni);
}
vec_free (adjs);
- return 0;
+done:
+ unformat_free (line_input);
+
+ return error;
}
/* *INDENT-OFF* */
u8 is_add = 1, ip_set = 0;
ip_address_t ip;
unformat_input_t _line_input, *line_input = &_line_input;
+ clib_error_t *error = NULL;
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
{
vlib_cli_output (vm, "parse error: '%U'",
format_unformat_error, line_input);
- return 0;
+ goto done;
}
}
if (!ip_set)
{
vlib_cli_output (vm, "map-server ip address not set!");
- return 0;
+ goto done;
}
rv = vnet_lisp_add_del_map_server (&ip, is_add);
vlib_cli_output (vm, "failed to %s map-server!",
is_add ? "add" : "delete");
- return 0;
+done:
+ unformat_free (line_input);
+
+ return error;
}
/* *INDENT-OFF* */
u8 *key = 0;
u32 key_id = 0;
- memset (&eid, 0, sizeof (eid));
- memset (a, 0, sizeof (*a));
+ clib_memset (&eid, 0, sizeof (eid));
+ clib_memset (a, 0, sizeof (*a));
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
;
else if (unformat (line_input, "locator-set %_%v%_", &locator_set_name))
{
+ vec_terminate_c_string (locator_set_name);
p = hash_get_mem (lcm->locator_set_index_by_name, locator_set_name);
if (!p)
{
if (key && (0 == key_id))
{
vlib_cli_output (vm, "invalid key_id!");
- return 0;
+ goto done;;
}
gid_address_copy (&a->eid, &eid);
vec_free (locator_set_name);
gid_address_free (&a->eid);
vec_free (a->key);
+ unformat_free (line_input);
+
return error;
}
u8 is_add = 1, is_l2 = 0;
u32 vni = 0, dp_id = 0;
unformat_input_t _line_input, *line_input = &_line_input;
+ clib_error_t *error = NULL;
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
is_l2 = 1;
else
{
- return unformat_parse_error (line_input);
+ error = unformat_parse_error (line_input);
+ goto done;
}
}
vnet_lisp_eid_table_map (vni, dp_id, is_l2, is_add);
- return 0;
+
+done:
+ unformat_free (line_input);
+
+ return error;
}
/* *INDENT-OFF* */
if (!unformat_user (input, unformat_line_input, line_input))
return 0;
- memset (&eid, 0, sizeof (eid));
- memset (&rloc, 0, sizeof (rloc));
+ clib_memset (&eid, 0, sizeof (eid));
+ clib_memset (&rloc, 0, sizeof (rloc));
while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
{
if (!is_add)
{
vnet_lisp_add_del_adjacency_args_t _a, *a = &_a;
- memset (a, 0, sizeof (a[0]));
+ clib_memset (a, 0, sizeof (a[0]));
gid_address_copy (&a->reid, &eid);
if (vnet_lisp_add_del_adjacency (a))
{
/* add as static remote mapping, i.e., not authoritative and infinite
* ttl */
- rv = vnet_lisp_add_del_mapping (&eid, rlocs, action, 0, ~0, is_add,
- 1 /* is_static */ , 0);
+ if (is_add)
+ {
+ vnet_lisp_add_del_mapping_args_t _map_args, *map_args = &_map_args;
+ clib_memset (map_args, 0, sizeof (map_args[0]));
+ gid_address_copy (&map_args->eid, &eid);
+ map_args->action = action;
+ map_args->is_static = 1;
+ map_args->authoritative = 0;
+ map_args->ttl = ~0;
+ rv = vnet_lisp_add_mapping (map_args, rlocs, NULL, NULL);
+ }
+ else
+ rv = vnet_lisp_del_mapping (&eid, NULL);
if (rv)
clib_warning ("failed to %s remote mapping!", is_add ? "add" : "delete");
return error;
}
-VLIB_CLI_COMMAND (lisp_add_del_remote_mapping_command) =
-{
-.path = "lisp remote-mapping",.short_help =
- "lisp remote-mapping add|del [del-all] vni <vni> "
- "eid <est-eid> [action <no-action|natively-forward|"
- "send-map-request|drop>] rloc <dst-locator> p <prio> w <weight> "
- "[rloc <dst-locator> ... ]",.function =
- lisp_add_del_remote_mapping_command_fn,};
+/* *INDENT-OFF* */
+VLIB_CLI_COMMAND (lisp_add_del_remote_mapping_command) = {
+ .path = "lisp remote-mapping",
+ .short_help = "lisp remote-mapping add|del [del-all] vni <vni> "
+ "eid <est-eid> [action <no-action|natively-forward|"
+ "send-map-request|drop>] rloc <dst-locator> p <prio> "
+ "w <weight> [rloc <dst-locator> ... ]",
+ .function = lisp_add_del_remote_mapping_command_fn,
+};
+/* *INDENT-ON* */
/**
* Handler for add/del adjacency CLI.
if (!unformat_user (input, unformat_line_input, line_input))
return 0;
- memset (&reid, 0, sizeof (reid));
- memset (&leid, 0, sizeof (leid));
+ clib_memset (&reid, 0, sizeof (reid));
+ clib_memset (&leid, 0, sizeof (leid));
leid_ippref = &gid_address_ippref (&leid);
reid_ippref = &gid_address_ippref (&reid);
!= ip_prefix_version (leid_ippref)))
{
clib_warning ("remote and local EIDs are of different types!");
- return error;
+ goto done;
}
- memset (a, 0, sizeof (a[0]));
+ clib_memset (a, 0, sizeof (a[0]));
gid_address_copy (&a->leid, &leid);
gid_address_copy (&a->reid, &reid);
a->is_add = is_add;
{
unformat_input_t _i, *i = &_i;
map_request_mode_t mr_mode = _MR_MODE_MAX;
+ clib_error_t *error = NULL;
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, i))
if (_MR_MODE_MAX == mr_mode)
{
clib_warning ("No LISP map request mode entered!");
- return 0;
+ goto done;
}
vnet_lisp_set_map_request_mode (mr_mode);
+
done:
- return 0;
+ unformat_free (i);
+
+ return error;
}
/* *INDENT-OFF* */
else if (unformat (line_input, "disable"))
is_add = 0;
else
- return clib_error_return (0, "parse error");
+ {
+ error = clib_error_return (0, "parse error");
+ goto done;
+ }
}
if (!locator_name_set)
clib_warning ("No locator set specified!");
goto done;
}
+ vec_terminate_c_string (locator_set_name);
rv = vnet_lisp_pitr_set_locator_set (locator_set_name, is_add);
if (0 != rv)
{
done:
if (locator_set_name)
vec_free (locator_set_name);
+ unformat_free (line_input);
+
return error;
}
mapping_t *m;
locator_set_t *ls;
u8 *tmp_str = 0;
+ u8 status = lcm->flags & LISP_FLAG_PITR_MODE;
- vlib_cli_output (vm, "%=20s%=16s",
- "pitr", lcm->lisp_pitr ? "locator-set" : "");
+ vlib_cli_output (vm, "%=20s%=16s", "pitr", status ? "locator-set" : "");
- if (!lcm->lisp_pitr)
+ if (!status)
{
vlib_cli_output (vm, "%=20s", "disable");
return 0;
gid_address_t eid;
u8 print_all = 1;
u8 filter = 0;
+ clib_error_t *error = NULL;
- memset (&eid, 0, sizeof (eid));
+ clib_memset (&eid, 0, sizeof (eid));
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
else if (unformat (line_input, "remote"))
filter = 2;
else
- return clib_error_return (0, "parse error: '%U'",
- format_unformat_error, line_input);
+ {
+ error = clib_error_return (0, "parse error: '%U'",
+ format_unformat_error, line_input);
+ goto done;
+ }
}
vlib_cli_output (vm, "%-35s%-20s%-30s%-20s%-s",
- "EID", "type", "locators", "ttl", "autoritative");
+ "EID", "type", "locators", "ttl", "authoritative");
if (print_all)
{
{
mi = gid_dictionary_lookup (&lcm->mapping_index_by_gid, &eid);
if ((u32) ~ 0 == mi)
- return 0;
+ goto done;
mapit = pool_elt_at_index (lcm->mapping_pool, mi);
locator_set_t *ls = pool_elt_at_index (lcm->locator_set_pool,
if (filter && !((1 == filter && ls->local) ||
(2 == filter && !ls->local)))
{
- return 0;
+ goto done;
}
vlib_cli_output (vm, "%U,", format_eid_entry, lcm->vnet_main,
lcm, mapit, ls);
}
- return 0;
+done:
+ unformat_free (line_input);
+
+ return error;
}
/* *INDENT-OFF* */
static clib_error_t *
-lisp_enable_disable_command_fn (vlib_main_t * vm, unformat_input_t * input,
- vlib_cli_command_t * cmd)
+lisp_enable_command_fn (vlib_main_t * vm, unformat_input_t * input,
+ vlib_cli_command_t * cmd)
{
- unformat_input_t _line_input, *line_input = &_line_input;
- u8 is_enabled = 0;
- u8 is_set = 0;
+ if (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
+ return clib_error_return (0, "parse error: '%U'", format_unformat_error,
+ input);
- /* Get a line of input. */
- if (!unformat_user (input, unformat_line_input, line_input))
- return 0;
+ vnet_lisp_enable_disable (1);
- while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
- {
- if (unformat (line_input, "enable"))
- {
- is_set = 1;
- is_enabled = 1;
- }
- else if (unformat (line_input, "disable"))
- is_set = 1;
- else
- {
- return clib_error_return (0, "parse error: '%U'",
- format_unformat_error, line_input);
- }
- }
+ return 0;
+}
- if (!is_set)
- return clib_error_return (0, "state not set");
+/* *INDENT-OFF* */
+VLIB_CLI_COMMAND (lisp_cp_enable_command) = {
+ .path = "lisp enable",
+ .short_help = "lisp enable",
+ .function = lisp_enable_command_fn,
+};
+/* *INDENT-ON* */
+
+static clib_error_t *
+lisp_disable_command_fn (vlib_main_t * vm, unformat_input_t * input,
+ vlib_cli_command_t * cmd)
+{
+ if (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
+ return clib_error_return (0, "parse error: '%U'", format_unformat_error,
+ input);
+
+ vnet_lisp_enable_disable (0);
- vnet_lisp_enable_disable (is_enabled);
return 0;
}
/* *INDENT-OFF* */
-VLIB_CLI_COMMAND (lisp_cp_enable_disable_command) = {
- .path = "lisp",
- .short_help = "lisp [enable|disable]",
- .function = lisp_enable_disable_command_fn,
+VLIB_CLI_COMMAND (lisp_cp_disable_command) = {
+ .path = "lisp disable",
+ .short_help = "lisp disable",
+ .function = lisp_disable_command_fn,
};
/* *INDENT-ON* */
unformat_input_t _line_input, *line_input = &_line_input;
u8 is_enabled = 0;
u8 is_set = 0;
+ clib_error_t *error = NULL;
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
- return 0;
+ return clib_error_return (0, "expected enable | disable");
while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
{
{
vlib_cli_output (vm, "parse error: '%U'", format_unformat_error,
line_input);
- return 0;
+ goto done;
}
}
if (!is_set)
{
vlib_cli_output (vm, "state not set!");
- return 0;
+ goto done;
}
vnet_lisp_map_register_enable_disable (is_enabled);
- return 0;
+
+done:
+ unformat_free (line_input);
+
+ return error;
}
/* *INDENT-OFF* */
unformat_input_t _line_input, *line_input = &_line_input;
u8 is_enabled = 0;
u8 is_set = 0;
+ clib_error_t *error = NULL;
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
- return 0;
+ return clib_error_return (0, "expected enable | disable");
while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
{
{
vlib_cli_output (vm, "parse error: '%U'", format_unformat_error,
line_input);
- return 0;
+ goto done;
}
}
if (!is_set)
{
vlib_cli_output (vm, "state not set!");
- return 0;
+ goto done;
}
vnet_lisp_rloc_probe_enable_disable (is_enabled);
- return 0;
+
+done:
+ unformat_free (line_input);
+
+ return error;
}
/* *INDENT-OFF* */
lisp_cp_main_t *lcm = vnet_lisp_cp_get_main ();
uword *vni_table = 0;
u8 is_l2 = 0;
+ clib_error_t *error = NULL;
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
is_l2 = 0;
}
else
- return clib_error_return (0, "parse error: '%U'",
- format_unformat_error, line_input);
+ {
+ error = clib_error_return (0, "parse error: '%U'",
+ format_unformat_error, line_input);
+ goto done;
+ }
}
if (!vni_table)
{
vlib_cli_output (vm, "Error: expected l2|l3 param!\n");
- return 0;
+ goto done;
}
vlib_cli_output (vm, "%=10s%=10s", "VNI", is_l2 ? "BD" : "VRF");
}));
/* *INDENT-ON* */
- return 0;
+done:
+ unformat_free (line_input);
+
+ return error;
}
/* *INDENT-OFF* */
u32 ls_index = 0;
int rv = 0;
- memset (&locator, 0, sizeof (locator));
- memset (a, 0, sizeof (a[0]));
+ clib_memset (&locator, 0, sizeof (locator));
+ clib_memset (a, 0, sizeof (a[0]));
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
- return 0;
+ return clib_error_return (0, "missing parameters");
while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
{
&locator.weight))
{
locator.local = 1;
+ locator.state = 1;
vec_add1 (locators, locator);
}
else
}
}
+ vec_terminate_c_string (locator_set_name);
a->name = locator_set_name;
a->locators = locators;
a->is_add = is_add;
vec_free (locators);
if (locator_set_name)
vec_free (locator_set_name);
+ unformat_free (line_input);
+
return error;
}
vnet_lisp_add_del_locator_set_args_t _a, *a = &_a;
u32 ls_index = 0;
- memset (&locator, 0, sizeof (locator));
- memset (a, 0, sizeof (a[0]));
+ clib_memset (&locator, 0, sizeof (locator));
+ clib_memset (a, 0, sizeof (a[0]));
/* Get a line of input. */
if (!unformat_user (input, unformat_line_input, line_input))
done:
vec_free (locators);
vec_free (locator_set_name);
+ unformat_free (line_input);
+
return error;
}
}
done:
+ unformat_free (line_input);
+
return error;
}
}
}
+ vec_terminate_c_string (locator_set_name);
a->is_add = is_add;
a->locator_set_name = locator_set_name;
rv = vnet_lisp_add_del_mreq_itr_rlocs (a);
is_add ? "add" : "delete");
}
+done:
vec_free (locator_set_name);
+ unformat_free (line_input);
-done:
return error;
-
}
/* *INDENT-OFF* */
else if (unformat (line_input, "disable"))
is_add = 0;
else
- return clib_error_return (0, "parse error");
+ {
+ error = clib_error_return (0, "parse error");
+ goto done;
+ }
}
if (!ip_set)
}
done:
+ unformat_free (line_input);
+
return error;
}