VXLAN-GPE can operate in two modes: with encapsulated Ethernet header (L2 mode) or with L3 header (e.g. IP header) directly following VXLAN-GPE header (L3 mode).
Add support for both modes. The L2 mode is simple, as it's basically the same as plain VXLAN, only with added bits in the header. The L3 mode is more complicated. The patches adding it follow the same model as the tun/tap driver: depending on the chosen mode, the vxlan interface is created either as ARPHRD_ETHER (L2 mode) or ARPHRD_NONE (L3 mode). Note that the internal fdb control plane cannot be used together with VXLAN-GPE and attempt to configure it will be rejected by the driver. This in theory could be relaxed for L2 mode in the future if such need arises. Jiri Benc (5): vxlan: implement GPE in L2 mode vxlan: move L2 mode initialization to a separate function vxlan: move fdb code to common location in vxlan_xmit vxlan: fix too large pskb_may_pull with remote checksum vxlan: implement GPE in L3 mode drivers/net/vxlan.c | 223 ++++++++++++++++++++++++++++++++++++------- include/net/vxlan.h | 63 +++++++++++- include/uapi/linux/if_link.h | 9 ++ 3 files changed, 258 insertions(+), 37 deletions(-) -- 1.8.3.1