]> git.baikalelectronics.ru Git - kernel.git/commit
net: ip_gre: Separate ERSPAN newlink / changelink callbacks
authorPetr Machata <petrm@mellanox.com>
Fri, 13 Mar 2020 11:39:36 +0000 (13:39 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 15 Mar 2020 07:14:08 +0000 (00:14 -0700)
commit0da2860deb1921d1cceb0627b4066f7a2d936474
tree89cd80a7eb60df2e1eb7c134f0cf9f73fb817679
parentcd23ef62934637b5e16c3bcadeab1567e3b779f0
net: ip_gre: Separate ERSPAN newlink / changelink callbacks

ERSPAN shares most of the code path with GRE and gretap code. While that
helps keep the code compact, it is also error prone. Currently a broken
userspace can turn a gretap tunnel into a de facto ERSPAN one by passing
IFLA_GRE_ERSPAN_VER. There has been a similar issue in ip6gretap in the
past.

To prevent these problems in future, split the newlink and changelink code
paths. Split the ERSPAN code out of ipgre_netlink_parms() into a new
function erspan_netlink_parms(). Extract a piece of common logic from
ipgre_newlink() and ipgre_changelink() into ipgre_newlink_encap_setup().
Add erspan_newlink() and erspan_changelink().

Fixes: 468dae257e70 ("gre: introduce native tunnel support for ERSPAN")
Signed-off-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_gre.c