enum connman_ipconfig_method method);
void connman_ipconfig_bind(struct connman_ipconfig *ipconfig,
struct connman_ipaddress *ipaddress);
+void __connman_ipconfig_disable_ipv6(struct connman_ipconfig *ipconfig);
#ifdef __cplusplus
}
set_ipv6_state(ipdevice->ifname, TRUE);
}
+void __connman_ipconfig_disable_ipv6(struct connman_ipconfig *ipconfig)
+{
+ if (ipconfig == NULL || ipconfig->type != CONNMAN_IPCONFIG_TYPE_IPV6)
+ return;
+
+ disable_ipv6(ipconfig);
+}
+
int __connman_ipconfig_enable(struct connman_ipconfig *ipconfig)
{
struct connman_ipdevice *ipdevice;
ipconfig->method = CONNMAN_IPCONFIG_METHOD_OFF;
if (ipconfig->type == CONNMAN_IPCONFIG_TYPE_IPV6) {
- if (ipconfig->method == CONNMAN_IPCONFIG_METHOD_OFF)
- disable_ipv6(ipconfig);
- else if (ipconfig->method == CONNMAN_IPCONFIG_METHOD_AUTO ||
+ if (ipconfig->method == CONNMAN_IPCONFIG_METHOD_AUTO ||
ipconfig->method == CONNMAN_IPCONFIG_METHOD_MANUAL) {
- enable_ipv6(ipconfig);
__connman_ipconfig_enable(ipconfig);
-
- if (ipconfig->ops_data) {
- struct connman_service *service =
- ipconfig->ops_data;
- struct connman_network *network;
- network = __connman_service_get_network(
- service);
- if (network)
- __connman_network_set_ipconfig(network,
- NULL, ipconfig);
- }
+ enable_ipv6(ipconfig);
}
}
if (state == CONNMAN_SERVICE_STATE_READY) {
enum connman_service_proxy_method proxy_config;
+ enum connman_ipconfig_method method;
set_reconnect_state(service, TRUE);
}
default_changed();
+
+ method = __connman_ipconfig_get_method(service->ipconfig_ipv6);
+ if (method == CONNMAN_IPCONFIG_METHOD_OFF)
+ __connman_ipconfig_disable_ipv6(
+ service->ipconfig_ipv6);
+
} else if (state == CONNMAN_SERVICE_STATE_DISCONNECT) {
__connman_location_finish(service);