net: bridge: vlan options: add support for tunnel mapping set/del
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Tue, 17 Mar 2020 12:08:36 +0000 (14:08 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Mar 2020 05:47:12 +0000 (22:47 -0700)
commit569da08228086ac6f7053d71c6cb713c1f115209
treecccd412e56c23ec98a2ead61f057611f13f79af1
parent188c67dd1906eea5542268e4513ad6253fbf9297
net: bridge: vlan options: add support for tunnel mapping set/del

This patch adds support for manipulating vlan/tunnel mappings. The
tunnel ids are globally unique and are one per-vlan. There were two
trickier issues - first in order to support vlan ranges we have to
compute the current tunnel id in the following way:
 - base tunnel id (attr) + current vlan id - starting vlan id
This is in line how the old API does vlan/tunnel mapping with ranges. We
already have the vlan range present, so it's redundant to add another
attribute for the tunnel range end. It's simply base tunnel id + vlan
range. And second to support removing mappings we need an out-of-band way
to tell the option manipulating function because there are no
special/reserved tunnel id values, so we use a vlan flag to denote the
operation is tunnel mapping removal.

Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/if_bridge.h
net/bridge/br_netlink_tunnel.c
net/bridge/br_private_tunnel.h
net/bridge/br_vlan.c
net/bridge/br_vlan_options.c