dhcpv6: Allow address setting in IPv6 auto mode.
authorJukka Rissanen <jukka.rissanen@linux.intel.com>
Thu, 5 Jan 2012 11:38:15 +0000 (13:38 +0200)
committerDaniel Wagner <daniel.wagner@bmw-carit.de>
Thu, 5 Jan 2012 12:17:26 +0000 (13:17 +0100)
The DHCPv6 is used when doing autoconfiguration so we must allow
address setting/unsetting in auto mode.

src/ipconfig.c
src/network.c

index 94c0c2d..ba76f76 100644 (file)
@@ -1448,8 +1448,8 @@ int __connman_ipconfig_address_add(struct connman_ipconfig *ipconfig)
        switch (ipconfig->method) {
        case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
        case CONNMAN_IPCONFIG_METHOD_OFF:
-       case CONNMAN_IPCONFIG_METHOD_AUTO:
                break;
+       case CONNMAN_IPCONFIG_METHOD_AUTO:
        case CONNMAN_IPCONFIG_METHOD_FIXED:
        case CONNMAN_IPCONFIG_METHOD_DHCP:
        case CONNMAN_IPCONFIG_METHOD_MANUAL:
@@ -1478,8 +1478,8 @@ int __connman_ipconfig_address_remove(struct connman_ipconfig *ipconfig)
        switch (ipconfig->method) {
        case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
        case CONNMAN_IPCONFIG_METHOD_OFF:
-       case CONNMAN_IPCONFIG_METHOD_AUTO:
                break;
+       case CONNMAN_IPCONFIG_METHOD_AUTO:
        case CONNMAN_IPCONFIG_METHOD_FIXED:
        case CONNMAN_IPCONFIG_METHOD_DHCP:
        case CONNMAN_IPCONFIG_METHOD_MANUAL:
@@ -1506,8 +1506,8 @@ int __connman_ipconfig_address_unset(struct connman_ipconfig *ipconfig)
        switch (ipconfig->method) {
        case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
        case CONNMAN_IPCONFIG_METHOD_OFF:
-       case CONNMAN_IPCONFIG_METHOD_AUTO:
                break;
+       case CONNMAN_IPCONFIG_METHOD_AUTO:
        case CONNMAN_IPCONFIG_METHOD_FIXED:
        case CONNMAN_IPCONFIG_METHOD_DHCP:
        case CONNMAN_IPCONFIG_METHOD_MANUAL:
index 2637ba5..764fd96 100644 (file)
@@ -1486,8 +1486,10 @@ int __connman_network_clear_ipconfig(struct connman_network *network,
        case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
        case CONNMAN_IPCONFIG_METHOD_OFF:
        case CONNMAN_IPCONFIG_METHOD_FIXED:
-       case CONNMAN_IPCONFIG_METHOD_AUTO:
                return -EINVAL;
+       case CONNMAN_IPCONFIG_METHOD_AUTO:
+               release_dhcpv6(network);
+               break;
        case CONNMAN_IPCONFIG_METHOD_MANUAL:
                __connman_ipconfig_address_remove(ipconfig);
                break;