summaryrefslogtreecommitdiff
path: root/src/ipconfig.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2010-07-29 20:28:32 -0700
committerMarcel Holtmann <marcel@holtmann.org>2010-07-29 20:28:32 -0700
commitee452f2e491e49245db4c9ca1ec79033a27ded04 (patch)
tree92ec274d913bd860861af98124d137835895e085 /src/ipconfig.c
parentfaf44b15e45cf80da3835bb81c9f8d1a80382bae (diff)
downloadconnman-ee452f2e491e49245db4c9ca1ec79033a27ded04.tar.gz
connman-ee452f2e491e49245db4c9ca1ec79033a27ded04.tar.bz2
connman-ee452f2e491e49245db4c9ca1ec79033a27ded04.zip
Add support for proxy auto-configuration D-Bus properties
Diffstat (limited to 'src/ipconfig.c')
-rw-r--r--src/ipconfig.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/ipconfig.c b/src/ipconfig.c
index 9d9ff4ad..bdc1cda6 100644
--- a/src/ipconfig.c
+++ b/src/ipconfig.c
@@ -73,6 +73,7 @@ struct connman_ipdevice {
GSList *address_list;
char *ipv4_gateway;
char *ipv6_gateway;
+ char *pac;
struct connman_ipconfig *config;
@@ -302,6 +303,7 @@ static void free_ipdevice(gpointer data)
free_address_list(ipdevice);
g_free(ipdevice->ipv4_gateway);
g_free(ipdevice->ipv6_gateway);
+ g_free(ipdevice->pac);
g_free(ipdevice->address);
g_free(ipdevice->ifname);
@@ -1563,8 +1565,23 @@ int __connman_ipconfig_set_config(struct connman_ipconfig *ipconfig,
void __connman_ipconfig_append_proxy(struct connman_ipconfig *ipconfig,
DBusMessageIter *iter)
{
+ struct connman_ipdevice *ipdevice;
const char *method = "direct";
+ ipdevice = g_hash_table_lookup(ipdevice_hash,
+ GINT_TO_POINTER(ipconfig->index));
+ if (ipdevice == NULL)
+ goto done;
+
+ if (ipdevice->pac == NULL)
+ goto done;
+
+ method = "auto-config";
+
+ connman_dbus_dict_append_basic(iter, "URL",
+ DBUS_TYPE_STRING, &ipdevice->pac);
+
+done:
connman_dbus_dict_append_basic(iter, "Method",
DBUS_TYPE_STRING, &method);
}