[CRIU] [PATCH v4 6/8] restore netns ipv4 conf all/default
Pavel Tikhomirov
ptikhomirov at parallels.com
Wed Oct 8 06:21:40 PDT 2014
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 c385363..30b9e4c 100644
--- a/net.c
+++ b/net.c
@@ -603,6 +603,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("default", netns->def_conf, CTL_WRITE);
+ if (ret < 0)
+ goto err;
+ ret = ipv4_conf_op("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";
@@ -677,7 +709,9 @@ int prepare_net_ns(int pid)
{
int ret;
- ret = restore_links(pid);
+ ret = restore_netns_conf(pid);
+ if (!ret)
+ ret = restore_links(pid);
if (!ret)
ret = restore_ifaddr(pid);
if (!ret)
--
1.9.3
More information about the CRIU
mailing list