ip: fix fib and mfib locks 49/33749/6
authorNathan Skrzypczak <nathan.skrzypczak@gmail.com>
Fri, 17 Sep 2021 15:29:14 +0000 (17:29 +0200)
committerNeale Ranns <neale@graphiant.com>
Mon, 11 Oct 2021 12:04:03 +0000 (12:04 +0000)
commit275bd796346c3b1618170f4eda36b9a41ade9c87
tree197df1102b0a3981c6a875100f521806a170f45c
parentbd23b405fbe99034d75a46b060567e5adf62c04e
ip: fix fib and mfib locks

This patches fixes an issue that could cause
fib locks to underflow: if an API user deletes
a fib and quickly recreates it, the fib may not
have been actually deleted. As a result, the
lock would not be incremented on the create call
leading to the fib potentially disappearing
afterwards - or to the lock to underflow when
the fib is deleted again.

In order to keep the existing API semantics,
we use the locks with API and CLI source as flags.
This means we need to use a different counter
for the interface-related locks.

This also prevents an issue where an interface being
bound to a vrf via API and released via CLI could
mess up the lock counter.

Finally, this will help with cleaning up the
interface-related locks on interface deletion
in a later patch.

Type: fix

Change-Id: I93030a7660646d6dd179ddf27fe4e708aa11b90e
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
14 files changed:
src/plugins/gbp/gbp_itf.c
src/plugins/unittest/fib_test.c
src/plugins/unittest/mfib_test.c
src/plugins/unittest/session_test.c
src/vnet/fib/fib_table.c
src/vnet/interface_api.c
src/vnet/ip/ip.h
src/vnet/ip/ip_api.c
src/vnet/ip/lookup.c
src/vnet/mfib/mfib_types.h
src/vnet/mpls/interface.c
src/vnet/mpls/mpls.h
src/vnet/mpls/mpls_api.c
test/test_ip6_vrf_multi_instance.py