2013-08-19 11:23:07 -07:00
# ifndef __NET_VXLAN_H
# define __NET_VXLAN_H 1
# include <linux/skbuff.h>
# include <linux/netdevice.h>
# include <linux/udp.h>
# define VNI_HASH_BITS 10
# define VNI_HASH_SIZE (1<<VNI_HASH_BITS)
struct vxlan_sock ;
typedef void ( vxlan_rcv_t ) ( struct vxlan_sock * vh , struct sk_buff * skb , __be32 key ) ;
/* per UDP socket information */
struct vxlan_sock {
struct hlist_node hlist ;
vxlan_rcv_t * rcv ;
void * data ;
struct work_struct del_work ;
struct socket * sock ;
struct rcu_head rcu ;
struct hlist_head vni_list [ VNI_HASH_SIZE ] ;
atomic_t refcnt ;
2014-01-20 13:59:21 +02:00
struct udp_offload udp_offloads ;
2013-08-19 11:23:07 -07:00
} ;
2014-06-04 17:20:29 -07:00
# define VXLAN_F_LEARN 0x01
# define VXLAN_F_PROXY 0x02
# define VXLAN_F_RSC 0x04
# define VXLAN_F_L2MISS 0x08
# define VXLAN_F_L3MISS 0x10
# define VXLAN_F_IPV6 0x20
# define VXLAN_F_UDP_CSUM 0x40
# define VXLAN_F_UDP_ZERO_CSUM6_TX 0x80
# define VXLAN_F_UDP_ZERO_CSUM6_RX 0x100
2013-08-19 11:23:07 -07:00
struct vxlan_sock * vxlan_sock_add ( struct net * net , __be16 port ,
vxlan_rcv_t * rcv , void * data ,
2014-06-04 17:20:29 -07:00
bool no_share , u32 flags ) ;
2013-08-19 11:23:07 -07:00
void vxlan_sock_release ( struct vxlan_sock * vs ) ;
2013-08-19 11:23:17 -07:00
2013-09-02 15:34:55 +02:00
int vxlan_xmit_skb ( struct vxlan_sock * vs ,
2013-08-19 11:23:17 -07:00
struct rtable * rt , struct sk_buff * skb ,
__be32 src , __be32 dst , __u8 tos , __u8 ttl , __be16 df ,
2014-04-24 10:02:49 +02:00
__be16 src_port , __be16 dst_port , __be32 vni , bool xnet ) ;
2013-08-19 11:23:17 -07:00
2013-10-24 06:27:10 +00:00
/* IP header + UDP + VXLAN + Ethernet header */
# define VXLAN_HEADROOM (20 + 8 + 8 + 14)
/* IPv6 header + UDP + VXLAN + Ethernet header */
# define VXLAN6_HEADROOM (40 + 8 + 8 + 14)
# if IS_ENABLED(CONFIG_VXLAN)
2013-09-04 02:13:38 -07:00
void vxlan_get_rx_port ( struct net_device * netdev ) ;
2013-10-24 06:27:10 +00:00
# else
static inline void vxlan_get_rx_port ( struct net_device * netdev )
{
}
# endif
2013-08-19 11:23:07 -07:00
# endif