Commit 7a2c4378 authored by Jussi Laakkonen's avatar Jussi Laakkonen

service: Toggle VPN transport IPv6 when split routing changes

[service] Toggle VPN transport IPv6 when split routing changes. JB#48769

Enable/disable IPv6 on VPNs transport when the split routing value is
changed. This is important in both cases when a connected IPv4 VPN has
the value changed as with split routing -> non-split routing IPv6 should
be disabled as well as non-split-routing -> split routed IPv6 should be
re-enabled.
parent d68291d6
......@@ -745,9 +745,16 @@ void __connman_service_split_routing_changed(struct connman_service *service)
void __connman_service_set_split_routing(struct connman_service *service,
bool value)
{
bool change;
if (service->type != CONNMAN_SERVICE_TYPE_VPN)
return;
DBG("%p/%s value %s", service, service->identifier,
value ? "true" : "false");
change = service->do_split_routing != value;
service->do_split_routing = value;
if (service->do_split_routing)
......@@ -755,6 +762,19 @@ void __connman_service_set_split_routing(struct connman_service *service,
else
service->order = 10;
/*
* Change IPv6 on the VPN transport when split routing value changes
* on a connected IPv4 VPN.
*/
if (connman_provider_get_family(service->provider) == AF_INET &&
change && is_connected(service)) {
if (__connman_provider_toggle_transport_ipv6(service->provider,
!value))
DBG("cannot toggle IPv6 on transport of service %p"
"provider %p", service,
service->provider);
}
/*
* In order to make sure the value is propagated also when loading the
* VPN service signal the value regardless of the value change.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment