vxlan: reject multicast destination without an interface
authorJiri Benc <jbenc@redhat.com>
Fri, 2 Sep 2016 11:37:11 +0000 (13:37 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 4 Sep 2016 18:42:56 +0000 (11:42 -0700)
commit9b4cdd516dadc1b68c55ba24520194a06adff10c
tree3b5d45d447a0609276f7143d1eb0b9d2649e2764
parent24b27fc4cdf9e10c5e79e5923b6b7c2c5c95096c
vxlan: reject multicast destination without an interface

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: Jiri Benc <jbenc@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vxlan.c