]> git.puffer.fish Git - matthieu/frr.git/commit
*: remove ZEBRA_INTERFACE_VRF_UPDATE
authoranlan_cs <vic.lan@pica8.com>
Fri, 4 Mar 2022 13:52:27 +0000 (21:52 +0800)
committeranlan_cs <anlan_cs@tom.com>
Sat, 7 Oct 2023 02:06:39 +0000 (10:06 +0800)
commitb580c52698287c24e41b6c5b190c2ddddc336f4c
tree34f270ed0e4bc62a5ae7724f3dd07d3b91bec608
parentd6a9c7ec8776c6d937bc51c3cd4df1c1f59b5c58
*: remove ZEBRA_INTERFACE_VRF_UPDATE

Currently when one interface changes its VRF, zebra will send these messages to
all daemons in *order*:
    1) `ZEBRA_INTERFACE_DELETE` ( notify them delete from old VRF )
    2) `ZEBRA_INTERFACE_VRF_UPDATE` ( notify them move from old to new VRF )
    3) `ZEBRA_INTERFACE_ADD` ( notify them added into new VRF )

When daemons deal with `VRF_UPDATE`, they use
`zebra_interface_vrf_update_read()->if_lookup_by_name()`
to check the interface exist or not in old VRF. This check will always return
*NULL* because `DELETE` ( deleted from old VRF ) is already done, so can't
find this interface in old VRF.

Send `VRF_UPDATE` is redundant and unuseful. `DELETE` and `ADD` are enough,
they will deal with RB tree, so don't send this `VRF_UPDATE` message when
vrf changes.

Since all daemons have good mechanism to deal with changing vrf, and don't
use this `VRF_UPDATE` mechanism.  So, it is safe to completely remove
all the code with `VRF_UPDATE`.

Signed-off-by: anlan_cs <anlan_cs@tom.com>
16 files changed:
bfdd/ptm_adapter.c
bgpd/bgp_zebra.c
lib/log.c
lib/zclient.h
ospfd/ospf_zebra.c
pbrd/pbr_zebra.c
pimd/pim_zebra.c
ripd/rip_interface.c
ripd/rip_zebra.c
ripngd/ripng_interface.c
ripngd/ripng_zebra.c
ripngd/ripngd.h
zebra/interface.c
zebra/redistribute.c
zebra/zapi_msg.c
zebra/zapi_msg.h