diff options
author | Daniel Wagner <daniel.wagner@bmw-carit.de> | 2011-02-25 14:37:34 +0100 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-02-25 14:37:34 +0100 |
commit | 2c0a9857811e9236866193427622d0480c3351ae (patch) | |
tree | 5bed666e093be506c7326a54afc5560e681ba91f /plugins | |
parent | 47f9d3e57e149cd752d2009c2d17f6c35264b61a (diff) | |
download | connman-2c0a9857811e9236866193427622d0480c3351ae.tar.gz connman-2c0a9857811e9236866193427622d0480c3351ae.tar.bz2 connman-2c0a9857811e9236866193427622d0480c3351ae.zip |
provider: Remove IPv4 element registration
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/openconnect.c | 32 | ||||
-rw-r--r-- | plugins/openvpn.c | 42 |
2 files changed, 60 insertions, 14 deletions
diff --git a/plugins/openconnect.c b/plugins/openconnect.c index 795a5f61..45c78fe5 100644 --- a/plugins/openconnect.c +++ b/plugins/openconnect.c @@ -26,6 +26,7 @@ #include <string.h> #include <errno.h> #include <unistd.h> +#include <net/if.h> #include <glib.h> @@ -34,6 +35,7 @@ #include <connman/provider.h> #include <connman/log.h> #include <connman/task.h> +#include <connman/ipconfig.h> #include "vpn.h" @@ -42,6 +44,8 @@ static int oc_notify(DBusMessage *msg, struct connman_provider *provider) DBusMessageIter iter, dict; const char *reason, *key, *value; const char *domain = NULL; + char *address = NULL, *netmask = NULL, *gateway = NULL; + struct connman_ipaddress *ipaddress; dbus_message_iter_init(msg, &iter); @@ -72,19 +76,19 @@ static int oc_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_PROXY_PAC")) - connman_provider_set_string(provider, "PAC", value); + connman_provider_set_pac(provider, value); if (domain == NULL && !strcmp(key, "CISCO_DEF_DOMAIN")) domain = value; @@ -96,7 +100,23 @@ static int oc_notify(DBusMessage *msg, struct connman_provider *provider) dbus_message_iter_next(&dict); } - connman_provider_set_string(provider, "Domain", domain); + 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); + connman_provider_set_domain(provider, domain); + + g_free(address); + g_free(netmask); + g_free(gateway); + connman_ipaddress_free(ipaddress); return VPN_STATE_CONNECT; } diff --git a/plugins/openvpn.c b/plugins/openvpn.c index 60e75dc0..b1cad607 100644 --- a/plugins/openvpn.c +++ b/plugins/openvpn.c @@ -37,6 +37,7 @@ #include <connman/log.h> #include <connman/task.h> #include <connman/dbus.h> +#include <connman/ipconfig.h> #include "vpn.h" @@ -97,7 +98,9 @@ static int ov_notify(DBusMessage *msg, struct connman_provider *provider) DBusMessageIter iter, dict; const char *reason, *key, *value; const char *domain = NULL; - char *dns_entries = NULL; + char *nameservers = NULL; + char *address = NULL, *gateway = NULL, *peer = NULL; + struct connman_ipaddress *ipaddress; dbus_message_iter_init(msg, &iter); @@ -126,28 +129,51 @@ static int ov_notify(DBusMessage *msg, struct connman_provider *provider) DBG("%s = %s", key, value); - if (!strcmp(key, "trusted_ip")) + if (!strcmp(key, "trusted_ip")) { connman_provider_set_string(provider, "Gateway", value); + gateway = g_strdup(value); + } - if (!strcmp(key, "ifconfig_local")) + if (!strcmp(key, "ifconfig_local")) { connman_provider_set_string(provider, "Address", value); + address = g_strdup(value); + } - if (!strcmp(key, "ifconfig_remote")) + if (!strcmp(key, "ifconfig_remote")) { connman_provider_set_string(provider, "Peer", value); + peer = g_strdup(value); + } if (g_str_has_prefix(key, "route_") == TRUE) connman_provider_append_route(provider, key, value); - ov_append_dns_entries(key, value, &dns_entries); + ov_append_dns_entries(key, value, &nameservers); dbus_message_iter_next(&dict); } - if (dns_entries != NULL) { - connman_provider_set_string(provider, "DNS", dns_entries); - g_free(dns_entries); + ipaddress = connman_ipaddress_alloc(AF_INET); + if (ipaddress == NULL) { + g_free(nameservers); + g_free(address); + g_free(gateway); + g_free(peer); + + return VPN_STATE_FAILURE; } + connman_ipaddress_set_ipv4(ipaddress, address, NULL, gateway); + connman_ipaddress_set_peer(ipaddress, peer); + connman_provider_set_ipaddress(provider, ipaddress); + + connman_provider_set_nameservers(provider, nameservers); + + g_free(nameservers); + g_free(address); + g_free(gateway); + g_free(peer); + connman_ipaddress_free(ipaddress); + return VPN_STATE_CONNECT; } |