net: vxlan: Add nolocalbypass option to vxlan.
If a packet needs to be encapsulated towards a local destination IP, the packet will undergo a "local bypass" and be injected into the Rx path as if it was received by the target VXLAN device without undergoing encapsulation. If such a device does not exist, the packet will be dropped. There are scenarios where we do not want to perform such a bypass, but instead want the packet to be encapsulated and locally received by a user space program for post-processing. To that end, add a new VXLAN device attribute that controls whether a "local bypass" is performed or not. Default to performing a bypass to maintain existing behavior. Signed-off-by: Vladimir Nikishkin <vladimir@nikishkin.pw> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
7eef636ecc
commit
69474a8a58
@ -328,6 +328,7 @@ struct vxlan_dev {
|
||||
#define VXLAN_F_TTL_INHERIT 0x10000
|
||||
#define VXLAN_F_VNIFILTER 0x20000
|
||||
#define VXLAN_F_MDB 0x40000
|
||||
#define VXLAN_F_LOCALBYPASS 0x80000
|
||||
|
||||
/* Flags that are used in the receive path. These flags must match in
|
||||
* order for a socket to be shareable
|
||||
@ -348,7 +349,8 @@ struct vxlan_dev {
|
||||
VXLAN_F_UDP_ZERO_CSUM6_TX | \
|
||||
VXLAN_F_UDP_ZERO_CSUM6_RX | \
|
||||
VXLAN_F_COLLECT_METADATA | \
|
||||
VXLAN_F_VNIFILTER)
|
||||
VXLAN_F_VNIFILTER | \
|
||||
VXLAN_F_LOCALBYPASS)
|
||||
|
||||
struct net_device *vxlan_dev_create(struct net *net, const char *name,
|
||||
u8 name_assign_type, struct vxlan_config *conf);
|
||||
|
Reference in New Issue
Block a user