mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 01:27:51 +00:00
plist: Delete prefix-list by sequence number
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
This commit is contained in:
parent
22b01311b5
commit
31b4b606a8
38
lib/plist.c
38
lib/plist.c
@ -998,22 +998,36 @@ static int vty_prefix_list_uninstall(struct vty *vty, afi_t afi,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We must have, at a minimum, both the type and prefix here */
|
|
||||||
if ((typestr == NULL) || (prefix == NULL)) {
|
|
||||||
vty_out(vty, "%% Both prefix and type required\n");
|
|
||||||
return CMD_WARNING_CONFIG_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check sequence number. */
|
/* Check sequence number. */
|
||||||
if (seq)
|
if (seq)
|
||||||
seqnum = (int64_t)atol(seq);
|
seqnum = (int64_t)atol(seq);
|
||||||
|
|
||||||
|
/* Sequence number specified, but nothing else. */
|
||||||
|
if (seq && typestr == NULL && prefix == NULL && ge == NULL
|
||||||
|
&& le == NULL) {
|
||||||
|
pentry = prefix_seq_check(plist, seqnum);
|
||||||
|
|
||||||
|
if (pentry == NULL) {
|
||||||
|
vty_out(vty,
|
||||||
|
"%% Can't find prefix-list %s with sequence number %lu\n",
|
||||||
|
name, seqnum);
|
||||||
|
return CMD_WARNING_CONFIG_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
prefix_list_entry_delete(plist, pentry, 1);
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/* ge and le number */
|
/* ge and le number */
|
||||||
if (ge)
|
if (ge)
|
||||||
genum = atoi(ge);
|
genum = atoi(ge);
|
||||||
if (le)
|
if (le)
|
||||||
lenum = atoi(le);
|
lenum = atoi(le);
|
||||||
|
|
||||||
|
/* We must have, at a minimum, both the type and prefix here */
|
||||||
|
if ((typestr == NULL) || (prefix == NULL))
|
||||||
|
return CMD_WARNING_CONFIG_FAILED;
|
||||||
|
|
||||||
/* Check of filter type. */
|
/* Check of filter type. */
|
||||||
if (strncmp("permit", typestr, 1) == 0)
|
if (strncmp("permit", typestr, 1) == 0)
|
||||||
type = PREFIX_PERMIT;
|
type = PREFIX_PERMIT;
|
||||||
@ -1375,6 +1389,17 @@ DEFPY (no_ip_prefix_list,
|
|||||||
action, dest, ge_str, le_str);
|
action, dest, ge_str, le_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFPY(no_ip_prefix_list_seq, no_ip_prefix_list_seq_cmd,
|
||||||
|
"no ip prefix-list WORD seq (1-4294967295)",
|
||||||
|
NO_STR IP_STR PREFIX_LIST_STR
|
||||||
|
"Name of a prefix list\n"
|
||||||
|
"sequence number of an entry\n"
|
||||||
|
"Sequence number\n")
|
||||||
|
{
|
||||||
|
return vty_prefix_list_uninstall(vty, AFI_IP, prefix_list, seq_str,
|
||||||
|
NULL, NULL, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
DEFPY (no_ip_prefix_list_all,
|
DEFPY (no_ip_prefix_list_all,
|
||||||
no_ip_prefix_list_all_cmd,
|
no_ip_prefix_list_all_cmd,
|
||||||
"no ip prefix-list WORD",
|
"no ip prefix-list WORD",
|
||||||
@ -2059,6 +2084,7 @@ static void prefix_list_init_ipv4(void)
|
|||||||
|
|
||||||
install_element(CONFIG_NODE, &ip_prefix_list_cmd);
|
install_element(CONFIG_NODE, &ip_prefix_list_cmd);
|
||||||
install_element(CONFIG_NODE, &no_ip_prefix_list_cmd);
|
install_element(CONFIG_NODE, &no_ip_prefix_list_cmd);
|
||||||
|
install_element(CONFIG_NODE, &no_ip_prefix_list_seq_cmd);
|
||||||
install_element(CONFIG_NODE, &no_ip_prefix_list_all_cmd);
|
install_element(CONFIG_NODE, &no_ip_prefix_list_all_cmd);
|
||||||
|
|
||||||
install_element(CONFIG_NODE, &ip_prefix_list_description_cmd);
|
install_element(CONFIG_NODE, &ip_prefix_list_description_cmd);
|
||||||
|
Loading…
Reference in New Issue
Block a user