]> git.baikalelectronics.ru Git - kernel.git/commit
net, ip6_tunnel: enhance tunnel locate with link check
authorWilliam Dauchy <w.dauchy@criteo.com>
Thu, 13 Feb 2020 17:19:22 +0000 (18:19 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 14 Feb 2020 15:31:48 +0000 (07:31 -0800)
commitb6f9083b0d96aeb29cffed8d68d3a595c51e2f02
tree011cb39b38dc3edbc29b4168e9b19130e199d4c5
parent3b898b0e336020e084b3bfac95a014b3b4b1fe6b
net, ip6_tunnel: enhance tunnel locate with link check

With ipip, it is possible to create an extra interface explicitly
attached to a given physical interface:

  # ip link show tunl0
  4: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
  # ip link add tunl1 type ipip dev eth0
  # ip link show tunl1
  6: tunl1@eth0: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0

But it is not possible with ip6tnl:

  # ip link show ip6tnl0
  5: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN mode DEFAULT group default qlen 1000
      link/tunnel6 :: brd ::
  # ip link add ip6tnl1 type ip6tnl dev eth0
  RTNETLINK answers: File exists

This patch aims to make it possible by adding link comparaison in both
tunnel locate and lookup functions; we also modify mtu calculation when
attached to an interface with a lower mtu.

This permits to make use of x-netns communication by moving the newly
created tunnel in a given netns.

Signed-off-by: William Dauchy <w.dauchy@criteo.com>
Reviewed-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/ip6_tunnel.c