[CRIU] [PATCH] Fix kerndat_link_nsid() on systems with more than 10 interfaces

Andrei Vagin avagin at gmail.com
Tue Dec 4 10:58:33 MSK 2018


Applied, thanks!

On Thu, Nov 22, 2018 at 01:44:03PM +0000, Adrian Reber wrote:
> 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