]> git.puffer.fish Git - mirror/frr.git/commit
zebra: Fix to avoid two Vrfs with same table ids 16379/head
authorRajasekar Raja <rajasekarr@nvidia.com>
Fri, 5 Jul 2024 23:02:12 +0000 (16:02 -0700)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Sun, 14 Jul 2024 00:14:24 +0000 (00:14 +0000)
commit09bfdc3f8199d7559f7bf192d39a67176b504a21
treed11decdbda1837b08657979e613d74f17601a417
parent641ebd910df027548e6e52b2c46e9d8178ad1202
zebra: Fix to avoid two Vrfs with same table ids

During internal testing, when the following sequence is followed, two
non default vrfs end up pointing to the same table-id

 - Initially vrf201 has table id 1002
 - ip link add dev vrf202 type vrf table 1002
 - ip link set dev vrf202 up
 - ip link set dev <intrerface> master vrf202

This will ideally lead to zebra exit since this is a misconfiguration as
expected.

However if we perform a restart frr.service at this point, we end up
having two vrfs pointing to same table-id and bad things can happen.
This is because in the interface_vrf_change, we incorrectly check for
vrf_lookup_by_id() to evaluate if there is a misconfig. This works well
for a non restart case but not for the startup case.

root@mlx-3700-20:mgmt:/var/log/frr# sudo vtysh -c "sh vrf"
vrf mgmt id 37 table 1001
vrf vrf201 id 46 table 1002
vrf vrf202 id 59 table 1002 >>>>

Fix: in all cases of misconfiguration, exit zebra as expected.

Ticket :#3970414

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
(cherry picked from commit c77e15710d6a3a9be71f41a9ce608f06b2795dfb)
zebra/interface.c