[CRIU] [PATCH v3 7/7] restore netns ipv4 conf all/default

Pavel Emelyanov xemul at parallels.com
Wed Oct 8 05:52:04 PDT 2014


On 10/08/2014 04:35 PM, Pavel Tikhomirov wrote:
> 
> On 10/08/2014 04:15 PM, Pavel Emelyanov wrote:
>> On 10/08/2014 11:04 AM, Pavel Tikhomirov wrote:
>>> On 10/07/2014 03:56 PM, Pavel Emelyanov wrote:
>>>> On 10/01/2014 02:42 PM, Pavel Tikhomirov wrote:
>>>>> restore order:
>>>>> 1. default
>>>>> 2. all
>>>>> 3. devices
>>>>>
>>>>> Signed-off-by: Pavel Tikhomirov<ptikhomirov at parallels.com>
>>>>> ---
>>>>>    net.c | 36 +++++++++++++++++++++++++++++++++++-
>>>>>    1 file changed, 35 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/net.c b/net.c
>>>>> index 7a80973..a164795 100644
>>>>> --- a/net.c
>>>>> +++ b/net.c
>>>>> @@ -616,6 +616,38 @@ static inline int restore_iptables(int pid)
>>>>>    	return ret;
>>>>>    }
>>>>>    
>>>>> +static int restore_netns_conf(int pid)
>>>>> +{
>>>>> +	int ret;
>>>>> +	int fd;
>>>>> +	NetnsEntry *netns;
>>>>> +
>>>>> +	fd = open_image(CR_FD_NETNS, O_RSTR, pid);
>>>>> +	if (fd < 0) {
>>>>> +		pr_err("Can not open netns image\n");
>>>>> +		return -1;
>>>>> +	}
>>>>> +
>>>>> +	ret = pb_read_one(fd, &netns, PB_NETNS);
>>>>> +	if (ret < 0) {
>>>>> +		pr_err("Can not read netns object\n");
>>>>> +		close(fd);
>>>>> +		return -1;
>>>>> +	}
>>>>> +
>>>>> +	ret = ipv4_conf_op("net/ipv4/conf/default", netns->def_conf, CTL_WRITE);
>>>>> +	if (ret < 0)
>>>>> +		goto err;
>>>>> +	ret = ipv4_conf_op("net/ipv4/conf/all", netns->all_conf, CTL_WRITE);
>>>>> +err:
>>>>> +	netns_entry__free_unpacked(netns, NULL);
>>>>> +	close(fd);
>>>>> +	if (ret < 0)
>>>>> +		return -1;
>>>>> +
>>>>> +	return 0;
>>>>> +}
>>>>> +
>>>>>    static int mount_ns_sysfs(void)
>>>>>    {
>>>>>    	char sys_mount[] = "crtools-sys.XXXXXX";
>>>>> @@ -690,7 +722,9 @@ int prepare_net_ns(int pid)
>>>>>    {
>>>>>    	int ret;
>>>>>    
>>>>> -	ret = restore_links(pid);
>>>>> +	ret = restore_netns_conf(pid);
>>>>> +	if (!ret)
>>>>> +		ret = restore_links(pid);
>>>> Since we restore link confs after default and all we can make
>>>> an optimisation -- don't restore the device values that match
>>>> the "default" set. Please implement.
>>> This is, I think, for devices except "lo", because it is created along
>>> with a namespace, right?
>> For lo we can skip this for now, yes.
> 
> Shall I make it as separate patch - optimization?

OK



More information about the CRIU mailing list