xref: /openbmc/linux/include/net/vxlan.h (revision 49560532)
1012a5729SPravin B Shelar #ifndef __NET_VXLAN_H
2012a5729SPravin B Shelar #define __NET_VXLAN_H 1
3012a5729SPravin B Shelar 
4012a5729SPravin B Shelar #include <linux/skbuff.h>
5012a5729SPravin B Shelar #include <linux/netdevice.h>
6012a5729SPravin B Shelar #include <linux/udp.h>
7012a5729SPravin B Shelar 
8012a5729SPravin B Shelar #define VNI_HASH_BITS	10
9012a5729SPravin B Shelar #define VNI_HASH_SIZE	(1<<VNI_HASH_BITS)
10012a5729SPravin B Shelar 
11012a5729SPravin B Shelar struct vxlan_sock;
12012a5729SPravin B Shelar typedef void (vxlan_rcv_t)(struct vxlan_sock *vh, struct sk_buff *skb, __be32 key);
13012a5729SPravin B Shelar 
14012a5729SPravin B Shelar /* per UDP socket information */
15012a5729SPravin B Shelar struct vxlan_sock {
16012a5729SPravin B Shelar 	struct hlist_node hlist;
17012a5729SPravin B Shelar 	vxlan_rcv_t	 *rcv;
18012a5729SPravin B Shelar 	void		 *data;
19012a5729SPravin B Shelar 	struct work_struct del_work;
20012a5729SPravin B Shelar 	struct socket	 *sock;
21012a5729SPravin B Shelar 	struct rcu_head	  rcu;
22012a5729SPravin B Shelar 	struct hlist_head vni_list[VNI_HASH_SIZE];
23012a5729SPravin B Shelar 	atomic_t	  refcnt;
24012a5729SPravin B Shelar };
25012a5729SPravin B Shelar 
26012a5729SPravin B Shelar struct vxlan_sock *vxlan_sock_add(struct net *net, __be16 port,
27012a5729SPravin B Shelar 				  vxlan_rcv_t *rcv, void *data,
28012a5729SPravin B Shelar 				  bool no_share);
29012a5729SPravin B Shelar 
30012a5729SPravin B Shelar void vxlan_sock_release(struct vxlan_sock *vs);
3149560532SPravin B Shelar 
3249560532SPravin B Shelar int vxlan_xmit_skb(struct net *net, struct vxlan_sock *vs,
3349560532SPravin B Shelar 		   struct rtable *rt, struct sk_buff *skb,
3449560532SPravin B Shelar 		   __be32 src, __be32 dst, __u8 tos, __u8 ttl, __be16 df,
3549560532SPravin B Shelar 		   __be16 src_port, __be16 dst_port, __be32 vni);
3649560532SPravin B Shelar 
3749560532SPravin B Shelar __be16 vxlan_src_port(__u16 port_min, __u16 port_max, struct sk_buff *skb);
3849560532SPravin B Shelar 
39012a5729SPravin B Shelar #endif
40