vxlan.h revision 012a5729ff933ecd07e7470a65d84577aef9ae03
1#ifndef __NET_VXLAN_H
2#define __NET_VXLAN_H 1
3
4#include <linux/skbuff.h>
5#include <linux/netdevice.h>
6#include <linux/udp.h>
7
8#define VNI_HASH_BITS	10
9#define VNI_HASH_SIZE	(1<<VNI_HASH_BITS)
10
11struct vxlan_sock;
12typedef void (vxlan_rcv_t)(struct vxlan_sock *vh, struct sk_buff *skb, __be32 key);
13
14/* per UDP socket information */
15struct vxlan_sock {
16	struct hlist_node hlist;
17	vxlan_rcv_t	 *rcv;
18	void		 *data;
19	struct work_struct del_work;
20	struct socket	 *sock;
21	struct rcu_head	  rcu;
22	struct hlist_head vni_list[VNI_HASH_SIZE];
23	atomic_t	  refcnt;
24};
25
26struct vxlan_sock *vxlan_sock_add(struct net *net, __be16 port,
27				  vxlan_rcv_t *rcv, void *data,
28				  bool no_share);
29
30void vxlan_sock_release(struct vxlan_sock *vs);
31#endif
32