• F
    ipv6: bump genid when delete/add address · 439677d7
    fan.du 提交于
    Server           Client
    2001:1::803/64  <-> 2001:1::805/64
    2001:2::804/64  <-> 2001:2::806/64
    
    Server side fib binary tree looks like this:
    
                                       (2001:/64)
                                       /
                                      /
                       ffff88002103c380
                     /                 \
         (2)        /                   \
     (2001::803/128)                     ffff880037ac07c0
                                        /               \
                                       /                 \  (3)
                          ffff880037ac0640               (2001::806/128)
                           /             \
                 (1)      /               \
            (2001::804/128)               (2001::805/128)
    
    Delete 2001::804/64 won't cause prefix route deleted as well as rt in (3)
    destinate to 2001::806 with source address as 2001::804/64. That's because
    2001::803/64 is still alive, which make onlink=1 in ipv6_del_addr, this is
    where the substantial difference between same prefix configuration and
    different prefix configuration :) So packet are still transmitted out to
    2001::806 with source address as 2001::804/64.
    
    So bump genid will clear rt in (3), and up layer protocol will eventually
    find the right one for themselves.
    
    This problem arised from the discussion in here:
    http://marc.info/?l=linux-netdev&m=137404469219410&w=4Signed-off-by: NFan Du <fan.du@windriver.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    439677d7
addrconf.c 125.4 KB