From: Christian Brauner Date: Fri, 16 Jun 2017 14:39:32 +0000 (+0200) Subject: network: allow to unset by passing empty value X-Git-Tag: lxc-2.1.0~96^2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6bed0fb6008794fbee553dbbe54b9074beb1c755;p=thirdparty%2Flxc.git network: allow to unset by passing empty value Signed-off-by: Christian Brauner --- diff --git a/src/lxc/confile.c b/src/lxc/confile.c index f7fc200ff..60af0d6cd 100644 --- a/src/lxc/confile.c +++ b/src/lxc/confile.c @@ -662,11 +662,8 @@ static int set_config_network_type(const char *key, const char *value, { struct lxc_netdev *netdev; - /* If value is empty e.g. "lxc.network.type=", then clear the network - * from the config. - */ if (lxc_config_value_empty(value)) - return lxc_clear_config_network(lxc_conf); + return clr_config_network_type(key, lxc_conf, data); /* lxc.network.* without an index */ if (!data) @@ -902,6 +899,9 @@ static int set_network_link(const char *key, const char *value, { struct lxc_netdev *netdev; + if (lxc_config_value_empty(value)) + return clr_config_network_flags(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -963,6 +963,9 @@ static int set_config_network_link(const char *key, const char *value, struct lxc_list *it; int ret = 0; + if (lxc_config_value_empty(value)) + return clr_config_network_link(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -995,6 +998,9 @@ static int set_config_network_name(const char *key, const char *value, { struct lxc_netdev *netdev; + if (lxc_config_value_empty(value)) + return clr_config_network_script_down(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -1011,6 +1017,9 @@ static int set_config_network_veth_pair(const char *key, const char *value, { struct lxc_netdev *netdev; + if (lxc_config_value_empty(value)) + return clr_config_network_veth_pair(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -1028,6 +1037,9 @@ static int set_config_network_macvlan_mode(const char *key, const char *value, { struct lxc_netdev *netdev; + if (lxc_config_value_empty(value)) + return clr_config_network_name(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -1045,6 +1057,9 @@ static int set_config_network_hwaddr(const char *key, const char *value, struct lxc_netdev *netdev; char *new_value; + if (lxc_config_value_empty(value)) + return clr_config_network_hwaddr(key, lxc_conf, data); + new_value = strdup(value); if (!new_value) { SYSERROR("failed to strdup \"%s\"", value); @@ -1077,6 +1092,9 @@ static int set_config_network_vlan_id(const char *key, const char *value, { struct lxc_netdev *netdev; + if (lxc_config_value_empty(value)) + return clr_config_network_macvlan_mode(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -1096,6 +1114,9 @@ static int set_config_network_mtu(const char *key, const char *value, { struct lxc_netdev *netdev; + if (lxc_config_value_empty(value)) + return clr_config_network_vlan_id(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -1117,7 +1138,7 @@ static int set_config_network_ipv4(const char *key, const char *value, char *addr = NULL, *bcast = NULL, *prefix = NULL; if (lxc_config_value_empty(value)) - return clr_config_network_ipv4(key, lxc_conf, NULL); + return clr_config_network_ipv4(key, lxc_conf, data); /* lxc.network.* without an index */ if (!data) @@ -1209,6 +1230,9 @@ static int set_config_network_ipv4_gateway(const char *key, const char *value, { struct lxc_netdev *netdev; + if (lxc_config_value_empty(value)) + return clr_config_network_mtu(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -1254,6 +1278,9 @@ static int set_config_network_ipv6(const char *key, const char *value, struct lxc_list *list; char *slash, *valdup, *netmask; + if (lxc_config_value_empty(value)) + return clr_config_network_ipv6(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -1316,6 +1343,9 @@ static int set_config_network_ipv6_gateway(const char *key, const char *value, { struct lxc_netdev *netdev; + if (lxc_config_value_empty(value)) + return clr_config_network_ipv4_gateway(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -1358,6 +1388,9 @@ static int set_config_network_script_up(const char *key, const char *value, { struct lxc_netdev *netdev; + if (lxc_config_value_empty(value)) + return clr_config_network_ipv6_gateway(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -1374,6 +1407,9 @@ static int set_config_network_script_down(const char *key, const char *value, { struct lxc_netdev *netdev; + if (lxc_config_value_empty(value)) + return clr_config_network_script_up(key, lxc_conf, data); + /* lxc.network.* without an index */ if (!data) netdev = lxc_get_netdev_by_idx(lxc_conf, 0); @@ -4367,6 +4403,9 @@ static int set_config_network_nic(const char *key, const char *value, struct lxc_netdev *netdev; ssize_t idx = -1; + if (lxc_config_value_empty(value)) + return clr_config_network_nic(key, lxc_conf, data); + config = get_network_config_ops(key, lxc_conf, &idx); if (!config || idx < 0) return -1; @@ -4512,6 +4551,9 @@ static int clr_config_network_macvlan_mode(const char *key, if (!netdev) return -1; + if (netdev->type != LXC_NET_MACVLAN) + return 0; + netdev->priv.macvlan_attr.mode = -1; return 0;