• D
    net: ipv6: Make address flushing on ifdown optional · f1705ec1
    David Ahern 提交于
    Currently, all ipv6 addresses are flushed when the interface is configured
    down, including global, static addresses:
    
        $ ip -6 addr show dev eth1
        3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
            inet6 2100:1::2/120 scope global
               valid_lft forever preferred_lft forever
            inet6 fe80::e0:f9ff:fe79:34bd/64 scope link
               valid_lft forever preferred_lft forever
        $ ip link set dev eth1 down
        $ ip -6 addr show dev eth1
        << nothing; all addresses have been flushed>>
    
    Add a new sysctl to make this behavior optional. The new setting defaults to
    flush all addresses to maintain backwards compatibility. When the set global
    addresses with no expire times are not flushed on an admin down. The sysctl
    is per-interface or system-wide for all interfaces
    
        $ sysctl -w net.ipv6.conf.eth1.keep_addr_on_down=1
    or
        $ sysctl -w net.ipv6.conf.all.keep_addr_on_down=1
    
    Will keep addresses on eth1 on an admin down.
    
        $ ip -6 addr show dev eth1
        3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
            inet6 2100:1::2/120 scope global
               valid_lft forever preferred_lft forever
            inet6 fe80::e0:f9ff:fe79:34bd/64 scope link
               valid_lft forever preferred_lft forever
        $ ip link set dev eth1 down
        $ ip -6 addr show dev eth1
        3: eth1: <BROADCAST,MULTICAST> mtu 1500 state DOWN qlen 1000
            inet6 2100:1::2/120 scope global tentative
               valid_lft forever preferred_lft forever
            inet6 fe80::e0:f9ff:fe79:34bd/64 scope link tentative
               valid_lft forever preferred_lft forever
    Signed-off-by: NDavid Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    f1705ec1
ipv6.h 3.6 KB