aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPravin B Shelar <pshelar@nicira.com>2013-08-19 14:23:07 -0400
committerDavid S. Miller <davem@davemloft.net>2013-08-20 03:15:43 -0400
commit012a5729ff933ecd07e7470a65d84577aef9ae03 (patch)
tree354e8f359ed8a01c0eb54061c49a7cecc7b472da /include
parent5cfccc5a47ebcaac5d5fa82a6dcef94a78b1eb6c (diff)
vxlan: Extend vxlan handlers for openvswitch.
Following patch adds data field to vxlan socket and export vxlan handler api. vh->data is required to store private data per vxlan handler. Signed-off-by: Pravin B Shelar <pshelar@nicira.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/net/vxlan.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/net/vxlan.h b/include/net/vxlan.h
new file mode 100644
index 000000000000..43de27585cb0
--- /dev/null
+++ b/include/net/vxlan.h
@@ -0,0 +1,31 @@
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