• Jiri Benc's avatar
    vxlan: reject multicast destination without an interface · 9b4cdd51
    Jiri Benc authored
    Currently, kernel accepts configurations such as:
    
      ip l a type vxlan dstport 4789 id 1 group 239.192.0.1
      ip l a type vxlan dstport 4789 id 1 group ff0e::110
    
    However, neither of those really works. In the IPv4 case, the interface
    cannot be brought up ("RTNETLINK answers: No such device"). This is because
    multicast join will be rejected without the interface being specified.
    
    In the IPv6 case, multicast wil be joined on the first interface found. This
    is not what the user wants as it depends on random factors (order of
    interfaces).
    
    Note that it's possible to add a local address but it doesn't solve
    anything. For IPv4, it's not considered in the multicast join (thus the same
    error as above is returned on ifup). This could be added but it wouldn't
    help for IPv6 anyway. For IPv6, we do need the interface.
    
    Just reject a configuration that sets multicast address and does not provide
    an interface. Nobody can depend on the previous behavior as it never worked.
    Signed-off-by: default avatarJiri Benc <jbenc@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9b4cdd51
vxlan.c 84 KB