The route is created automatically but it is not needed in VPN.
---
src/connection.c | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/connection.c b/src/connection.c
index c4c8643..0dea508 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -41,6 +41,7 @@ struct gateway_config {
char *vpn_ip;
int vpn_phy_index;
char *vpn_phy_ip;
+ char *vpn_phy_gateway;
};
struct gateway_data {
@@ -160,7 +161,9 @@ static void set_vpn_routes(struct gateway_config *config,
config->vpn_phy_index = data->index;
}
- DBG("vpn %s phy %s index %d", config->vpn_ip,
+ config->vpn_phy_gateway = g_strdup(gateway);
+
+ DBG("vpn %s gw %s phy %sindex %d", config->vpn_ip, gateway,
config->vpn_phy_ip, config->vpn_phy_index);
}
@@ -347,12 +350,15 @@ static void set_default_gateway(struct gateway_data *data,
data->ipv4_gateway->vpn == TRUE) {
connman_inet_set_gateway_address(data->index,
data->ipv4_gateway->vpn_ip);
+ connman_inet_del_network_route(data->index,
+ data->ipv4_gateway->vpn_phy_gateway);
data->ipv4_gateway->active = TRUE;
- DBG("set %p index %d vpn %s index %d phy %s",
+ DBG("set %p index %d vpn %s index %d phy %s gw %s",
data, data->index, data->ipv4_gateway->vpn_ip,
data->ipv4_gateway->vpn_phy_index,
- data->ipv4_gateway->vpn_phy_ip);
+ data->ipv4_gateway->vpn_phy_ip,
+ data->ipv4_gateway->vpn_phy_gateway);
__connman_service_indicate_default(data->service);
@@ -363,12 +369,15 @@ static void set_default_gateway(struct gateway_data *data,
data->ipv6_gateway->vpn == TRUE) {
connman_inet_set_ipv6_gateway_address(data->index,
data->ipv6_gateway->vpn_ip);
+ connman_inet_del_ipv6_host_route(data->index,
+ data->ipv6_gateway->vpn_phy_gateway);
data->ipv6_gateway->active = TRUE;
- DBG("set %p index %d vpn %s index %d phy %s",
+ DBG("set %p index %d vpn %s index %d phy %s gw %s",
data, data->index, data->ipv6_gateway->vpn_ip,
data->ipv6_gateway->vpn_phy_index,
- data->ipv6_gateway->vpn_phy_ip);
+ data->ipv6_gateway->vpn_phy_ip,
+ data->ipv6_gateway->vpn_phy_gateway);
__connman_service_indicate_default(data->service);
@@ -514,6 +523,7 @@ static void remove_gateway(gpointer user_data)
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->vpn_phy_gateway);
g_free(data->ipv4_gateway);
}
@@ -521,6 +531,7 @@ static void remove_gateway(gpointer user_data)
g_free(data->ipv6_gateway->gateway);
g_free(data->ipv6_gateway->vpn_ip);
g_free(data->ipv6_gateway->vpn_phy_ip);
+ g_free(data->ipv6_gateway->vpn_phy_gateway);
g_free(data->ipv6_gateway);
}
--
1.7.1
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman