From: Daniel Wagner <[email protected]>
---
src/service.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 48 insertions(+), 0 deletions(-)
diff --git a/src/service.c b/src/service.c
index 5d41cbb..904fac3 100644
--- a/src/service.c
+++ b/src/service.c
@@ -3671,6 +3671,7 @@ int __connman_service_ipconfig_indicate_state(struct
connman_service *service,
enum connman_ipconfig_type type)
{
enum connman_service_state current_state;
+ enum connman_ipconfig_method ipv4_method, ipv6_method;
int err = 0;
DBG("service %p (%s) state %d (%s) type %d (%s)",
@@ -3683,6 +3684,53 @@ int __connman_service_ipconfig_indicate_state(struct
connman_service *service,
current_state = combine_state(service->state_ipv4, service->state_ipv6);
+ ipv4_method = __connman_ipconfig_get_method(service->ipconfig_ipv4);
+ ipv6_method = __connman_ipconfig_get_method(service->ipconfig_ipv6);
+
+ if (type == CONNMAN_IPCONFIG_TYPE_IPV4) {
+ switch (ipv4_method) {
+ case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
+ case CONNMAN_IPCONFIG_METHOD_OFF:
+ case CONNMAN_IPCONFIG_METHOD_AUTO:
+ case CONNMAN_IPCONFIG_METHOD_FIXED:
+ case CONNMAN_IPCONFIG_METHOD_MANUAL:
+ case CONNMAN_IPCONFIG_METHOD_DHCP:
+ break;
+ }
+ } else if (type == CONNMAN_IPCONFIG_TYPE_IPV6) {
+ switch (ipv6_method) {
+ case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
+ case CONNMAN_IPCONFIG_METHOD_OFF:
+ break;
+ case CONNMAN_IPCONFIG_METHOD_AUTO:
+ switch (ipv4_method) {
+ case CONNMAN_IPCONFIG_METHOD_UNKNOWN:
+ case CONNMAN_IPCONFIG_METHOD_OFF:
+ case CONNMAN_IPCONFIG_METHOD_AUTO:
+ case CONNMAN_IPCONFIG_METHOD_FIXED:
+ case CONNMAN_IPCONFIG_METHOD_MANUAL:
+ break;
+ case CONNMAN_IPCONFIG_METHOD_DHCP:
+ if (current_state ==
CONNMAN_SERVICE_STATE_IDLE) {
+ /*
+ * XXX Let's defer the IPv6
+ * setting the service to
+ * READY with a simple
+ * hack.
+ */
+ return 0;
+ }
+
+ break;
+ }
+ case CONNMAN_IPCONFIG_METHOD_FIXED:
+ case CONNMAN_IPCONFIG_METHOD_MANUAL:
+ case CONNMAN_IPCONFIG_METHOD_DHCP:
+ break;
+
+ }
+ }
+
switch (current_state) {
case CONNMAN_SERVICE_STATE_UNKNOWN:
case CONNMAN_SERVICE_STATE_IDLE:
--
1.7.5.4
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman