From c321cc07607cfe4215fc90e426ae4491fca4c49c Mon Sep 17 00:00:00 2001 From: Adrian Reber Date: Thu, 22 Nov 2018 13:44:03 +0000 Subject: [PATCH] Fix kerndat_link_nsid() on systems with more than 10 interfaces On a system with more than 10 network interfaces the link_nsid check fails: $ criu check --feature link_nsid Warn (criu/cr-check.c:1237): NSID isn't supported The function kerndat_link_nsid() uses: nde.ifindex = 10; This fails as there is already an interface with ifindex 10. This patch moves the creation of the socket into the second network namespace and the feature check succeeds. Suggested-by: Jiri Benc Signed-off-by: Adrian Reber Signed-off-by: Andrei Vagin --- criu/net.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/criu/net.c b/criu/net.c index ec66d1e6c3..c1a6e3094f 100644 --- a/criu/net.c +++ b/criu/net.c @@ -3148,12 +3148,6 @@ int kerndat_link_nsid() }; int nsfd, sk, ret; - sk = socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); - if (sk < 0) { - pr_perror("Unable to create a netlink socket"); - exit(1); - } - if (unshare(CLONE_NEWNET)) { pr_perror("Unable create a network namespace"); exit(1); @@ -3168,6 +3162,12 @@ int kerndat_link_nsid() exit(1); } + sk = socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); + if (sk < 0) { + pr_perror("Unable to create a netlink socket"); + exit(1); + } + nde.type = ND_TYPE__VETH; nde.name = "veth"; nde.ifindex = 10;