]> git.puffer.fish Git - mirror/frr.git/commitdiff
zebra: zns context is filled in when vrf is enabled
authorPhilippe Guibert <philippe.guibert@6wind.com>
Fri, 22 Dec 2017 15:21:09 +0000 (16:21 +0100)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 27 Feb 2018 10:11:24 +0000 (11:11 +0100)
This commit is also a fix that avoids a VRF to be attached to the wrong
namespace context, at creation time. Because the VRF, at creation time
does not know yet the namespace where it will get its information.

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

index a3596a4263351f1a404c4e4fccfbcf3193bb5ca1..276687ca831bcac520b690331ba7ca31a7787c92 100644 (file)
@@ -91,12 +91,9 @@ static int zebra_vrf_new(struct vrf *vrf)
                zlog_info("VRF %s created, id %u", vrf->name, vrf->vrf_id);
 
        zvrf = zebra_vrf_alloc();
-       zvrf->zns = zebra_ns_lookup(
-               NS_DEFAULT); /* Point to the global (single) NS */
-       router_id_init(zvrf);
        vrf->info = zvrf;
        zvrf->vrf = vrf;
-
+       router_id_init(zvrf);
        return 0;
 }
 
@@ -117,6 +114,10 @@ static int zebra_vrf_enable(struct vrf *vrf)
                zlog_debug("VRF %s id %u is now active",
                           zvrf_name(zvrf), zvrf_id(zvrf));
 
+       if (vrf_is_backend_netns())
+               zvrf->zns = zebra_ns_lookup((ns_id_t)vrf->vrf_id);
+       else
+               zvrf->zns = zebra_ns_lookup(NS_DEFAULT);
        /* Inform clients that the VRF is now active. This is an
         * add for the clients.
         */