We got some nameservers from VPN server but we never sent the
nameserver list to connmand vpn plugin.

Fixes BMC#25966
---
 vpn/vpn-provider.c | 48 +++++++++++++++++++++++++++---------------------
 1 file changed, 27 insertions(+), 21 deletions(-)

diff --git a/vpn/vpn-provider.c b/vpn/vpn-provider.c
index de3931f..d591605 100644
--- a/vpn/vpn-provider.c
+++ b/vpn/vpn-provider.c
@@ -1234,6 +1234,27 @@ static const char *state2string(enum vpn_provider_state 
state)
        return NULL;
 }
 
+static void append_nameservers(DBusMessageIter *iter, char **servers)
+{
+       int i;
+
+       DBG("%p", servers);
+
+       for (i = 0; servers[i] != NULL; i++) {
+               DBG("servers[%d] %s", i, servers[i]);
+               dbus_message_iter_append_basic(iter,
+                                       DBUS_TYPE_STRING, &servers[i]);
+       }
+}
+
+static void append_dns(DBusMessageIter *iter, void *user_data)
+{
+       struct vpn_provider *provider = user_data;
+
+       if (provider->nameservers != NULL)
+               append_nameservers(iter, provider->nameservers);
+}
+
 static int provider_indicate_state(struct vpn_provider *provider,
                                enum vpn_provider_state state)
 {
@@ -1261,6 +1282,12 @@ static int provider_indicate_state(struct vpn_provider 
*provider,
                        connman_dbus_property_changed_dict(provider->path,
                                        VPN_CONNECTION_INTERFACE, "IPv6",
                                        append_ipv6, provider);
+
+               connman_dbus_property_changed_array(provider->path,
+                                               VPN_CONNECTION_INTERFACE,
+                                               "Nameservers",
+                                               DBUS_TYPE_STRING,
+                                               append_dns, provider);
        }
 
        if (old_state != state)
@@ -1278,27 +1305,6 @@ static int provider_indicate_state(struct vpn_provider 
*provider,
        return 0;
 }
 
-static void append_nameservers(DBusMessageIter *iter, char **servers)
-{
-       int i;
-
-       DBG("%p", servers);
-
-       for (i = 0; servers[i] != NULL; i++) {
-               DBG("servers[%d] %s", i, servers[i]);
-               dbus_message_iter_append_basic(iter,
-                                       DBUS_TYPE_STRING, &servers[i]);
-       }
-}
-
-static void append_dns(DBusMessageIter *iter, void *user_data)
-{
-       struct vpn_provider *provider = user_data;
-
-       if (provider->nameservers != NULL)
-               append_nameservers(iter, provider->nameservers);
-}
-
 static void append_state(DBusMessageIter *iter,
                                        struct vpn_provider *provider)
 {
-- 
1.7.11.4

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

Reply via email to