ipconfig: Add ipconfig type to __connman_ipconfig_get_gateway_from_index()
authorPatrik Flykt <patrik.flykt@linux.intel.com>
Fri, 27 Apr 2012 14:33:17 +0000 (17:33 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 27 Apr 2012 14:45:01 +0000 (16:45 +0200)
In order to be able to request a certain ipconfig type, add the type
as a parameter to __connman_ipconfig_get_gateway_from_index().

src/connman.h
src/ipconfig.c
src/rtnl.c
src/service.c
src/timeserver.c

index be3a2c1..fb4dee6 100644 (file)
@@ -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);
index 8dc0a59..f4a0173 100644 (file)
@@ -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;
 }
index 251d9cd..12939f4 100644 (file)
@@ -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);
index ac695c4..7ee4653 100644 (file)
@@ -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,
index a821e2a..a5e8e9e 100644 (file)
@@ -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)