diff options
author | Cyrill Gorcunov <gorcunov@gmail.com> | 2018-06-21 19:35:23 +0300 |
---|---|---|
committer | Andrei Vagin <avagin@virtuozzo.com> | 2018-06-22 00:33:22 +0300 |
commit | b75d898bcb368170b4c54b09353638a16cd0e482 (patch) | |
tree | 3ca09d1181ec4ec1a8ebd464ef63d53245c36725 | |
parent | 1e35bd8213f520dd4c6cf37ee9d10230c1bdfd2e (diff) |
net: veth -- Don't force to create master peer index if no nsid
In case if master peer of veth device is laying inside
node root net-ns we should not request device index
but rather allow the kernel to number it automatically.
When there is separate net-ns for master peer it should
be safe to request an index though.
Signed-off-by: Cyrill Gorcunov <gorcunov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
-rw-r--r-- | criu/net.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/criu/net.c b/criu/net.c index 106a0b418..fdcc019d5 100644 --- a/criu/net.c +++ b/criu/net.c @@ -1251,7 +1251,17 @@ static int veth_link_info(struct ns_id *ns, struct net_link *link, struct newlin peer_data = NLMSG_TAIL(&req->h); memset(&ifm, 0, sizeof(ifm)); - ifm.ifi_index = nde->peer_ifindex; + /* + * Peer index might lay on the node root net namespace, + * where the device index may be already borrowed by + * some other device, so we should ignore it. + * + * Still if peer is laying in some other net-namespace, + * we should recreate the device index as well as the + * as we do for the master peer end. + */ + if (nde->has_peer_nsid) + ifm.ifi_index = nde->peer_ifindex; addattr_l(&req->h, sizeof(*req), VETH_INFO_PEER, &ifm, sizeof(ifm)); veth_peer_info(link, req, ns, ns_fd); |