Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
When `ip link del vrf1`, `zebra` have wrongly forgot it is a vrf type. It thought it is a normal interface. ``` ZEBRA: [KMXEB-K771Y] netlink_parse_info: netlink-listen (NS 0) type RTM_DELLINK(17), len=588, seq=0, pid=0 ZEBRA: [TDJW2-B9KJW] RTM_DELLINK for vrf1(93) <- Wrongly as normal interface, not vrf ZEBRA: [WEEJX-M4HA0] interface vrf1 vrf vrf1(93) index 93 is now inactive. ZEBRA: [NXAHW-290AC] MESSAGE: ZEBRA_INTERFACE_DELETE vrf1 vrf vrf1(93) ZEBRA: [H97XA-ABB3A] MESSAGE: ZEBRA_INTERFACE_VRF_UPDATE/DEL vrf1 VRF Id 93 -> 0 ZEBRA: [HP8PZ-7D6D2] MESSAGE: ZEBRA_INTERFACE_VRF_UPDATE/ADD vrf1 VRF Id 93 -> 0 <- ZEBRA: [Y6R2N-EF2N4] interface vrf1 is being deleted from the system ZEBRA: [KNFMR-AFZ53] RTM_DELLINK for VRF vrf1(93) ZEBRA: [P0CZ5-RF5FH] VRF vrf1 id 93 is now inactive ZEBRA: [XC3P3-1DG4D] MESSAGE: ZEBRA_VRF_DELETE vrf1 ZEBRA: [ZMS2F-6K837] VRF vrf1 id 4294967295 deleted OSPF: [JKWE3-97M3J] Zebra: interface add vrf1 vrf default[0] index 0 flags 480 metric 0 mtu 65575 speed 0 <- Wrongly add interface ``` It triggers problems on clients. It will kept as an normal interface in 'show run' after even completely removed, as said in PR #13388. The clients will accept this wrong interface as normal, not vrf type: ``` interface vrf1 exit ``` Or ``` interface vrf1 ip ospf network broadcast exit ``` The root cause is that the `ifp->status`'s `ZEBRA_INTERFACE_VRF_LOOPBACK` flag of this vrf is cleared too early. After that clear, `zebra` ( and then clients ) will take it as normal interface. So, move it from "vrf1" to "default" VRF, then an unexpected interface with wrong `ifp->status` is created. Two changes to fix it: 1. Put the deletion of this flag at the last. Aim at that clients can get correct `ifp->status`. 2. Skip the procedure of switching VRF for interfaces of vrf type Don't send `ZEBRA_INTERFACE_ADD` to clients when deleting vrf. Signed-off-by: anlan_cs <[email protected]>
- Loading branch information