]> git.proxmox.com Git - mirror_lxc.git/commitdiff
network: use correct network device name
authorChristian Brauner <christian.brauner@ubuntu.com>
Fri, 1 Sep 2017 17:34:43 +0000 (19:34 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 1 Sep 2017 19:36:52 +0000 (21:36 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/network.c

index 85b25961edb25f9aeaa9552de26e96386f62abe1..1e96c3a68bbea2d73983c548e964c18e42205a36 100644 (file)
@@ -2232,6 +2232,7 @@ static int lxc_delete_network_unpriv_exec(const char *lxcpath, char *lxcname,
        }
 
        if (child == 0) {
+               char *hostveth;
                int ret;
 
                close(pipefd[0]);
@@ -2245,7 +2246,11 @@ static int lxc_delete_network_unpriv_exec(const char *lxcpath, char *lxcname,
                        exit(EXIT_FAILURE);
                }
 
-               if (netdev->priv.veth_attr.veth1[0] == '\0') {
+               if (netdev->priv.veth_attr.pair[0] != '\0')
+                       hostveth = netdev->priv.veth_attr.pair;
+               else
+                       hostveth = netdev->priv.veth_attr.veth1;
+               if (hostveth[0] == '\0') {
                        SYSERROR("Host side veth device name is missing");
                        exit(EXIT_FAILURE);
                }
@@ -2257,10 +2262,10 @@ static int lxc_delete_network_unpriv_exec(const char *lxcpath, char *lxcname,
                }
 
                INFO("Execing lxc-user-nic delete %s %s %s veth %s %s", lxcpath,
-                    lxcname, netns_path, netdev->link, netdev->priv.veth_attr.veth1);
+                    lxcname, netns_path, netdev->link, hostveth);
                execlp(LXC_USERNIC_PATH, LXC_USERNIC_PATH, "delete", lxcpath,
-                      lxcname, netns_path, "veth", netdev->link,
-                      netdev->priv.veth_attr.veth1, (char *)NULL);
+                      lxcname, netns_path, "veth", netdev->link, hostveth,
+                      (char *)NULL);
                SYSERROR("Failed to exec lxc-user-nic.");
                exit(EXIT_FAILURE);
        }
@@ -2355,14 +2360,20 @@ bool lxc_delete_network_unpriv(struct lxc_handler *handler)
                if (!is_ovs_bridge(netdev->link))
                        continue;
 
+               if (netdev->priv.veth_attr.pair[0] != '\0')
+                       hostveth = netdev->priv.veth_attr.pair;
+               else
+                       hostveth = netdev->priv.veth_attr.veth1;
+               if (hostveth[0] == '\0')
+                       continue;
+
                ret = lxc_delete_network_unpriv_exec(handler->lxcpath,
                                                     handler->name, netdev,
                                                     netns_path);
                if (ret < 0) {
                        deleted_all = false;
                        WARN("Failed to remove port \"%s\" from openvswitch "
-                            "bridge \"%s\"",
-                            netdev->priv.veth_attr.veth1, netdev->link);
+                            "bridge \"%s\"", hostveth, netdev->link);
                        continue;
                }
                INFO("Removed interface \"%s\" from \"%s\"", hostveth,