Skip to contentSkip to conversation

refuse c/r with nested network namespaces

RFC PATCH In review Serge E. Hallyn 2 participants 2 messages Dec 15, 2009 – Dec 23, 2009 1 message not in the archive

lore
Share & tools
lore
#0 lore raw

RFC PATCH 1/1 refuse c/r with nested network namespaces

...because we can't restore network devices in private namespaces anyway. This leaves userspace to set up network devices however it wants at restart, and leaves it free to restart the application either in the global or a private (configured) network namespace.

---
 kernel/nsproxy.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
kernel/nsproxy.c +7 -0
index c91b725..851777a 100644
@@ -291,6 +291,13 @@ static int do_checkpoint_ns(struct ckpt_ctx *ctx, struct nsproxy *nsproxy)
 
 	/* TODO: Write other namespaces here */
 
+	/* We do not support >1 private netns */
+	ret = -EINVAL;
+	if (nsproxy->net_ns != ctx->root_nsproxy->net_ns) {
+		ckpt_err(ctx, ret, "%(T)Nested net_ns unsupported\n");
+		goto out;
+	}
+
 	ret = ckpt_write_obj(ctx, &h->h);
  out:
 	ckpt_hdr_put(ctx, h);
Signature · 1 line
1.6.1

A message that is not in the archive (sent off-list or not yet received): 20091215215854.GA26783-r/[email protected]

#2 lore raw

For v19-rc3.

Quoted 29 lines · Serge E. Hallyn

...because we can't restore network devices in private namespaces anyway. This leaves userspace to set up network devices however it wants at restart, and leaves it free to restart the application either in the global or a private (configured) network namespace.

---
 kernel/nsproxy.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
kernel/nsproxy.c +7 -0
index c91b725..851777a 100644
@@ -291,6 +291,13 @@ static int do_checkpoint_ns(struct ckpt_ctx *ctx, struct nsproxy *nsproxy)
 
 	/* TODO: Write other namespaces here */
 
+	/* We do not support >1 private netns */
+	ret = -EINVAL;
+	if (nsproxy->net_ns != ctx->root_nsproxy->net_ns) {
+		ckpt_err(ctx, ret, "%(T)Nested net_ns unsupported\n");
+		goto out;
+	}
+
 	ret = ckpt_write_obj(ctx, &h->h);
  out:
 	ckpt_hdr_put(ctx, h);