mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-09 03:51: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 access_master *master;
|
||||
struct filter *replace = filter;
|
||||
|
||||
master = access->master;
|
||||
|
||||
@ -472,7 +473,7 @@ static void access_list_filter_delete(struct access_list *access,
|
||||
(*master->delete_hook)(access);
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user