[CRIU] [PATCH] Fix kerndat_link_nsid() on systems with more than 10 interfaces
Adrian Reber
adrian at lisas.de
Thu Nov 22 16:44:03 MSK 2018
From: Adrian Reber <areber at redhat.com>
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 <jbenc at redhat.com>
Signed-off-by: Adrian Reber <areber at redhat.com>
---
criu/net.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/criu/net.c b/criu/net.c
index ec66d1e..c1a6e30 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;
--
1.8.3.1
More information about the CRIU
mailing list