summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2012-04-27 17:33:17 +0300
committerMarcel Holtmann <marcel@holtmann.org>2012-04-27 16:45:01 +0200
commit1d2fc4e1c652fa4b2385b2893d844fc4648c6762 (patch)
treec73c7868e7dfc8f3c37916a9a0e7c8319ef9fa62
parentb9d16f7fe9c5f42cd14b5839a81deae3ccd94c14 (diff)
downloadconnman-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.h3
-rw-r--r--src/ipconfig.c27
-rw-r--r--src/rtnl.c4
-rw-r--r--src/service.c3
-rw-r--r--src/timeserver.c3
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;
}
diff --git a/src/rtnl.c b/src/rtnl.c
index 251d9cd9..12939f41 100644
--- a/src/rtnl.c
+++ b/src/rtnl.c
@@ -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)