g_free(element->ipv4.broadcast);
g_free(element->ipv4.nameserver);
g_free(element->ipv4.timeserver);
+ g_free(element->ipv4.pac);
g_free(element->devname);
g_free(element->path);
g_free(element->name);
*((char **) value) = element->ipv4.timeserver;
__connman_element_unlock(element);
break;
+ case CONNMAN_PROPERTY_ID_IPV4_PAC:
+ if (element->ipv4.pac == NULL)
+ return connman_element_get_value(element->parent,
+ id, value);
+ __connman_element_lock(element);
+ *((char **) value) = element->ipv4.pac;
+ __connman_element_unlock(element);
+ break;
default:
return -EINVAL;
}
const char *method = NULL;
const char *address = NULL, *netmask = NULL, *gateway = NULL;
const char *broadcast = NULL, *nameserver = NULL;
- const char *timeserver = NULL;
+ const char *timeserver = NULL, *pac = NULL;
connman_element_get_value(element,
CONNMAN_PROPERTY_ID_IPV4_METHOD, &method);
CONNMAN_PROPERTY_ID_IPV4_NAMESERVER, &nameserver);
connman_element_get_value(element,
CONNMAN_PROPERTY_ID_IPV4_TIMESERVER, ×erver);
+ connman_element_get_value(element,
+ CONNMAN_PROPERTY_ID_IPV4_PAC, &pac);
if (method != NULL)
connman_dbus_dict_append_basic(dict, "IPv4.Method",
connman_dbus_dict_append_basic(dict, "IPv4.Timeserver",
DBUS_TYPE_STRING, ×erver);
+ if (pac != NULL)
+ connman_dbus_dict_append_basic(dict, "IPv4.PAC",
+ DBUS_TYPE_STRING, &pac);
+
return 0;
}
dbus_message_iter_get_basic(value, ×erver);
g_free(element->ipv4.timeserver);
- element->ipv4.nameserver = g_strdup(timeserver);
+ element->ipv4.timeserver = g_strdup(timeserver);
+
+ connman_element_update(element);
+ } else if (g_str_equal(name, "IPv4.PAC") == TRUE) {
+ const char *pac;
+
+ if (type != DBUS_TYPE_STRING)
+ return -EINVAL;
+
+ dbus_message_iter_get_basic(value, &pac);
+
+ g_free(element->ipv4.pac);
+ element->ipv4.pac = g_strdup(pac);
connman_element_update(element);
}
enum connman_provider_error error;
char *name;
char *type;
- char *pac;
char *dns;
char *domain;
DBusMessage *pending;
g_free(element->ipv4.broadcast);
element->ipv4.broadcast = g_strdup(provider->element.ipv4.broadcast);
+ g_free(element->ipv4.pac);
+ element->ipv4.pac = g_strdup(provider->element.ipv4.pac);
+
DBG("VPN exist");
}
g_free(provider->element.ipv4.netmask);
g_free(provider->element.ipv4.gateway);
g_free(provider->element.ipv4.broadcast);
+ g_free(provider->element.ipv4.pac);
provider->element.ipv4.address = NULL;
provider->element.ipv4.netmask = NULL;
provider->element.ipv4.gateway = NULL;
provider->element.ipv4.broadcast = NULL;
+ provider->element.ipv4.pac = NULL;
if (provider->driver != NULL && provider->driver->connect != NULL)
err = provider->driver->connect(provider);
g_free(provider->domain);
g_free(provider->identifier);
g_free(provider->dns);
- g_free(provider->pac);
}
static void unregister_provider(gpointer data)
provider->element.ipv4.netmask = NULL;
provider->element.ipv4.gateway = NULL;
provider->element.ipv4.broadcast = NULL;
+ provider->element.ipv4.pac = NULL;
provider->name = NULL;
provider->type = NULL;
- provider->pac = NULL;
provider->dns = NULL;
provider->domain = NULL;
provider->identifier = NULL;
g_free(provider->element.ipv4.netmask);
provider->element.ipv4.netmask = g_strdup(value);
} else if (g_str_equal(key, "PAC") == TRUE) {
- g_free(provider->pac);
- provider->pac = g_strdup(value);
+ g_free(provider->element.ipv4.pac);
+ provider->element.ipv4.pac = g_strdup(value);
} else if (g_str_equal(key, "DNS") == TRUE) {
g_free(provider->dns);
provider->dns = g_strdup(value);