net: Combine GENEVE and VXLAN port notifiers into single functions
This patch merges the GENEVE and VXLAN code so that both functions pass through a shared code path. This way we can start the effort of using a single function on the network device drivers to handle both of these tunnel types. Signed-off-by: Alexander Duyck <aduyck@mirantis.com> Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
86a9805725
commit
e7b3db5e60
@@ -84,6 +84,39 @@ struct udp_tunnel_sock_cfg {
|
||||
void setup_udp_tunnel_sock(struct net *net, struct socket *sock,
|
||||
struct udp_tunnel_sock_cfg *sock_cfg);
|
||||
|
||||
/* -- List of parsable UDP tunnel types --
|
||||
*
|
||||
* Adding to this list will result in serious debate. The main issue is
|
||||
* that this list is essentially a list of workarounds for either poorly
|
||||
* designed tunnels, or poorly designed device offloads.
|
||||
*
|
||||
* The parsing supported via these types should really be used for Rx
|
||||
* traffic only as the network stack will have already inserted offsets for
|
||||
* the location of the headers in the skb. In addition any ports that are
|
||||
* pushed should be kept within the namespace without leaking to other
|
||||
* devices such as VFs or other ports on the same device.
|
||||
*
|
||||
* It is strongly encouraged to use CHECKSUM_COMPLETE for Rx to avoid the
|
||||
* need to use this for Rx checksum offload. It should not be necessary to
|
||||
* call this function to perform Tx offloads on outgoing traffic.
|
||||
*/
|
||||
enum udp_parsable_tunnel_type {
|
||||
UDP_TUNNEL_TYPE_VXLAN, /* RFC 7348 */
|
||||
UDP_TUNNEL_TYPE_GENEVE, /* draft-ietf-nvo3-geneve */
|
||||
};
|
||||
|
||||
struct udp_tunnel_info {
|
||||
unsigned short type;
|
||||
sa_family_t sa_family;
|
||||
__be16 port;
|
||||
};
|
||||
|
||||
/* Notify network devices of offloadable types */
|
||||
void udp_tunnel_push_rx_port(struct net_device *dev, struct socket *sock,
|
||||
unsigned short type);
|
||||
void udp_tunnel_notify_add_rx_port(struct socket *sock, unsigned short type);
|
||||
void udp_tunnel_notify_del_rx_port(struct socket *sock, unsigned short type);
|
||||
|
||||
/* Transmit the skb using UDP encapsulation. */
|
||||
void udp_tunnel_xmit_skb(struct rtable *rt, struct sock *sk, struct sk_buff *skb,
|
||||
__be32 src, __be32 dst, __u8 tos, __u8 ttl,
|
||||
|
Reference in New Issue
Block a user