diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2011-06-22 13:37:49 +0300 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-06-27 16:15:09 +0200 |
commit | 4abda5f82f916f45f4ab9b695c9f76969da9db55 (patch) | |
tree | 43532b40995b0da0fc82f66e7a8369c175bfcbd3 /src/network.c | |
parent | 26eb47a70c46d4b6ade63e7ec1de0d5767cf7ce3 (diff) | |
download | connman-4abda5f82f916f45f4ab9b695c9f76969da9db55.tar.gz connman-4abda5f82f916f45f4ab9b695c9f76969da9db55.tar.bz2 connman-4abda5f82f916f45f4ab9b695c9f76969da9db55.zip |
network: Clear IPv6 autoconfigured routes when disconnected.
Diffstat (limited to 'src/network.c')
-rw-r--r-- | src/network.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/network.c b/src/network.c index 0ae77ca9..ac7bd075 100644 --- a/src/network.c +++ b/src/network.c @@ -1104,6 +1104,17 @@ static gboolean set_connected(gpointer user_data) __connman_ipconfig_address_unset(ipconfig_ipv4); __connman_ipconfig_address_unset(ipconfig_ipv6); + /* + * Special handling for IPv6 autoconfigured address. + * The simplest way to remove autoconfigured routes is to + * disable IPv6 temporarily so that kernel will do the cleanup + * automagically. + */ + if (ipv6_method == CONNMAN_IPCONFIG_METHOD_AUTO) { + __connman_ipconfig_disable_ipv6(ipconfig_ipv6); + __connman_ipconfig_enable_ipv6(ipconfig_ipv6); + } + __connman_service_indicate_state(service, CONNMAN_SERVICE_STATE_IDLE, CONNMAN_IPCONFIG_TYPE_IPV4); |