summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2011-02-25 14:44:06 +0100
committerSamuel Ortiz <sameo@linux.intel.com>2011-02-25 14:44:06 +0100
commit048e3476ab461fccba0880d657b0b2c90edaa82a (patch)
tree4e97574d2f2ab4b5bd15d9452a80b6eee6944935 /plugins
parent2c0a9857811e9236866193427622d0480c3351ae (diff)
downloadconnman-048e3476ab461fccba0880d657b0b2c90edaa82a.tar.gz
connman-048e3476ab461fccba0880d657b0b2c90edaa82a.tar.bz2
connman-048e3476ab461fccba0880d657b0b2c90edaa82a.zip
vpnc: Port to the new provider APIs
Diffstat (limited to 'plugins')
-rw-r--r--plugins/vpnc.c31
1 files changed, 26 insertions, 5 deletions
diff --git a/plugins/vpnc.c b/plugins/vpnc.c
index 4e48611b..e769e384 100644
--- a/plugins/vpnc.c
+++ b/plugins/vpnc.c
@@ -36,6 +36,7 @@
#include <connman/provider.h>
#include <connman/log.h>
#include <connman/task.h>
+#include <connman/ipconfig.h>
#include <connman/dbus.h>
#include "vpn.h"
@@ -77,6 +78,8 @@ struct {
static int vc_notify(DBusMessage *msg, struct connman_provider *provider)
{
DBusMessageIter iter, dict;
+ char *address = NULL, *netmask = NULL, *gateway = NULL;
+ struct connman_ipaddress *ipaddress;
const char *reason, *key, *value;
dbus_message_iter_init(msg, &iter);
@@ -105,19 +108,19 @@ static int vc_notify(DBusMessage *msg, struct connman_provider *provider)
DBG("%s = %s", key, value);
if (!strcmp(key, "VPNGATEWAY"))
- connman_provider_set_string(provider, "Gateway", value);
+ gateway = g_strdup(value);
if (!strcmp(key, "INTERNAL_IP4_ADDRESS"))
- connman_provider_set_string(provider, "Address", value);
+ address = g_strdup(value);
if (!strcmp(key, "INTERNAL_IP4_NETMASK"))
- connman_provider_set_string(provider, "Netmask", value);
+ netmask = g_strdup(value);
if (!strcmp(key, "INTERNAL_IP4_DNS"))
- connman_provider_set_string(provider, "DNS", value);
+ connman_provider_set_nameservers(provider, value);
if (!strcmp(key, "CISCO_DEF_DOMAIN"))
- connman_provider_set_string(provider, "Domain", value);
+ connman_provider_set_domain(provider, value);
if (g_str_has_prefix(key, "CISCO_SPLIT_INC") == TRUE ||
g_str_has_prefix(key, "CISCO_IPV6_SPLIT_INC") == TRUE)
@@ -126,6 +129,24 @@ static int vc_notify(DBusMessage *msg, struct connman_provider *provider)
dbus_message_iter_next(&dict);
}
+
+ ipaddress = connman_ipaddress_alloc(AF_INET);
+ if (ipaddress == NULL) {
+ g_free(address);
+ g_free(netmask);
+ g_free(gateway);
+
+ return VPN_STATE_FAILURE;
+ }
+
+ connman_ipaddress_set_ipv4(ipaddress, address, netmask, gateway);
+ connman_provider_set_ipaddress(provider, ipaddress);
+
+ g_free(address);
+ g_free(netmask);
+ g_free(gateway);
+ connman_ipaddress_free(ipaddress);
+
return VPN_STATE_CONNECT;
}