]> git.baikalelectronics.ru Git - kernel.git/commit
bareudp: forbid mixing IP and MPLS in multiproto mode
authorGuillaume Nault <gnault@redhat.com>
Sat, 25 Jul 2020 13:06:47 +0000 (15:06 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 29 Jul 2020 00:30:25 +0000 (17:30 -0700)
commitb3ec0652117c454d818719e2c8e15160c4a13ece
tree8748b700a93dec4939c257cc9bd9ca66802509f5
parentbbe296d0bc01b0065a17306469d5d44665ed47f9
bareudp: forbid mixing IP and MPLS in multiproto mode

In multiproto mode, bareudp_xmit() accepts sending multicast MPLS and
IPv6 packets regardless of the bareudp ethertype. In practice, this
let an IP tunnel send multicast MPLS packets, or an MPLS tunnel send
IPv6 packets.

We need to restrict the test further, so that the multiproto mode only
enables
  * IPv6 for IPv4 tunnels,
  * or multicast MPLS for unicast MPLS tunnels.

To improve clarity, the protocol validation is moved to its own
function, where each logical test has its own condition.

v2: s/ntohs/htons/

Fixes: 68fac2454c8e ("net: Special handling for IP & MPLS.")
Signed-off-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bareudp.c