Revert "nspawn: explicitly remove veth links after use (#3111)"
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 3 May 2016 17:46:40 +0000 (13:46 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 3 May 2016 17:53:00 +0000 (13:53 -0400)
This reverts commit d2773e59de3dd970d861e9f996bc48de20ef4314.

Merge got squashed by mistake.

src/libsystemd/sd-netlink/rtnl-message.c
src/nspawn/nspawn-network.c
src/nspawn/nspawn-network.h
src/nspawn/nspawn.c

index f251536..255526b 100644 (file)
@@ -402,6 +402,7 @@ int sd_rtnl_message_new_link(sd_netlink *rtnl, sd_netlink_message **ret,
         int r;
 
         assert_return(rtnl_message_type_is_link(nlmsg_type), -EINVAL);
+        assert_return(nlmsg_type != RTM_DELLINK || index > 0, -EINVAL);
         assert_return(ret, -EINVAL);
 
         r = message_new(rtnl, ret, nlmsg_type);
index f2b7e4d..74a0ae8 100644 (file)
@@ -538,50 +538,3 @@ int veth_extra_parse(char ***l, const char *p) {
         a = b = NULL;
         return 0;
 }
-
-static int remove_one_veth_link(sd_netlink *rtnl, const char *name) {
-        _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *m = NULL;
-        int r;
-
-        if (isempty(name))
-                return 0;
-
-        r = sd_rtnl_message_new_link(rtnl, &m, RTM_DELLINK, 0);
-        if (r < 0)
-                return log_error_errno(r, "Failed to allocate netlink message: %m");
-
-        r = sd_netlink_message_append_string(m, IFLA_IFNAME, name);
-        if (r < 0)
-                return log_error_errno(r, "Failed to add netlink interface name: %m");
-
-        r = sd_netlink_call(rtnl, m, 0, NULL);
-        if (r == -ENODEV) /* Already gone */
-                return 0;
-        if (r < 0)
-                return log_error_errno(r, "Failed to remove veth interface %s: %m", name);
-
-        return 1;
-}
-
-int remove_veth_links(const char *primary, char **pairs) {
-        _cleanup_(sd_netlink_unrefp) sd_netlink *rtnl = NULL;
-        char **a, **b;
-        int r;
-
-        /* In some cases the kernel might pin the veth links between host and container even after the namespace
-         * died. Hence, let's better remove them explicitly too. */
-
-        if (isempty(primary) && strv_isempty(pairs))
-                return 0;
-
-        r = sd_netlink_open(&rtnl);
-        if (r < 0)
-                return log_error_errno(r, "Failed to connect to netlink: %m");
-
-        remove_one_veth_link(rtnl, primary);
-
-        STRV_FOREACH_PAIR(a, b, pairs)
-                remove_one_veth_link(rtnl, *a);
-
-        return 0;
-}
index c5036ab..9ab1606 100644 (file)
@@ -34,5 +34,3 @@ int setup_ipvlan(const char *machine_name, pid_t pid, char **ifaces);
 int move_network_interfaces(pid_t pid, char **ifaces);
 
 int veth_extra_parse(char ***l, const char *p);
-
-int remove_veth_links(const char *primary, char **pairs);
index 3fc6cc9..18fb019 100644 (file)
@@ -3981,7 +3981,6 @@ int main(int argc, char *argv[]) {
                 }
 
                 expose_port_flush(arg_expose_ports, &exposed);
-                (void) remove_veth_links(veth_name, arg_network_veth_extra);
         }
 
 finish:
@@ -4014,7 +4013,6 @@ finish:
         }
 
         expose_port_flush(arg_expose_ports, &exposed);
-        (void) remove_veth_links(veth_name, arg_network_veth_extra);
 
         free(arg_directory);
         free(arg_template);