diff options
author | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-04-27 17:33:17 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-04-27 16:45:01 +0200 |
commit | 1d2fc4e1c652fa4b2385b2893d844fc4648c6762 (patch) | |
tree | c73c7868e7dfc8f3c37916a9a0e7c8319ef9fa62 | |
parent | b9d16f7fe9c5f42cd14b5839a81deae3ccd94c14 (diff) | |
download | connman-1d2fc4e1c652fa4b2385b2893d844fc4648c6762.tar.gz connman-1d2fc4e1c652fa4b2385b2893d844fc4648c6762.tar.bz2 connman-1d2fc4e1c652fa4b2385b2893d844fc4648c6762.zip |
ipconfig: Add ipconfig type to __connman_ipconfig_get_gateway_from_index()
In order to be able to request a certain ipconfig type, add the type
as a parameter to __connman_ipconfig_get_gateway_from_index().
-rw-r--r-- | src/connman.h | 3 | ||||
-rw-r--r-- | src/ipconfig.c | 27 | ||||
-rw-r--r-- | src/rtnl.c | 4 | ||||
-rw-r--r-- | src/service.c | 3 | ||||
-rw-r--r-- | src/timeserver.c | 3 |
5 files changed, 25 insertions, 15 deletions
diff --git a/src/connman.h b/src/connman.h index be3a2c12..fb4dee6f 100644 --- a/src/connman.h +++ b/src/connman.h @@ -296,7 +296,8 @@ enum connman_ipconfig_type __connman_ipconfig_get_config_type( struct connman_ipconfig *ipconfig); unsigned short __connman_ipconfig_get_type_from_index(int index); unsigned int __connman_ipconfig_get_flags_from_index(int index); -const char *__connman_ipconfig_get_gateway_from_index(int index); +const char *__connman_ipconfig_get_gateway_from_index(int index, + enum connman_ipconfig_type type); void __connman_ipconfig_set_index(struct connman_ipconfig *ipconfig, int index); const char *__connman_ipconfig_get_local(struct connman_ipconfig *ipconfig); diff --git a/src/ipconfig.c b/src/ipconfig.c index 8dc0a59b..f4a01732 100644 --- a/src/ipconfig.c +++ b/src/ipconfig.c @@ -1083,7 +1083,8 @@ unsigned int __connman_ipconfig_get_flags_from_index(int index) return ipdevice->flags; } -const char *__connman_ipconfig_get_gateway_from_index(int index) +const char *__connman_ipconfig_get_gateway_from_index(int index, + enum connman_ipconfig_type type) { struct connman_ipdevice *ipdevice; @@ -1091,19 +1092,23 @@ const char *__connman_ipconfig_get_gateway_from_index(int index) if (ipdevice == NULL) return NULL; - if (ipdevice->ipv4_gateway != NULL) - return ipdevice->ipv4_gateway; + if (type != CONNMAN_IPCONFIG_TYPE_IPV6) { + if (ipdevice->ipv4_gateway != NULL) + return ipdevice->ipv4_gateway; - if (ipdevice->config_ipv4 != NULL && - ipdevice->config_ipv4->address != NULL) - return ipdevice->config_ipv4->address->gateway; + if (ipdevice->config_ipv4 != NULL && + ipdevice->config_ipv4->address != NULL) + return ipdevice->config_ipv4->address->gateway; + } - if (ipdevice->ipv6_gateway != NULL) - return ipdevice->ipv6_gateway; + if (type != CONNMAN_IPCONFIG_TYPE_IPV4) { + if (ipdevice->ipv6_gateway != NULL) + return ipdevice->ipv6_gateway; - if (ipdevice->config_ipv6 != NULL && - ipdevice->config_ipv6->address != NULL) - return ipdevice->config_ipv6->address->gateway; + if (ipdevice->config_ipv6 != NULL && + ipdevice->config_ipv6->address != NULL) + return ipdevice->config_ipv6->address->gateway; + } return NULL; } @@ -291,7 +291,9 @@ static void trigger_rtnl(int index, void *user_data) } if (rtnl->newgateway) { - const char *gateway = __connman_ipconfig_get_gateway_from_index(index); + const char *gateway = + __connman_ipconfig_get_gateway_from_index(index, + CONNMAN_IPCONFIG_TYPE_ALL); if (gateway != NULL) rtnl->newgateway(index, gateway); diff --git a/src/service.c b/src/service.c index ac695c44..7ee4653c 100644 --- a/src/service.c +++ b/src/service.c @@ -2919,7 +2919,8 @@ static DBusMessage *set_property(DBusConnection *conn, return __connman_error_invalid_arguments(msg); index = connman_network_get_index(service->network); - gw = __connman_ipconfig_get_gateway_from_index(index); + gw = __connman_ipconfig_get_gateway_from_index(index, + CONNMAN_IPCONFIG_TYPE_ALL); if (gw && strlen(gw)) __connman_service_nameserver_del_routes(service, diff --git a/src/timeserver.c b/src/timeserver.c index a821e2a1..a5e8e9eb 100644 --- a/src/timeserver.c +++ b/src/timeserver.c @@ -188,7 +188,8 @@ GSList *__connman_timeserver_get_all(struct connman_service *service) network = __connman_service_get_network(service); if (network != NULL) { index = connman_network_get_index(network); - service_gw = __connman_ipconfig_get_gateway_from_index(index); + service_gw = __connman_ipconfig_get_gateway_from_index(index, + CONNMAN_IPCONFIG_TYPE_ALL); /* Then add Service Gateway to the list */ if (service_gw != NULL) |