From: Stéphane Graber Date: Wed, 28 Jan 2015 09:33:58 +0000 (+0100) Subject: Fix clearing IPv4/IPv6 addresses X-Git-Tag: lxc-1.1.0.rc4~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e088e9267c8fdd9078e65bcb156b3b9c8869bb6c;p=thirdparty%2Flxc.git Fix clearing IPv4/IPv6 addresses Signed-off-by: Stéphane Graber Acked-by: Serge E. Hallyn --- diff --git a/src/lxc/confile.c b/src/lxc/confile.c index be81f5d2c..ccdf26c44 100644 --- a/src/lxc/confile.c +++ b/src/lxc/confile.c @@ -787,29 +787,27 @@ static int config_network_ipv4_gateway(const char *key, const char *value, struct lxc_conf *lxc_conf) { struct lxc_netdev *netdev; - struct in_addr *gw; netdev = network_netdev(key, value, &lxc_conf->network); if (!netdev) return -1; - gw = malloc(sizeof(*gw)); - if (!gw) { - SYSERROR("failed to allocate ipv4 gateway address"); - return -1; - } - - if (!value) { - ERROR("no ipv4 gateway address specified"); - free(gw); - return -1; - } + free(netdev->ipv4_gateway); - if (!strcmp(value, "auto")) { - free(gw); + if (!value || strlen(value) == 0) { + netdev->ipv4_gateway = NULL; + } else if (!strcmp(value, "auto")) { netdev->ipv4_gateway = NULL; netdev->ipv4_gateway_auto = true; } else { + struct in_addr *gw; + + gw = malloc(sizeof(*gw)); + if (!gw) { + SYSERROR("failed to allocate ipv4 gateway address"); + return -1; + } + if (!inet_pton(AF_INET, value, gw)) { SYSERROR("invalid ipv4 gateway address: %s", value); free(gw); @@ -892,12 +890,11 @@ static int config_network_ipv6_gateway(const char *key, const char *value, if (!netdev) return -1; - if (!value) { - ERROR("no ipv6 gateway address specified"); - return -1; - } + free(netdev->ipv6_gateway); - if (!strcmp(value, "auto")) { + if (!value || strlen(value) == 0) { + netdev->ipv4_gateway = NULL; + } else if (!strcmp(value, "auto")) { netdev->ipv6_gateway = NULL; netdev->ipv6_gateway_auto = true; } else {