summaryrefslogtreecommitdiff
path: root/zebra/zebra_netns_notify.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/zebra_netns_notify.c')
-rw-r--r--zebra/zebra_netns_notify.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/zebra/zebra_netns_notify.c b/zebra/zebra_netns_notify.c
index f9beb32ac4..30f850597c 100644
--- a/zebra/zebra_netns_notify.c
+++ b/zebra/zebra_netns_notify.c
@@ -70,7 +70,7 @@ static void zebra_ns_notify_create_context_from_entry_name(const char *name)
char *netnspath = ns_netns_pathname(NULL, name);
struct vrf *vrf;
int ret;
- ns_id_t ns_id;
+ ns_id_t ns_id, ns_id_external;
if (netnspath == NULL)
return;
@@ -80,8 +80,9 @@ static void zebra_ns_notify_create_context_from_entry_name(const char *name)
ns_id = zebra_ns_id_get(netnspath);
if (zserv_privs.change(ZPRIVS_LOWER))
zlog_err("Can't lower privileges");
+ ns_id_external = ns_map_nsid_with_external(ns_id, true);
/* if VRF with NS ID already present */
- vrf = vrf_lookup_by_id((vrf_id_t)ns_id);
+ vrf = vrf_lookup_by_id((vrf_id_t)ns_id_external);
if (vrf) {
zlog_warn(
"NS notify : same NSID used by VRF %s. Ignore NS %s creation",
@@ -90,15 +91,18 @@ static void zebra_ns_notify_create_context_from_entry_name(const char *name)
}
if (vrf_handler_create(NULL, name, &vrf) != CMD_SUCCESS) {
zlog_warn("NS notify : failed to create VRF %s", name);
+ ns_map_nsid_with_external(ns_id, false);
return;
}
if (zserv_privs.change(ZPRIVS_RAISE))
zlog_err("Can't raise privileges");
- ret = vrf_netns_handler_create(NULL, vrf, netnspath, ns_id);
+ ret = vrf_netns_handler_create(NULL, vrf, netnspath,
+ ns_id_external, ns_id);
if (zserv_privs.change(ZPRIVS_LOWER))
zlog_err("Can't lower privileges");
if (ret != CMD_SUCCESS) {
zlog_warn("NS notify : failed to create NS %s", netnspath);
+ ns_map_nsid_with_external(ns_id, false);
return;
}
zlog_info("NS notify : created VRF %s NS %s", name, netnspath);