]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: avoid case where same interface pointer returned
authorPhilippe Guibert <philippe.guibert@6wind.com>
Fri, 4 May 2018 07:26:10 +0000 (09:26 +0200)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Fri, 4 May 2018 14:50:47 +0000 (16:50 +0200)
When checking for a duplicate interface in an other NETNS, one may find
an interface in default VRF. That interface may have been moved to that
default VRF, for further action. Prevent from doing any action at this
point.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
zebra/if_netlink.c

index beac8ffedb12b5d0401e69c675bdf3d25b003f62..7423e9237fe0cb56a24aea18d6ef07d7fa869fab 100644 (file)
@@ -1040,6 +1040,12 @@ static void if_netlink_check_ifp_instance_consistency(uint16_t cmd,
        other_ifp = if_lookup_by_name_not_ns(ns_id, ifp->name);
        if (!other_ifp)
                return;
+       /* because previous interface may be inactive,
+        * interface is moved back to default vrf
+        * then one may find the same pointer; ignore
+        */
+       if (other_ifp == ifp)
+               return;
        if ((cmd == RTM_NEWLINK)
            && (CHECK_FLAG(other_ifp->status, ZEBRA_INTERFACE_ACTIVE)))
                return;