ip6_tunnel: Allow rcv/xmit even if remote address is a local address
authorShmulik Ladkani <shmulik.ladkani@gmail.com>
Fri, 20 Oct 2017 21:25:15 +0000 (00:25 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 25 Oct 2017 01:33:27 +0000 (10:33 +0900)
commit908d140a87a794bf89717ceae54aba5ce86c52e4
tree37abafa4f9ebc332c7e646d44e1cf69440171204
parent6a331e1513afb9019722fdd8d4c08533d79fbb81
ip6_tunnel: Allow rcv/xmit even if remote address is a local address

Currently, ip6_tnl_xmit_ctl drops tunneled packets if the remote
address (outer v6 destination) is one of host's locally configured
addresses.
Same applies to ip6_tnl_rcv_ctl: it drops packets if the remote address
(outer v6 source) is a local address.

This prevents using ipxip6 (and ip6_gre) tunnels whose local/remote
endpoints are on same host; OTOH v4 tunnels (ipip or gre) allow such
configurations.

An example where this proves useful is a system where entities are
identified by their unique v6 addresses, and use tunnels to encapsulate
traffic between them. The limitation prevents placing several entities
on same host.

Introduce IP6_TNL_F_ALLOW_LOCAL_REMOTE which allows to bypass this
restriction.

Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/ip6_tunnel.h
net/ipv6/ip6_tunnel.c