[arch-projects] [netctl] [RFC] Flush the interface configuration in ip_unset instead of bring_interface_down.

Thomas Bächler thomas at archlinux.org
Thu May 9 17:29:25 EDT 2013


When switching networks in auto.action, the addresses are not flushed. This
is especially problematic with stateless ipv6 autoconfigutation, as invalid
IPs may stay around until their (potentially very long) lifetime has expired.

bring_interface_down is always called after ip_unset everywhere else, so
this change does not affect anything else.
---
 src/lib/ip      | 3 ++-
 src/lib/network | 1 -
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/ip b/src/lib/ip
index 2a84c0d..c60b350 100644
--- a/src/lib/ip
+++ b/src/lib/ip
@@ -175,7 +175,7 @@ ip_set() {
 }
 
 
-## Clean up the dynamic part of an IP configuration
+## Clean up the IP configuration
 # $Interface: interface name
 # $IP: type of IPv4 configuration
 # $IP6: type of IPv6 configuration
@@ -202,6 +202,7 @@ ip_unset() {
     fi
 
     [[ $DNS ]] && resolvconf -d "$Interface"
+    ip addr flush dev "$Interface" &>/dev/null
 }
 
 
diff --git a/src/lib/network b/src/lib/network
index 6ac9d75..7dfe0b5 100755
--- a/src/lib/network
+++ b/src/lib/network
@@ -31,7 +31,6 @@ bring_interface_up() {
 # $1: interface name
 bring_interface_down() {
     local interface=$1
-    ip addr flush dev "$interface" &>/dev/null
     ip link set dev "$interface" down &>/dev/null
     # We reuse the up timeout (down normally is faster)
     timeout_wait "${TimeoutUp:-5}" '! interface_is_up "$interface"'
-- 
1.8.2.2



More information about the arch-projects mailing list