]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
network: allow to unset by passing empty value
authorChristian Brauner <christian.brauner@ubuntu.com>
Fri, 16 Jun 2017 14:39:32 +0000 (16:39 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Sun, 18 Jun 2017 09:55:32 +0000 (11:55 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/confile.c

index f7fc200ffa4d9b3f7a6f92851bea3bd946fd9230..60af0d6cd1de4fb26a4b2cccba7ecebd373ed391 100644 (file)
@@ -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;