From 80de85a6242c7b2957401dbf75520862798b8d16 Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Wed, 22 Jun 2011 13:37:46 +0300 Subject: ipconfig: Add function to remove address from interface. The new function removes the address from interface but does not touch internal data structures. --- src/ipconfig.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'src/ipconfig.c') diff --git a/src/ipconfig.c b/src/ipconfig.c index c8466d98..4d74ca82 100644 --- a/src/ipconfig.c +++ b/src/ipconfig.c @@ -1393,6 +1393,34 @@ int __connman_ipconfig_address_remove(struct connman_ipconfig *ipconfig) DBG("method %d", ipconfig->method); + switch (ipconfig->method) { + case CONNMAN_IPCONFIG_METHOD_UNKNOWN: + case CONNMAN_IPCONFIG_METHOD_OFF: + case CONNMAN_IPCONFIG_METHOD_AUTO: + break; + case CONNMAN_IPCONFIG_METHOD_FIXED: + case CONNMAN_IPCONFIG_METHOD_DHCP: + case CONNMAN_IPCONFIG_METHOD_MANUAL: + err = __connman_ipconfig_address_unset(ipconfig); + connman_ipaddress_clear(ipconfig->address); + + return err; + } + + return 0; +} + +int __connman_ipconfig_address_unset(struct connman_ipconfig *ipconfig) +{ + int err; + + DBG(""); + + if (ipconfig == NULL) + return 0; + + DBG("method %d", ipconfig->method); + switch (ipconfig->method) { case CONNMAN_IPCONFIG_METHOD_UNKNOWN: case CONNMAN_IPCONFIG_METHOD_OFF: @@ -1412,8 +1440,6 @@ int __connman_ipconfig_address_remove(struct connman_ipconfig *ipconfig) else err = -EINVAL; - connman_ipaddress_clear(ipconfig->address); - return err; } -- cgit v1.2.3