Make a distinction between all and unknown ipconfig type values. As a
result Update the code to handle CONNMAN_IPCONFIG_TYPE_ALL in switch
statements.

As the unknown and all ipconfig values are now semantically different,
modify __connman_service_is_connected_state() to return the combined
state of IPv4 and IPv6 when given a value of CONNMAN_IPCONFIG_TYPE_ALL.
---
 include/ipconfig.h | 2 +-
 src/ipconfig.c     | 3 +++
 src/service.c      | 6 ++++++
 src/wispr.c        | 2 ++
 4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/include/ipconfig.h b/include/ipconfig.h
index a86b295..68ef40b 100644
--- a/include/ipconfig.h
+++ b/include/ipconfig.h
@@ -36,9 +36,9 @@ extern "C" {
 
 enum connman_ipconfig_type {
        CONNMAN_IPCONFIG_TYPE_UNKNOWN = 0,
-       CONNMAN_IPCONFIG_TYPE_ALL     = 0,
        CONNMAN_IPCONFIG_TYPE_IPV4    = 1,
        CONNMAN_IPCONFIG_TYPE_IPV6    = 2,
+       CONNMAN_IPCONFIG_TYPE_ALL     = 3,
 };
 
 enum connman_ipconfig_method {
diff --git a/src/ipconfig.c b/src/ipconfig.c
index 2e840a6..3d0c387 100644
--- a/src/ipconfig.c
+++ b/src/ipconfig.c
@@ -135,6 +135,7 @@ const char *__connman_ipconfig_type2string(enum 
connman_ipconfig_type type)
 {
        switch (type) {
        case CONNMAN_IPCONFIG_TYPE_UNKNOWN:
+       case CONNMAN_IPCONFIG_TYPE_ALL:
                return "unknown";
        case CONNMAN_IPCONFIG_TYPE_IPV4:
                return "IPv4";
@@ -2128,6 +2129,7 @@ int __connman_ipconfig_set_config(struct connman_ipconfig 
*ipconfig,
                        type = AF_INET6;
                        break;
                case CONNMAN_IPCONFIG_TYPE_UNKNOWN:
+               case CONNMAN_IPCONFIG_TYPE_ALL:
                        type = -1;
                        break;
                }
@@ -2217,6 +2219,7 @@ int __connman_ipconfig_load(struct connman_ipconfig 
*ipconfig,
                        ipconfig->method = CONNMAN_IPCONFIG_METHOD_AUTO;
                        break;
                case CONNMAN_IPCONFIG_TYPE_UNKNOWN:
+               case CONNMAN_IPCONFIG_TYPE_ALL:
                        ipconfig->method = CONNMAN_IPCONFIG_METHOD_OFF;
                        break;
                }
diff --git a/src/service.c b/src/service.c
index 7d86f65..9bba227 100644
--- a/src/service.c
+++ b/src/service.c
@@ -4807,6 +4807,11 @@ bool __connman_service_is_connected_state(struct 
connman_service *service,
                return is_connected_state(service, service->state_ipv4);
        case CONNMAN_IPCONFIG_TYPE_IPV6:
                return is_connected_state(service, service->state_ipv6);
+       case CONNMAN_IPCONFIG_TYPE_ALL:
+               return is_connected_state(service,
+                                       CONNMAN_IPCONFIG_TYPE_IPV4) &&
+                       is_connected_state(service,
+                                       CONNMAN_IPCONFIG_TYPE_IPV6);
        }
 
        return false;
@@ -5661,6 +5666,7 @@ int __connman_service_ipconfig_indicate_state(struct 
connman_service *service,
 
        switch (type) {
        case CONNMAN_IPCONFIG_TYPE_UNKNOWN:
+       case CONNMAN_IPCONFIG_TYPE_ALL:
                return -EINVAL;
 
        case CONNMAN_IPCONFIG_TYPE_IPV4:
diff --git a/src/wispr.c b/src/wispr.c
index c4fcd60..ef4bdab 100644
--- a/src/wispr.c
+++ b/src/wispr.c
@@ -143,6 +143,7 @@ static void free_wispr_routes(struct 
connman_wispr_portal_context *wp_context)
                                        route->address);
                        break;
                case CONNMAN_IPCONFIG_TYPE_UNKNOWN:
+               case CONNMAN_IPCONFIG_TYPE_ALL:
                        break;
                }
 
@@ -487,6 +488,7 @@ static bool wispr_route_request(const char *address, int 
ai_family,
                                gateway);
                break;
        case CONNMAN_IPCONFIG_TYPE_UNKNOWN:
+       case CONNMAN_IPCONFIG_TYPE_ALL:
                break;
        }
 
-- 
2.1.3

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to