diff options
Diffstat (limited to 'src/connection.c')
-rw-r--r-- | src/connection.c | 347 |
1 files changed, 173 insertions, 174 deletions
diff --git a/src/connection.c b/src/connection.c index c7b1f620..e98ccb5c 100644 --- a/src/connection.c +++ b/src/connection.c @@ -2,8 +2,8 @@ * * Connection Manager * - * Copyright (C) 2007-2012 Intel Corporation. All rights reserved. - * Copyright (C) 2011 BMW Car IT GmbH. All rights reserved. + * Copyright (C) 2007-2013 Intel Corporation. All rights reserved. + * Copyright (C) 2011-2013 BMW Car IT GmbH. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -33,11 +33,11 @@ #include "connman.h" struct gateway_config { - gboolean active; + bool active; char *gateway; /* VPN extra data */ - gboolean vpn; + bool vpn; char *vpn_ip; int vpn_phy_index; char *vpn_phy_ip; @@ -49,7 +49,7 @@ struct gateway_data { unsigned int order; struct gateway_config *ipv4_gateway; struct gateway_config *ipv6_gateway; - connman_bool_t default_checked; + bool default_checked; }; static GHashTable *gateway_hash = NULL; @@ -59,22 +59,22 @@ static struct gateway_config *find_gateway(int index, const char *gateway) GHashTableIter iter; gpointer value, key; - if (gateway == NULL) + if (!gateway) return NULL; g_hash_table_iter_init(&iter, gateway_hash); - while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + while (g_hash_table_iter_next(&iter, &key, &value)) { struct gateway_data *data = value; - if (data->ipv4_gateway != NULL && data->index == index && + if (data->ipv4_gateway && data->index == index && g_str_equal(data->ipv4_gateway->gateway, - gateway) == TRUE) + gateway)) return data->ipv4_gateway; - if (data->ipv6_gateway != NULL && data->index == index && + if (data->ipv6_gateway && data->index == index && g_str_equal(data->ipv6_gateway->gateway, - gateway) == TRUE) + gateway)) return data->ipv6_gateway; } @@ -86,19 +86,19 @@ static struct gateway_data *lookup_gateway_data(struct gateway_config *config) GHashTableIter iter; gpointer value, key; - if (config == NULL) + if (!config) return NULL; g_hash_table_iter_init(&iter, gateway_hash); - while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + while (g_hash_table_iter_next(&iter, &key, &value)) { struct gateway_data *data = value; - if (data->ipv4_gateway != NULL && + if (data->ipv4_gateway && data->ipv4_gateway == config) return data; - if (data->ipv6_gateway != NULL && + if (data->ipv6_gateway && data->ipv6_gateway == config) return data; } @@ -111,22 +111,22 @@ static struct gateway_data *find_vpn_gateway(int index, const char *gateway) GHashTableIter iter; gpointer value, key; - if (gateway == NULL) + if (!gateway) return NULL; g_hash_table_iter_init(&iter, gateway_hash); - while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + while (g_hash_table_iter_next(&iter, &key, &value)) { struct gateway_data *data = value; - if (data->ipv4_gateway != NULL && data->index == index && + if (data->ipv4_gateway && data->index == index && g_str_equal(data->ipv4_gateway->gateway, - gateway) == TRUE) + gateway)) return data; - if (data->ipv6_gateway != NULL && data->index == index && + if (data->ipv6_gateway && data->index == index && g_str_equal(data->ipv6_gateway->gateway, - gateway) == TRUE) + gateway)) return data; } @@ -152,7 +152,7 @@ static void get_gateway_cb(const char *gateway, int index, void *user_data) params->vpn_index, params->vpn_gateway); data = find_vpn_gateway(params->vpn_index, params->vpn_gateway); - if (data == NULL) { + if (!data) { DBG("Cannot find VPN link route, index %d addr %s", params->vpn_index, params->vpn_gateway); goto out; @@ -199,18 +199,18 @@ static void set_vpn_routes(struct gateway_data *new_gateway, } else return; - if (config != NULL) { + if (config) { int index = __connman_ipconfig_get_index(ipconfig); struct get_gateway_params *params; - config->vpn = TRUE; - if (peer != NULL) + config->vpn = true; + if (peer) config->vpn_ip = g_strdup(peer); - else if (gateway != NULL) + else if (gateway) config->vpn_ip = g_strdup(gateway); params = g_try_malloc(sizeof(struct get_gateway_params)); - if (params == NULL) + if (!params) return; params->vpn_index = index; @@ -222,7 +222,7 @@ static void set_vpn_routes(struct gateway_data *new_gateway, __connman_inet_get_route(gateway, get_gateway_cb, params); } - if (active_gateway == NULL) + if (!active_gateway) return; if (type == CONNMAN_IPCONFIG_TYPE_IPV4) { @@ -232,7 +232,7 @@ static void set_vpn_routes(struct gateway_data *new_gateway, * the VPN. The route might already exist depending * on network topology. */ - if (active_gateway->ipv4_gateway == NULL) + if (!active_gateway->ipv4_gateway) return; DBG("active gw %s", active_gateway->ipv4_gateway->gateway); @@ -248,7 +248,7 @@ static void set_vpn_routes(struct gateway_data *new_gateway, } else if (type == CONNMAN_IPCONFIG_TYPE_IPV6) { - if (active_gateway->ipv6_gateway == NULL) + if (!active_gateway->ipv6_gateway) return; DBG("active gw %s", active_gateway->ipv6_gateway->gateway); @@ -268,17 +268,17 @@ static int del_routes(struct gateway_data *data, enum connman_ipconfig_type type) { int status4 = 0, status6 = 0; - int do_ipv4 = FALSE, do_ipv6 = FALSE; + bool do_ipv4 = false, do_ipv6 = false; if (type == CONNMAN_IPCONFIG_TYPE_IPV4) - do_ipv4 = TRUE; + do_ipv4 = true; else if (type == CONNMAN_IPCONFIG_TYPE_IPV6) - do_ipv6 = TRUE; + do_ipv6 = true; else - do_ipv4 = do_ipv6 = TRUE; + do_ipv4 = do_ipv6 = true; - if (do_ipv4 == TRUE && data->ipv4_gateway != NULL) { - if (data->ipv4_gateway->vpn == TRUE) { + if (do_ipv4 && data->ipv4_gateway) { + if (data->ipv4_gateway->vpn) { status4 = connman_inet_clear_gateway_address( data->index, data->ipv4_gateway->vpn_ip); @@ -296,8 +296,8 @@ static int del_routes(struct gateway_data *data, } } - if (do_ipv6 == TRUE && data->ipv6_gateway != NULL) { - if (data->ipv6_gateway->vpn == TRUE) { + if (do_ipv6 && data->ipv6_gateway) { + if (data->ipv6_gateway->vpn) { status6 = connman_inet_clear_ipv6_gateway_address( data->index, data->ipv6_gateway->vpn_ip); @@ -320,20 +320,20 @@ static int del_routes(struct gateway_data *data, static int disable_gateway(struct gateway_data *data, enum connman_ipconfig_type type) { - gboolean active = FALSE; + bool active = false; if (type == CONNMAN_IPCONFIG_TYPE_IPV4) { - if (data->ipv4_gateway != NULL) + if (data->ipv4_gateway) active = data->ipv4_gateway->active; } else if (type == CONNMAN_IPCONFIG_TYPE_IPV6) { - if (data->ipv6_gateway != NULL) + if (data->ipv6_gateway) active = data->ipv6_gateway->active; } else - active = TRUE; + active = true; DBG("type %d active %d", type, active); - if (active == TRUE) + if (active) return del_routes(data, type); return 0; @@ -346,17 +346,17 @@ static struct gateway_data *add_gateway(struct connman_service *service, struct gateway_data *data, *old; struct gateway_config *config; - if (gateway == NULL || strlen(gateway) == 0) + if (!gateway || strlen(gateway) == 0) return NULL; data = g_try_new0(struct gateway_data, 1); - if (data == NULL) + if (!data) return NULL; data->index = index; config = g_try_new0(struct gateway_config, 1); - if (config == NULL) { + if (!config) { g_free(data); return NULL; } @@ -364,9 +364,9 @@ static struct gateway_data *add_gateway(struct connman_service *service, config->gateway = g_strdup(gateway); config->vpn_ip = NULL; config->vpn_phy_ip = NULL; - config->vpn = FALSE; + config->vpn = false; config->vpn_phy_index = -1; - config->active = FALSE; + config->active = false; if (type == CONNMAN_IPCONFIG_TYPE_IPV4) data->ipv4_gateway = config; @@ -390,7 +390,7 @@ static struct gateway_data *add_gateway(struct connman_service *service, * from old gateway settings. */ old = g_hash_table_lookup(gateway_hash, service); - if (old != NULL) { + if (old) { DBG("Replacing gw %p ipv4 %p ipv6 %p", old, old->ipv4_gateway, old->ipv6_gateway); disable_gateway(old, type); @@ -418,22 +418,22 @@ static void set_default_gateway(struct gateway_data *data, { int index; int status4 = 0, status6 = 0; - int do_ipv4 = FALSE, do_ipv6 = FALSE; + bool do_ipv4 = false, do_ipv6 = false; if (type == CONNMAN_IPCONFIG_TYPE_IPV4) - do_ipv4 = TRUE; + do_ipv4 = true; else if (type == CONNMAN_IPCONFIG_TYPE_IPV6) - do_ipv6 = TRUE; + do_ipv6 = true; else - do_ipv4 = do_ipv6 = TRUE; + do_ipv4 = do_ipv6 = true; DBG("type %d gateway ipv4 %p ipv6 %p", type, data->ipv4_gateway, data->ipv6_gateway); - if (do_ipv4 == TRUE && data->ipv4_gateway != NULL && - data->ipv4_gateway->vpn == TRUE) { + if (do_ipv4 && data->ipv4_gateway && + data->ipv4_gateway->vpn) { connman_inet_set_gateway_interface(data->index); - data->ipv4_gateway->active = TRUE; + data->ipv4_gateway->active = true; DBG("set %p index %d vpn %s index %d phy %s", data, data->index, data->ipv4_gateway->vpn_ip, @@ -445,10 +445,10 @@ static void set_default_gateway(struct gateway_data *data, return; } - if (do_ipv6 == TRUE && data->ipv6_gateway != NULL && - data->ipv6_gateway->vpn == TRUE) { + if (do_ipv6 && data->ipv6_gateway && + data->ipv6_gateway->vpn) { connman_inet_set_ipv6_gateway_interface(data->index); - data->ipv6_gateway->active = TRUE; + data->ipv6_gateway->active = true; DBG("set %p index %d vpn %s index %d phy %s", data, data->index, data->ipv6_gateway->vpn_ip, @@ -462,7 +462,7 @@ static void set_default_gateway(struct gateway_data *data, index = __connman_service_get_index(data->service); - if (do_ipv4 == TRUE && data->ipv4_gateway != NULL && + if (do_ipv4 && data->ipv4_gateway && g_strcmp0(data->ipv4_gateway->gateway, "0.0.0.0") == 0) { if (connman_inet_set_gateway_interface(index) < 0) @@ -470,7 +470,7 @@ static void set_default_gateway(struct gateway_data *data, goto done; } - if (do_ipv6 == TRUE && data->ipv6_gateway != NULL && + if (do_ipv6 && data->ipv6_gateway && g_strcmp0(data->ipv6_gateway->gateway, "::") == 0) { if (connman_inet_set_ipv6_gateway_interface(index) < 0) @@ -478,13 +478,13 @@ static void set_default_gateway(struct gateway_data *data, goto done; } - if (do_ipv6 == TRUE && data->ipv6_gateway != NULL) - status6 = connman_inet_set_ipv6_gateway_address(index, - data->ipv6_gateway->gateway); + if (do_ipv6 && data->ipv6_gateway) + status6 = __connman_inet_add_default_to_table(RT_TABLE_MAIN, + index, data->ipv6_gateway->gateway); - if (do_ipv4 == TRUE && data->ipv4_gateway != NULL) - status4 = connman_inet_set_gateway_address(index, - data->ipv4_gateway->gateway); + if (do_ipv4 && data->ipv4_gateway) + status4 = __connman_inet_add_default_to_table(RT_TABLE_MAIN, + index, data->ipv4_gateway->gateway); if (status4 < 0 || status6 < 0) return; @@ -497,22 +497,22 @@ static void unset_default_gateway(struct gateway_data *data, enum connman_ipconfig_type type) { int index; - int do_ipv4 = FALSE, do_ipv6 = FALSE; + bool do_ipv4 = false, do_ipv6 = false; if (type == CONNMAN_IPCONFIG_TYPE_IPV4) - do_ipv4 = TRUE; + do_ipv4 = true; else if (type == CONNMAN_IPCONFIG_TYPE_IPV6) - do_ipv6 = TRUE; + do_ipv6 = true; else - do_ipv4 = do_ipv6 = TRUE; + do_ipv4 = do_ipv6 = true; DBG("type %d gateway ipv4 %p ipv6 %p", type, data->ipv4_gateway, data->ipv6_gateway); - if (do_ipv4 == TRUE && data->ipv4_gateway != NULL && - data->ipv4_gateway->vpn == TRUE) { + if (do_ipv4 && data->ipv4_gateway && + data->ipv4_gateway->vpn) { connman_inet_clear_gateway_interface(data->index); - data->ipv4_gateway->active = FALSE; + data->ipv4_gateway->active = false; DBG("unset %p index %d vpn %s index %d phy %s", data, data->index, data->ipv4_gateway->vpn_ip, @@ -522,10 +522,10 @@ static void unset_default_gateway(struct gateway_data *data, return; } - if (do_ipv6 == TRUE && data->ipv6_gateway != NULL && - data->ipv6_gateway->vpn == TRUE) { + if (do_ipv6 && data->ipv6_gateway && + data->ipv6_gateway->vpn) { connman_inet_clear_ipv6_gateway_interface(data->index); - data->ipv6_gateway->active = FALSE; + data->ipv6_gateway->active = false; DBG("unset %p index %d vpn %s index %d phy %s", data, data->index, data->ipv6_gateway->vpn_ip, @@ -537,25 +537,25 @@ static void unset_default_gateway(struct gateway_data *data, index = __connman_service_get_index(data->service); - if (do_ipv4 == TRUE && data->ipv4_gateway != NULL && + if (do_ipv4 && data->ipv4_gateway && g_strcmp0(data->ipv4_gateway->gateway, "0.0.0.0") == 0) { connman_inet_clear_gateway_interface(index); return; } - if (do_ipv6 == TRUE && data->ipv6_gateway != NULL && + if (do_ipv6 && data->ipv6_gateway && g_strcmp0(data->ipv6_gateway->gateway, "::") == 0) { connman_inet_clear_ipv6_gateway_interface(index); return; } - if (do_ipv6 == TRUE && data->ipv6_gateway != NULL) + if (do_ipv6 && data->ipv6_gateway) connman_inet_clear_ipv6_gateway_address(index, data->ipv6_gateway->gateway); - if (do_ipv4 == TRUE && data->ipv4_gateway != NULL) + if (do_ipv4 && data->ipv4_gateway) connman_inet_clear_gateway_address(index, data->ipv4_gateway->gateway); } @@ -569,10 +569,10 @@ static struct gateway_data *find_default_gateway(void) g_hash_table_iter_init(&iter, gateway_hash); - while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + while (g_hash_table_iter_next(&iter, &key, &value)) { struct gateway_data *data = value; - if (found == NULL || data->order > order) { + if (!found || data->order > order) { found = data; order = data->order; @@ -583,48 +583,48 @@ static struct gateway_data *find_default_gateway(void) return found; } -static gboolean choose_default_gateway(struct gateway_data *data, +static bool choose_default_gateway(struct gateway_data *data, struct gateway_data *candidate) { - gboolean downgraded = FALSE; + bool downgraded = false; /* * If the current default is not active, then we mark * this one as default. If the other one is already active * we mark this one as non default. */ - if (data->ipv4_gateway != NULL) { - if (candidate->ipv4_gateway != NULL && - candidate->ipv4_gateway->active == FALSE) { + if (data->ipv4_gateway) { + if (candidate->ipv4_gateway && + !candidate->ipv4_gateway->active) { DBG("ipv4 downgrading %p", candidate); unset_default_gateway(candidate, CONNMAN_IPCONFIG_TYPE_IPV4); } - if (candidate->ipv4_gateway != NULL && - candidate->ipv4_gateway->active == TRUE && + if (candidate->ipv4_gateway && + candidate->ipv4_gateway->active && candidate->order > data->order) { DBG("ipv4 downgrading this %p", data); unset_default_gateway(data, CONNMAN_IPCONFIG_TYPE_IPV4); - downgraded = TRUE; + downgraded = true; } } - if (data->ipv6_gateway != NULL) { - if (candidate->ipv6_gateway != NULL && - candidate->ipv6_gateway->active == FALSE) { + if (data->ipv6_gateway) { + if (candidate->ipv6_gateway && + !candidate->ipv6_gateway->active) { DBG("ipv6 downgrading %p", candidate); unset_default_gateway(candidate, CONNMAN_IPCONFIG_TYPE_IPV6); } - if (candidate->ipv6_gateway != NULL && - candidate->ipv6_gateway->active == TRUE && + if (candidate->ipv6_gateway && + candidate->ipv6_gateway->active && candidate->order > data->order) { DBG("ipv6 downgrading this %p", data); unset_default_gateway(data, CONNMAN_IPCONFIG_TYPE_IPV6); - downgraded = TRUE; + downgraded = true; } } @@ -637,15 +637,15 @@ static void connection_newgateway(int index, const char *gateway) struct gateway_data *data; GHashTableIter iter; gpointer value, key; - gboolean found = FALSE; + bool found = false; DBG("index %d gateway %s", index, gateway); config = find_gateway(index, gateway); - if (config == NULL) + if (!config) return; - config->active = TRUE; + config->active = true; /* * It is possible that we have two default routes atm @@ -653,10 +653,10 @@ static void connection_newgateway(int index, const char *gateway) * same time. */ data = lookup_gateway_data(config); - if (data == NULL) + if (!data) return; - if (data->default_checked == TRUE) + if (data->default_checked) return; /* @@ -666,26 +666,26 @@ static void connection_newgateway(int index, const char *gateway) g_hash_table_iter_init(&iter, gateway_hash); - while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + while (g_hash_table_iter_next(&iter, &key, &value)) { struct gateway_data *candidate = value; if (candidate == data) continue; found = choose_default_gateway(data, candidate); - if (found == TRUE) + if (found) break; } - if (found == FALSE) { - if (data->ipv4_gateway != NULL) + if (!found) { + if (data->ipv4_gateway) set_default_gateway(data, CONNMAN_IPCONFIG_TYPE_IPV4); - if (data->ipv6_gateway != NULL) + if (data->ipv6_gateway) set_default_gateway(data, CONNMAN_IPCONFIG_TYPE_IPV6); } - data->default_checked = TRUE; + data->default_checked = true; } static void remove_gateway(gpointer user_data) @@ -694,14 +694,14 @@ static void remove_gateway(gpointer user_data) DBG("gateway ipv4 %p ipv6 %p", data->ipv4_gateway, data->ipv6_gateway); - if (data->ipv4_gateway != NULL) { + if (data->ipv4_gateway) { g_free(data->ipv4_gateway->gateway); g_free(data->ipv4_gateway->vpn_ip); g_free(data->ipv4_gateway->vpn_phy_ip); g_free(data->ipv4_gateway); } - if (data->ipv6_gateway != NULL) { + if (data->ipv6_gateway) { g_free(data->ipv6_gateway->gateway); g_free(data->ipv6_gateway->vpn_ip); g_free(data->ipv6_gateway->vpn_phy_ip); @@ -719,11 +719,11 @@ static void connection_delgateway(int index, const char *gateway) DBG("index %d gateway %s", index, gateway); config = find_gateway(index, gateway); - if (config != NULL) - config->active = FALSE; + if (config) + config->active = false; data = find_default_gateway(); - if (data != NULL) + if (data) set_default_gateway(data, CONNMAN_IPCONFIG_TYPE_ALL); } @@ -742,15 +742,15 @@ static struct gateway_data *find_active_gateway(void) g_hash_table_iter_init(&iter, gateway_hash); - while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + while (g_hash_table_iter_next(&iter, &key, &value)) { struct gateway_data *data = value; - if (data->ipv4_gateway != NULL && - data->ipv4_gateway->active == TRUE) + if (data->ipv4_gateway && + data->ipv4_gateway->active) return data; - if (data->ipv6_gateway != NULL && - data->ipv6_gateway->active == TRUE) + if (data->ipv6_gateway && + data->ipv6_gateway->active) return data; } @@ -766,7 +766,7 @@ static void update_order(void) g_hash_table_iter_init(&iter, gateway_hash); - while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + while (g_hash_table_iter_next(&iter, &key, &value)) { struct gateway_data *data = value; data->order = __connman_service_get_order(data->service); @@ -779,16 +779,16 @@ void __connman_connection_gateway_activate(struct connman_service *service, struct gateway_data *data = NULL; data = g_hash_table_lookup(gateway_hash, service); - if (data == NULL) + if (!data) return; DBG("gateway %p/%p type %d", data->ipv4_gateway, data->ipv6_gateway, type); if (type == CONNMAN_IPCONFIG_TYPE_IPV4) - data->ipv4_gateway->active = TRUE; + data->ipv4_gateway->active = true; else if (type == CONNMAN_IPCONFIG_TYPE_IPV6) - data->ipv6_gateway->active = TRUE; + data->ipv6_gateway->active = true; } static void add_host_route(int family, int index, const char *gateway, @@ -859,17 +859,17 @@ int __connman_connection_gateway_add(struct connman_service *service, * gateway for ipv4 is 0.0.0.0 and for ipv6 is ::, meaning the * interface */ - if (gateway == NULL && type == CONNMAN_IPCONFIG_TYPE_IPV4) + if (!gateway && type == CONNMAN_IPCONFIG_TYPE_IPV4) gateway = "0.0.0.0"; - if (gateway == NULL && type == CONNMAN_IPCONFIG_TYPE_IPV6) + if (!gateway && type == CONNMAN_IPCONFIG_TYPE_IPV6) gateway = "::"; DBG("service %p index %d gateway %s vpn ip %s type %d", service, index, gateway, peer, type); new_gateway = add_gateway(service, index, gateway, type); - if (new_gateway == NULL) + if (!new_gateway) return -EINVAL; active_gateway = find_active_gateway(); @@ -878,7 +878,7 @@ int __connman_connection_gateway_add(struct connman_service *service, active_gateway ? active_gateway->index : -1, new_gateway); if (type == CONNMAN_IPCONFIG_TYPE_IPV4 && - new_gateway->ipv4_gateway != NULL) { + new_gateway->ipv4_gateway) { add_host_route(AF_INET, index, gateway, service_type); __connman_service_nameserver_add_routes(service, new_gateway->ipv4_gateway->gateway); @@ -886,7 +886,7 @@ int __connman_connection_gateway_add(struct connman_service *service, } if (type == CONNMAN_IPCONFIG_TYPE_IPV6 && - new_gateway->ipv6_gateway != NULL) { + new_gateway->ipv6_gateway) { add_host_route(AF_INET6, index, gateway, service_type); __connman_service_nameserver_add_routes(service, new_gateway->ipv6_gateway->gateway); @@ -900,34 +900,32 @@ int __connman_connection_gateway_add(struct connman_service *service, } else { if (type == CONNMAN_IPCONFIG_TYPE_IPV4 && - new_gateway->ipv4_gateway != NULL) - new_gateway->ipv4_gateway->vpn = FALSE; + new_gateway->ipv4_gateway) + new_gateway->ipv4_gateway->vpn = false; if (type == CONNMAN_IPCONFIG_TYPE_IPV6 && - new_gateway->ipv6_gateway != NULL) - new_gateway->ipv6_gateway->vpn = FALSE; + new_gateway->ipv6_gateway) + new_gateway->ipv6_gateway->vpn = false; } - if (active_gateway == NULL) { + if (!active_gateway) { set_default_gateway(new_gateway, type); goto done; } if (type == CONNMAN_IPCONFIG_TYPE_IPV4 && - new_gateway->ipv4_gateway != NULL && - new_gateway->ipv4_gateway->vpn == TRUE) { - if (__connman_service_is_split_routing(new_gateway->service) == - FALSE) + new_gateway->ipv4_gateway && + new_gateway->ipv4_gateway->vpn) { + if (!__connman_service_is_split_routing(new_gateway->service)) connman_inet_clear_gateway_address( active_gateway->index, active_gateway->ipv4_gateway->gateway); } if (type == CONNMAN_IPCONFIG_TYPE_IPV6 && - new_gateway->ipv6_gateway != NULL && - new_gateway->ipv6_gateway->vpn == TRUE) { - if (__connman_service_is_split_routing(new_gateway->service) == - FALSE) + new_gateway->ipv6_gateway && + new_gateway->ipv6_gateway->vpn) { + if (!__connman_service_is_split_routing(new_gateway->service)) connman_inet_clear_ipv6_gateway_address( active_gateway->index, active_gateway->ipv6_gateway->gateway); @@ -950,29 +948,29 @@ void __connman_connection_gateway_remove(struct connman_service *service, enum connman_ipconfig_type type) { struct gateway_data *data = NULL; - gboolean set_default4 = FALSE, set_default6 = FALSE; - int do_ipv4 = FALSE, do_ipv6 = FALSE; + bool set_default4 = false, set_default6 = false; + bool do_ipv4 = false, do_ipv6 = false; int err; DBG("service %p type %d", service, type); if (type == CONNMAN_IPCONFIG_TYPE_IPV4) - do_ipv4 = TRUE; + do_ipv4 = true; else if (type == CONNMAN_IPCONFIG_TYPE_IPV6) - do_ipv6 = TRUE; + do_ipv6 = true; else - do_ipv4 = do_ipv6 = TRUE; + do_ipv4 = do_ipv6 = true; __connman_service_nameserver_del_routes(service, type); data = g_hash_table_lookup(gateway_hash, service); - if (data == NULL) + if (!data) return; - if (do_ipv4 == TRUE && data->ipv4_gateway != NULL) + if (do_ipv4 && data->ipv4_gateway) set_default4 = data->ipv4_gateway->vpn; - if (do_ipv6 == TRUE && data->ipv6_gateway != NULL) + if (do_ipv6 && data->ipv6_gateway) set_default6 = data->ipv6_gateway->vpn; DBG("ipv4 gateway %s ipv6 gateway %s vpn %d/%d", @@ -980,14 +978,15 @@ void __connman_connection_gateway_remove(struct connman_service *service, data->ipv6_gateway ? data->ipv6_gateway->gateway : "<null>", set_default4, set_default6); - if (do_ipv4 == TRUE && data->ipv4_gateway != NULL && - data->ipv4_gateway->vpn == TRUE && data->index >= 0) - connman_inet_del_host_route(data->index, + if (do_ipv4 && data->ipv4_gateway && + data->ipv4_gateway->vpn && data->index >= 0) + connman_inet_del_host_route(data->ipv4_gateway->vpn_phy_index, data->ipv4_gateway->gateway); - if (do_ipv6 == TRUE && data->ipv6_gateway != NULL && - data->ipv6_gateway->vpn == TRUE && data->index >= 0) - connman_inet_del_ipv6_host_route(data->index, + if (do_ipv6 && data->ipv6_gateway && + data->ipv6_gateway->vpn && data->index >= 0) + connman_inet_del_ipv6_host_route( + data->ipv6_gateway->vpn_phy_index, data->ipv6_gateway->gateway); err = disable_gateway(data, type); @@ -997,10 +996,10 @@ void __connman_connection_gateway_remove(struct connman_service *service, * settings are to be removed. */ if (do_ipv4 == do_ipv6 || - (data->ipv4_gateway != NULL && data->ipv6_gateway == NULL - && do_ipv4 == TRUE) || - (data->ipv6_gateway != NULL && data->ipv4_gateway == NULL - && do_ipv6 == TRUE) + (data->ipv4_gateway && !data->ipv6_gateway + && do_ipv4) || + (data->ipv6_gateway && !data->ipv4_gateway + && do_ipv6) ) { connman_service_unref(service); g_hash_table_remove(gateway_hash, service); @@ -1016,19 +1015,19 @@ void __connman_connection_gateway_remove(struct connman_service *service, */ if (set_default4 || set_default6 || err < 0) { data = find_default_gateway(); - if (data != NULL) + if (data) set_default_gateway(data, type); } } -gboolean __connman_connection_update_gateway(void) +bool __connman_connection_update_gateway(void) { struct gateway_data *default_gateway; - gboolean updated = FALSE; + bool updated = false; GHashTableIter iter; gpointer value, key; - if (gateway_hash == NULL) + if (!gateway_hash) return updated; update_order(); @@ -1045,30 +1044,30 @@ gboolean __connman_connection_update_gateway(void) */ g_hash_table_iter_init(&iter, gateway_hash); - while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + while (g_hash_table_iter_next(&iter, &key, &value)) { struct gateway_data *active_gateway = value; if (active_gateway == default_gateway) continue; - if (active_gateway->ipv4_gateway != NULL && - active_gateway->ipv4_gateway->active == TRUE) { + if (active_gateway->ipv4_gateway && + active_gateway->ipv4_gateway->active) { unset_default_gateway(active_gateway, CONNMAN_IPCONFIG_TYPE_IPV4); - updated = TRUE; + updated = true; } - if (active_gateway->ipv6_gateway != NULL && - active_gateway->ipv6_gateway->active == TRUE) { + if (active_gateway->ipv6_gateway && + active_gateway->ipv6_gateway->active) { unset_default_gateway(active_gateway, CONNMAN_IPCONFIG_TYPE_IPV6); - updated = TRUE; + updated = true; } } - if (updated && default_gateway != NULL) { + if (updated && default_gateway) { if (default_gateway->ipv4_gateway) set_default_gateway(default_gateway, CONNMAN_IPCONFIG_TYPE_IPV4); @@ -1088,14 +1087,14 @@ int __connman_connection_get_vpn_index(int phy_index) g_hash_table_iter_init(&iter, gateway_hash); - while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + while (g_hash_table_iter_next(&iter, &key, &value)) { struct gateway_data *data = value; - if (data->ipv4_gateway != NULL && + if (data->ipv4_gateway && data->ipv4_gateway->vpn_phy_index == phy_index) return data->index; - if (data->ipv6_gateway != NULL && + if (data->ipv6_gateway && data->ipv6_gateway->vpn_phy_index == phy_index) return data->index; } @@ -1130,7 +1129,7 @@ void __connman_connection_cleanup(void) g_hash_table_iter_init(&iter, gateway_hash); - while (g_hash_table_iter_next(&iter, &key, &value) == TRUE) { + while (g_hash_table_iter_next(&iter, &key, &value)) { struct gateway_data *data = value; disable_gateway(data, CONNMAN_IPCONFIG_TYPE_ALL); |