summaryrefslogtreecommitdiff
path: root/src/service.c
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2013-02-04 16:37:55 +0200
committerPatrik Flykt <patrik.flykt@linux.intel.com>2013-02-05 13:29:31 +0200
commit95a7dd2b419c243e67d29a155b3122ea5e0fbd8e (patch)
treeeb08363987a554e00462f6c277f90814cd2efc46 /src/service.c
parentb4374b8c280c003e4c322d6015b763f3917ef59f (diff)
downloadconnman-95a7dd2b419c243e67d29a155b3122ea5e0fbd8e.tar.gz
connman-95a7dd2b419c243e67d29a155b3122ea5e0fbd8e.tar.bz2
connman-95a7dd2b419c243e67d29a155b3122ea5e0fbd8e.zip
service: Factor out ipconfig creation
The caller has to set the created ipconfig into its data structures.
Diffstat (limited to 'src/service.c')
-rw-r--r--src/service.c58
1 files changed, 38 insertions, 20 deletions
diff --git a/src/service.c b/src/service.c
index a1d4a2f5..ea7bbf01 100644
--- a/src/service.c
+++ b/src/service.c
@@ -127,6 +127,12 @@ struct connman_service {
static connman_bool_t allow_property_changed(struct connman_service *service);
+static struct connman_ipconfig *create_ip4config(struct connman_service *service,
+ int index, enum connman_ipconfig_method method);
+static struct connman_ipconfig *create_ip6config(struct connman_service *service,
+ int index);
+
+
struct find_data {
const char *path;
struct connman_service *service;
@@ -6042,31 +6048,40 @@ static const struct connman_ipconfig_ops service_ops = {
.route_unset = service_route_changed,
};
-static void setup_ip4config(struct connman_service *service, int index,
- enum connman_ipconfig_method method)
+static struct connman_ipconfig *create_ip4config(struct connman_service *service,
+ int index, enum connman_ipconfig_method method)
{
- service->ipconfig_ipv4 = __connman_ipconfig_create(index,
+ struct connman_ipconfig *ipconfig_ipv4;
+
+ ipconfig_ipv4 = __connman_ipconfig_create(index,
CONNMAN_IPCONFIG_TYPE_IPV4);
- if (service->ipconfig_ipv4 == NULL)
- return;
+ if (ipconfig_ipv4 == NULL)
+ return NULL;
- __connman_ipconfig_set_method(service->ipconfig_ipv4, method);
+ __connman_ipconfig_set_method(ipconfig_ipv4, method);
- __connman_ipconfig_set_data(service->ipconfig_ipv4, service);
+ __connman_ipconfig_set_data(ipconfig_ipv4, service);
- __connman_ipconfig_set_ops(service->ipconfig_ipv4, &service_ops);
+ __connman_ipconfig_set_ops(ipconfig_ipv4, &service_ops);
+
+ return ipconfig_ipv4;
}
-static void setup_ip6config(struct connman_service *service, int index)
+static struct connman_ipconfig *create_ip6config(struct connman_service *service,
+ int index)
{
- service->ipconfig_ipv6 = __connman_ipconfig_create(index,
+ struct connman_ipconfig *ipconfig_ipv6;
+
+ ipconfig_ipv6 = __connman_ipconfig_create(index,
CONNMAN_IPCONFIG_TYPE_IPV6);
- if (service->ipconfig_ipv6 == NULL)
- return;
+ if (ipconfig_ipv6 == NULL)
+ return NULL;
+
+ __connman_ipconfig_set_data(ipconfig_ipv6, service);
- __connman_ipconfig_set_data(service->ipconfig_ipv6, service);
+ __connman_ipconfig_set_ops(ipconfig_ipv6, &service_ops);
- __connman_ipconfig_set_ops(service->ipconfig_ipv6, &service_ops);
+ return ipconfig_ipv6;
}
void __connman_service_read_ip4config(struct connman_service *service)
@@ -6094,7 +6109,8 @@ void connman_service_create_ip4config(struct connman_service *service,
if (service->ipconfig_ipv4 != NULL)
return;
- setup_ip4config(service, index, CONNMAN_IPCONFIG_METHOD_DHCP);
+ service->ipconfig_ipv4 = create_ip4config(service, index,
+ CONNMAN_IPCONFIG_METHOD_DHCP);
__connman_service_read_ip4config(service);
}
@@ -6123,7 +6139,7 @@ void connman_service_create_ip6config(struct connman_service *service,
if (service->ipconfig_ipv6 != NULL)
return;
- setup_ip6config(service, index);
+ service->ipconfig_ipv6 = create_ip6config(service, index);
__connman_service_read_ip6config(service);
}
@@ -6421,10 +6437,11 @@ struct connman_service * __connman_service_create_from_network(struct connman_ne
index = connman_network_get_index(network);
if (service->ipconfig_ipv4 == NULL)
- setup_ip4config(service, index, CONNMAN_IPCONFIG_METHOD_DHCP);
+ service->ipconfig_ipv4 = create_ip4config(service, index,
+ CONNMAN_IPCONFIG_METHOD_DHCP);
if (service->ipconfig_ipv6 == NULL)
- setup_ip6config(service, index);
+ service->ipconfig_ipv6 = create_ip6config(service, index);
service_register(service);
@@ -6576,10 +6593,11 @@ __connman_service_create_from_provider(struct connman_provider *provider)
service->strength = 0;
if (service->ipconfig_ipv4 == NULL)
- setup_ip4config(service, index, CONNMAN_IPCONFIG_METHOD_MANUAL);
+ service->ipconfig_ipv4 = create_ip4config(service, index,
+ CONNMAN_IPCONFIG_METHOD_MANUAL);
if (service->ipconfig_ipv6 == NULL)
- setup_ip6config(service, index);
+ service->ipconfig_ipv6 = create_ip6config(service, index);
service_register(service);