From: Daniel Wagner <[email protected]>

---
 src/service.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/src/service.c b/src/service.c
index f449357..58b182b 100644
--- a/src/service.c
+++ b/src/service.c
@@ -3238,6 +3238,25 @@ static void report_error_cb(struct connman_service 
*service,
        }
 }
 
+static void enable_gateway(struct connman_service *service)
+{
+       const char *ipv4_gw, *ipv6_gw;
+       const char *vpn_ip = NULL;
+
+       ipv4_gw = __connman_ipconfig_get_gateway(service->ipconfig_ipv4);
+       ipv6_gw = __connman_ipconfig_get_gateway(service->ipconfig_ipv6);
+
+       if (service->type == CONNMAN_SERVICE_TYPE_VPN) {
+               if (service->ipconfig_ipv4)
+                       vpn_ip = 
__connman_ipconfig_get_peer(service->ipconfig_ipv4);
+               else if (service->ipconfig_ipv6)
+                       vpn_ip = 
__connman_ipconfig_get_peer(service->ipconfig_ipv6);
+       }
+
+       __connman_connection_gateway_add(service, ipv4_gw, ipv6_gw,
+                                               vpn_ip, service->domainname);
+}
+
 int __connman_service_indicate_state(struct connman_service *service,
                                        enum connman_service_state state)
 {
@@ -3356,6 +3375,8 @@ int __connman_service_indicate_state(struct 
connman_service *service,
                                                        "WiFi.UseWPS", FALSE);
                }
 
+               enable_gateway(service);
+
                default_changed();
        } else if (state == CONNMAN_SERVICE_STATE_DISCONNECT) {
                __connman_location_finish(service);
-- 
1.7.4

_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman

Reply via email to