[CRIU] [PATCH v3 7/7] restore netns ipv4 conf all/default
Pavel Emelyanov
xemul at parallels.com
Tue Oct 7 04:56:42 PDT 2014
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.
> if (!ret)
> ret = restore_ifaddr(pid);
> if (!ret)
>
More information about the CRIU
mailing list