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)
commite1f8f78ffe9854308b9e12a73ebe4e909074fc33
tree89cd80a7eb60df2e1eb7c134f0cf9f73fb817679
parent46ea929b2b3f66e6a9bc91adbb9ca2157065f9b2
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: 84e54fe0a5ea ("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