mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-09 18:50:39 +00:00
lib: Delete the entire access-list only if there are no more entries
When you enter the access-list with the same sequence number but with a different prefix AND access-list has only a single entry, then the entry is deleted and the whole access-list is deleted. That means that "replace entry" never be re-inserted. With fix: ``` ~# vtysh -c 'c' -c 'access-list 1 seq 10 permit 127.0.0.10/32' ~# vtysh -c 'sh run' | grep access-list access-list 1 seq 10 permit 127.0.0.10/32 ~# vtysh -c 'c' -c 'access-list 1 seq 10 permit 127.0.0.20/32' ~# vtysh -c 'sh run' | grep access-list access-list 1 seq 10 permit 127.0.0.20/32 ~# vtysh -c 'c' -c 'access-list 1 seq 11 permit 127.0.0.11/32' ~# vtysh -c 'sh run' | grep access-list access-list 1 seq 10 permit 127.0.0.20/32 access-list 1 seq 11 permit 127.0.0.11/32 ~# vtysh -c 'c' -c 'no access-list 1 seq 10 permit 127.0.0.20/32' ~# vtysh -c 'sh run' | grep access-list access-list 1 seq 11 permit 127.0.0.11/32 ~# ``` Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
This commit is contained in:
parent
7351b95754
commit
7d16d76f4c
@ -451,6 +451,7 @@ static void access_list_filter_delete(struct access_list *access,
|
|||||||
struct filter *filter)
|
struct filter *filter)
|
||||||
{
|
{
|
||||||
struct access_master *master;
|
struct access_master *master;
|
||||||
|
struct filter *replace = filter;
|
||||||
|
|
||||||
master = access->master;
|
master = access->master;
|
||||||
|
|
||||||
@ -472,7 +473,7 @@ static void access_list_filter_delete(struct access_list *access,
|
|||||||
(*master->delete_hook)(access);
|
(*master->delete_hook)(access);
|
||||||
|
|
||||||
/* If access_list becomes empty delete it from access_master. */
|
/* If access_list becomes empty delete it from access_master. */
|
||||||
if (access_list_empty(access))
|
if (access_list_empty(access) && !replace)
|
||||||
access_list_delete(access);
|
access_list_delete(access);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user