From: Daniel Wagner <[email protected]>
Instead of using __connman_service_indicate_state directly use
__connman_service_ipconfig_indicate_state. This allows us to decouple
the events from the state machine transisions.
__connman_service_indicate_state() is changed to a private function.
Also remove __connman_service_set_ipconfig_ready(). Instead
use __connman_service_ipconfig_indicate_state().
---
src/connection.c | 3 ++-
src/connman.h | 2 --
src/location.c | 2 +-
src/network.c | 41 +++++++++++++++++++++++++----------------
src/provider.c | 4 ++--
src/service.c | 51 +++++++++++++--------------------------------------
6 files changed, 43 insertions(+), 60 deletions(-)
diff --git a/src/connection.c b/src/connection.c
index 10ef04a..49e6fd8 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -304,7 +304,8 @@ int __connman_connection_gateway_add(struct connman_service
*service,
__connman_service_nameserver_add_routes(service,
new_gateway->ipv4_gateway);
- __connman_service_set_ipconfig_ready(service,
CONNMAN_IPCONFIG_TYPE_IPV4);
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_READY,
+ CONNMAN_IPCONFIG_TYPE_IPV4);
if (connman_service_get_type(service) == CONNMAN_SERVICE_TYPE_VPN) {
new_gateway->vpn = TRUE;
diff --git a/src/connman.h b/src/connman.h
index c98093d..4f67b1b 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -490,8 +490,6 @@ int __connman_service_set_immutable(struct connman_service
*service,
void __connman_service_set_string(struct connman_service *service,
const char *key, const char *value);
-int __connman_service_set_ipconfig_ready(struct connman_service *service,
-
enum connman_ipconfig_type type);
int __connman_service_ipconfig_indicate_state(struct connman_service *service,
enum connman_service_state state,
enum connman_ipconfig_type type);
diff --git a/src/location.c b/src/location.c
index dece833..2afc640 100644
--- a/src/location.c
+++ b/src/location.c
@@ -192,7 +192,7 @@ void connman_location_report_result(struct connman_location
*location,
__connman_service_request_login(location->service);
break;
case CONNMAN_LOCATION_RESULT_ONLINE:
- __connman_service_indicate_state(location->service,
+ __connman_service_ipconfig_indicate_state(location->service,
CONNMAN_SERVICE_STATE_ONLINE,
CONNMAN_IPCONFIG_TYPE_IPV4);
break;
diff --git a/src/network.c b/src/network.c
index 209fae5..81d57aa 100644
--- a/src/network.c
+++ b/src/network.c
@@ -642,7 +642,7 @@ int connman_network_set_associating(struct connman_network
*network,
struct connman_service *service;
service = __connman_service_lookup_from_network(network);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_ASSOCIATION,
CONNMAN_IPCONFIG_TYPE_IPV4);
}
@@ -661,7 +661,7 @@ static void set_associate_error(struct connman_network
*network)
service = __connman_service_lookup_from_network(network);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_FAILURE,
CONNMAN_IPCONFIG_TYPE_IPV4);
}
@@ -674,7 +674,7 @@ static void set_configure_error(struct connman_network
*network)
service = __connman_service_lookup_from_network(network);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_FAILURE,
CONNMAN_IPCONFIG_TYPE_IPV4);
}
@@ -789,7 +789,7 @@ static void set_configuration(struct connman_network
*network)
connman_device_set_disconnected(network->device, FALSE);
service = __connman_service_lookup_from_network(network);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_CONFIGURATION,
CONNMAN_IPCONFIG_TYPE_IPV4);
}
@@ -817,7 +817,8 @@ static void dhcp_success(struct connman_network *network)
if (err < 0)
goto err;
- __connman_service_set_ipconfig_ready(service,
CONNMAN_IPCONFIG_TYPE_IPV4);
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_READY,
+ CONNMAN_IPCONFIG_TYPE_IPV4);
return;
@@ -834,7 +835,7 @@ static void dhcp_failure(struct connman_network *network)
if (service == NULL)
return;
- __connman_service_indicate_state(service, CONNMAN_SERVICE_STATE_IDLE,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_IDLE,
CONNMAN_IPCONFIG_TYPE_IPV4);
}
@@ -875,7 +876,9 @@ static int set_connected_fixed(struct connman_network
*network)
if (err < 0)
goto err;
- __connman_service_set_ipconfig_ready(service,
CONNMAN_IPCONFIG_TYPE_IPV4);
+ __connman_service_ipconfig_indicate_state(service,
+ CONNMAN_SERVICE_STATE_READY,
+ CONNMAN_IPCONFIG_TYPE_IPV4);
return 0;
@@ -912,7 +915,9 @@ static void set_connected_manual(struct connman_network
*network)
connman_network_set_associating(network, FALSE);
- __connman_service_set_ipconfig_ready(service,
CONNMAN_IPCONFIG_TYPE_IPV4);
+ __connman_service_ipconfig_indicate_state(service,
+ CONNMAN_SERVICE_STATE_READY,
+ CONNMAN_IPCONFIG_TYPE_IPV4);
return;
@@ -982,7 +987,9 @@ static void autoconf_ipv6_set(struct connman_network
*network)
network->connecting = FALSE;
- __connman_service_set_ipconfig_ready(service,
CONNMAN_IPCONFIG_TYPE_IPV6);
+ __connman_service_ipconfig_indicate_state(service,
+ CONNMAN_SERVICE_STATE_READY,
+ CONNMAN_IPCONFIG_TYPE_IPV6);
}
static gboolean set_connected(gpointer user_data)
@@ -1060,21 +1067,21 @@ static gboolean set_connected(gpointer user_data)
service = __connman_service_lookup_from_network(network);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_DISCONNECT,
CONNMAN_IPCONFIG_TYPE_IPV4);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_DISCONNECT,
CONNMAN_IPCONFIG_TYPE_IPV6);
__connman_connection_gateway_remove(service);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_IDLE,
CONNMAN_IPCONFIG_TYPE_IPV4);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_IDLE,
CONNMAN_IPCONFIG_TYPE_IPV6);
}
@@ -1241,7 +1248,9 @@ static int manual_ipv4_set(struct connman_network
*network,
__connman_ipconfig_gateway_add(ipconfig);
- __connman_service_set_ipconfig_ready(service,
CONNMAN_IPCONFIG_TYPE_IPV4);
+ __connman_service_ipconfig_indicate_state(service,
+ CONNMAN_SERVICE_STATE_READY,
+ CONNMAN_IPCONFIG_TYPE_IPV4);
return 0;
}
@@ -1275,11 +1284,11 @@ int __connman_network_clear_ipconfig(struct
connman_network *network,
}
if (type == CONNMAN_IPCONFIG_TYPE_IPV6)
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_CONFIGURATION,
CONNMAN_IPCONFIG_TYPE_IPV6);
else if (type == CONNMAN_IPCONFIG_TYPE_IPV4)
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_CONFIGURATION,
CONNMAN_IPCONFIG_TYPE_IPV4);
diff --git a/src/provider.c b/src/provider.c
index afbfeeb..9ef088d 100644
--- a/src/provider.c
+++ b/src/provider.c
@@ -179,10 +179,10 @@ static int provider_indicate_state(struct
connman_provider *provider,
{
DBG("state %d", state);
- __connman_service_indicate_state(provider->vpn_service, state,
+ __connman_service_ipconfig_indicate_state(provider->vpn_service, state,
CONNMAN_IPCONFIG_TYPE_IPV4);
- return __connman_service_indicate_state(provider->vpn_service, state,
+ return __connman_service_ipconfig_indicate_state(provider->vpn_service,
state,
CONNMAN_IPCONFIG_TYPE_IPV6);
}
diff --git a/src/service.c b/src/service.c
index 2f1c39d..5d41cbb 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2637,10 +2637,10 @@ static gboolean connect_timeout(gpointer user_data)
} else
autoconnect = TRUE;
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_FAILURE,
CONNMAN_IPCONFIG_TYPE_IPV4);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_FAILURE,
CONNMAN_IPCONFIG_TYPE_IPV6);
@@ -3394,33 +3394,7 @@ static void report_error_cb(struct connman_service
*service,
}
}
-int __connman_service_set_ipconfig_ready(struct connman_service *service,
-
enum connman_ipconfig_type type)
-{
- enum connman_service_state state;
- int err = 0;
-
- DBG("service %p (%s) type %d (%s)",
- service, service ? service->identifier : NULL,
- type, __connman_ipconfig_type2string(type));
-
- if (service == NULL)
- return -EINVAL;
-
- state = combine_state(service->state_ipv4, service->state_ipv6);
-
- if (state == CONNMAN_SERVICE_STATE_READY ||
- state == CONNMAN_SERVICE_STATE_ONLINE) {
- err = -EALREADY;
- } else {
- err = __connman_service_indicate_state(service,
- CONNMAN_SERVICE_STATE_READY, type);
- }
-
- return err;
-}
-
-int __connman_service_indicate_state(struct connman_service *service,
+static int indicate_state(struct connman_service *service,
enum connman_service_state new_state,
enum connman_ipconfig_type type)
{
@@ -3639,7 +3613,7 @@ int __connman_service_indicate_error(struct
connman_service *service,
if (service->error == CONNMAN_SERVICE_ERROR_INVALID_KEY)
__connman_service_set_passphrase(service, NULL);
- return __connman_service_indicate_state(service,
+ return __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_FAILURE,
CONNMAN_IPCONFIG_TYPE_IPV4);
}
@@ -3665,7 +3639,7 @@ int __connman_service_clear_error(struct connman_service
*service)
if (service->favorite == TRUE)
set_reconnect_state(service, TRUE);
- __connman_service_indicate_state(service, CONNMAN_SERVICE_STATE_IDLE,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_IDLE,
CONNMAN_IPCONFIG_TYPE_IPV6);
/*
@@ -3676,7 +3650,7 @@ int __connman_service_clear_error(struct connman_service
*service)
service->state_ipv4 != CONNMAN_SERVICE_STATE_FAILURE)
return 0;
- return __connman_service_indicate_state(service,
+ return __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_IDLE,
CONNMAN_IPCONFIG_TYPE_IPV4);
}
@@ -3729,7 +3703,7 @@ int __connman_service_ipconfig_indicate_state(struct
connman_service *service,
if (current_state == state)
return -EALREADY;
- err = __connman_service_indicate_state(service, state, type);
+ err = indicate_state(service, state, type);
if (err < 0)
return err;
@@ -3959,10 +3933,10 @@ int __connman_service_connect(struct connman_service
*service)
if (service->userconnect == TRUE)
reply_pending(service, err);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_FAILURE,
CONNMAN_IPCONFIG_TYPE_IPV4);
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_FAILURE,
CONNMAN_IPCONFIG_TYPE_IPV6);
@@ -4462,7 +4436,8 @@ static void service_ip_bound(struct connman_ipconfig
*ipconfig)
if (type == CONNMAN_IPCONFIG_TYPE_IPV6 &&
method == CONNMAN_IPCONFIG_METHOD_AUTO)
- __connman_service_set_ipconfig_ready(service,
+ __connman_service_ipconfig_indicate_state(service,
+ CONNMAN_SERVICE_STATE_READY,
CONNMAN_IPCONFIG_TYPE_IPV6);
settings_changed(service, ipconfig);
@@ -4484,13 +4459,13 @@ static void service_ip_release(struct connman_ipconfig
*ipconfig)
if (type == CONNMAN_IPCONFIG_TYPE_IPV6 &&
method == CONNMAN_IPCONFIG_METHOD_OFF)
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_DISCONNECT,
CONNMAN_IPCONFIG_TYPE_IPV6);
if (type == CONNMAN_IPCONFIG_TYPE_IPV4 &&
method == CONNMAN_IPCONFIG_METHOD_OFF)
- __connman_service_indicate_state(service,
+ __connman_service_ipconfig_indicate_state(service,
CONNMAN_SERVICE_STATE_DISCONNECT,
CONNMAN_IPCONFIG_TYPE_IPV4);
--
1.7.5.4
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman