diff --git a/lib/vrf.c b/lib/vrf.c index 1fb1b786c7..696ae3f48c 100644 --- a/lib/vrf.c +++ b/lib/vrf.c @@ -497,6 +497,16 @@ void vrf_init(int (*create)(struct vrf *), int (*enable)(struct vrf *), strlcpy(default_vrf->data.l.netns_name, VRF_DEFAULT_NAME, NS_NAMSIZ); + if (vrf_is_backend_netns()) { + struct ns *ns; + + strlcpy(default_vrf->data.l.netns_name, + VRF_DEFAULT_NAME, NS_NAMSIZ); + ns = ns_lookup(ns_get_default_id()); + ns->vrf_ctxt = (void *)default_vrf; + default_vrf->ns_ctxt = (void *)ns; + } + /* Enable the default VRF. */ if (!vrf_enable(default_vrf)) { flog_err(LIB_ERR_VRF_START, @@ -711,8 +721,6 @@ int vrf_is_mapped_on_netns(struct vrf *vrf) { if (!vrf || vrf->data.l.netns_name[0] == '\0') return 0; - if (vrf->vrf_id == VRF_DEFAULT) - return 0; return 1; }