summaryrefslogtreecommitdiff
path: root/src/provider.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/provider.c')
-rw-r--r--src/provider.c42
1 files changed, 6 insertions, 36 deletions
diff --git a/src/provider.c b/src/provider.c
index 64a871b5..cd11db97 100644
--- a/src/provider.c
+++ b/src/provider.c
@@ -38,25 +38,14 @@ static GHashTable *provider_hash = NULL;
static GSList *driver_list = NULL;
-struct connman_route {
- int family;
- char *host;
- char *netmask;
- char *gateway;
-};
-
struct connman_provider {
int refcount;
struct connman_service *vpn_service;
int index;
char *identifier;
int family;
- GHashTable *routes;
struct connman_provider_driver *driver;
void *driver_data;
- GHashTable *user_routes;
- gchar **user_networks;
- gsize num_user_networks;
};
void __connman_provider_append_properties(struct connman_provider *provider,
@@ -109,9 +98,6 @@ static void provider_destruct(struct connman_provider *provider)
DBG("provider %p", provider);
g_free(provider->identifier);
- g_strfreev(provider->user_networks);
- g_hash_table_destroy(provider->routes);
- g_hash_table_destroy(provider->user_routes);
g_free(provider);
}
@@ -248,6 +234,10 @@ static int set_connected(struct connman_provider *provider,
provider_indicate_state(provider,
CONNMAN_SERVICE_STATE_READY);
+ if (provider->driver != NULL && provider->driver->set_routes)
+ provider->driver->set_routes(provider,
+ CONNMAN_PROVIDER_ROUTE_ALL);
+
} else {
if (ipconfig != NULL) {
provider_indicate_state(provider,
@@ -396,13 +386,8 @@ __connman_provider_check_routes(struct connman_provider *provider)
if (provider == NULL)
return FALSE;
- if (provider->user_routes != NULL &&
- g_hash_table_size(provider->user_routes) > 0)
- return TRUE;
-
- if (provider->routes != NULL &&
- g_hash_table_size(provider->routes) > 0)
- return TRUE;
+ if (provider->driver != NULL && provider->driver->check_routes)
+ return provider->driver->check_routes(provider);
return FALSE;
}
@@ -601,27 +586,12 @@ static void provider_offline_mode(connman_bool_t enabled)
}
-static void destroy_route(gpointer user_data)
-{
- struct connman_route *route = user_data;
-
- g_free(route->host);
- g_free(route->netmask);
- g_free(route->gateway);
- g_free(route);
-}
-
static void provider_initialize(struct connman_provider *provider)
{
DBG("provider %p", provider);
provider->index = 0;
provider->identifier = NULL;
- provider->user_networks = NULL;
- provider->routes = g_hash_table_new_full(g_direct_hash, g_direct_equal,
- NULL, destroy_route);
- provider->user_routes = g_hash_table_new_full(g_str_hash, g_str_equal,
- g_free, destroy_route);
}
static struct connman_provider *provider_new(void)