On Thu, May 16, 2013 at 11:19 PM, Thomas Bächler <[email protected]> wrote: > 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. > > V2: Make sure not to flush the link local address. > --- > src/lib/ip | 5 ++++- > src/lib/network | 1 - > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/lib/ip b/src/lib/ip > index 2a84c0d..14ed727 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,9 @@ ip_unset() { > fi > > [[ $DNS ]] && resolvconf -d "$Interface" > + ip addr flush dev "$Interface" scope host &>/dev/null > + ip addr flush dev "$Interface" scope site &>/dev/null > + ip addr flush dev "$Interface" scope global &>/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.3 >
Your contribution is much appreciated, thanks, - Jouke
