• Li Wei's avatar
    ipv6: Fix for adding multicast route for loopback device automatically. · 4af04aba
    Li Wei authored
    There is no obvious reason to add a default multicast route for loopback
    devices, otherwise there would be a route entry whose dst.error set to
    -ENETUNREACH that would blocking all multicast packets.
    
    ====================
    
    [ more detailed explanation ]
    
    The problem is that the resulting routing table depends on the sequence
    of interface's initialization and in some situation, that would block all
    muticast packets. Suppose there are two interfaces on my computer
    (lo and eth0), if we initailize 'lo' before 'eth0', the resuting routing
    table(for multicast) would be
    
    # ip -6 route show | grep ff00::
    unreachable ff00::/8 dev lo metric 256 error -101
    ff00::/8 dev eth0 metric 256
    
    When sending multicasting packets, routing subsystem will return the first
    route entry which with a error set to -101(ENETUNREACH).
    
    I know the kernel will set the default ipv6 address for 'lo' when it is up
    and won't set the default multicast route for it, but there is no reason to
    stop 'init' program from setting address for 'lo', and that is exactly what
    systemd did.
    
    I am sure there is something wrong with kernel or systemd, currently I preferred
    kernel caused this problem.
    
    ====================
    Signed-off-by: default avatarLi Wei <lw@cn.fujitsu.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    4af04aba
addrconf.c 115 KB