* \0
*/
char netns_path[6 + LXC_NUMSTRLEN64 + 4 + LXC_NUMSTRLEN64 + 1];
- bool deleted_all = true;
-
- if (handler->am_root)
- return true;
*netns_path = '\0';
handler->name, netdev,
netns_path);
if (ret < 0) {
- deleted_all = false;
WARN("Failed to remove port \"%s\" from openvswitch "
"bridge \"%s\"", hostveth, netdev->link);
continue;
netdev->link);
}
- return deleted_all;
+ return true;
}
int lxc_create_network_priv(struct lxc_handler *handler)
int ret;
struct lxc_list *iterator;
struct lxc_list *network = &handler->conf->network;
- bool deleted_all = true;
-
- if (!handler->am_root)
- return true;
lxc_list_for_each(iterator, network) {
char *hostveth = NULL;
netdev->name[0] != '\0' ? netdev->name : "(null)",
netdev->ifindex);
} else if (ret < 0) {
- deleted_all = false;
WARN("Failed to remove interface \"%s\" with "
"index %d: %s",
netdev->name[0] != '\0' ? netdev->name : "(null)",
ret = lxc_netdev_delete_by_name(hostveth);
if (ret < 0) {
- deleted_all = false;
WARN("Failed to remove interface \"%s\" from \"%s\": %s",
hostveth, netdev->link, strerror(-ret));
continue;
netdev->priv.veth_attr.veth1[0] = '\0';
}
- return deleted_all;
+ return true;
}
int lxc_requests_empty_network(struct lxc_handler *handler)
return 0;
}
+
+void lxc_delete_network(struct lxc_handler *handler)
+{
+ bool bret;
+
+ if (handler->am_root)
+ bret = lxc_delete_network_priv(handler);
+ else
+ bret = lxc_delete_network_unpriv(handler);
+ if (!bret)
+ DEBUG("Failed to delete network devices");
+ else
+ DEBUG("Deleted network devices");
+}
char *lxcname,
struct lxc_list *network,
pid_t pid);
-extern bool lxc_delete_network_priv(struct lxc_handler *handler);
-extern bool lxc_delete_network_unpriv(struct lxc_handler *handler);
+extern void lxc_delete_network(struct lxc_handler *handler);
extern int lxc_find_gateway_addresses(struct lxc_handler *handler);
extern int lxc_create_network_unpriv(const char *lxcpath, char *lxcname,
struct lxc_list *network, pid_t pid);
if (cgroups_connected)
cgroup_disconnect();
- if (handler->clone_flags & CLONE_NEWNET) {
- DEBUG("Tearing down network devices");
- if (!lxc_delete_network_priv(handler))
- DEBUG("Failed tearing down network devices");
-
- if (!lxc_delete_network_unpriv(handler))
- DEBUG("Failed tearing down network devices");
- }
+ if (handler->clone_flags & CLONE_NEWNET)
+ lxc_delete_network(handler);
out_abort:
lxc_abort(name, handler);
err = lxc_error_set_and_log(handler->pid, status);
out_fini:
- DEBUG("Tearing down network devices");
- if (!lxc_delete_network_priv(handler))
- DEBUG("Failed tearing down network devices");
-
- if (!lxc_delete_network_unpriv(handler))
- DEBUG("Failed tearing down network devices");
-
- if (handler->netnsfd >= 0) {
- close(handler->netnsfd);
- handler->netnsfd = -1;
- }
+ lxc_delete_network(handler);
out_detach_blockdev:
detach_block_device(handler->conf);