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