diff options
| author | Pravin B Shelar <pshelar@nicira.com> | 2013-08-19 14:23:07 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-08-20 03:15:43 -0400 |
| commit | 012a5729ff933ecd07e7470a65d84577aef9ae03 (patch) | |
| tree | 354e8f359ed8a01c0eb54061c49a7cecc7b472da /include | |
| parent | 5cfccc5a47ebcaac5d5fa82a6dcef94a78b1eb6c (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.h | 31 |
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 | |||
| 11 | struct vxlan_sock; | ||
| 12 | typedef void (vxlan_rcv_t)(struct vxlan_sock *vh, struct sk_buff *skb, __be32 key); | ||
| 13 | |||
| 14 | /* per UDP socket information */ | ||
| 15 | struct 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 | |||
| 26 | struct vxlan_sock *vxlan_sock_add(struct net *net, __be16 port, | ||
| 27 | vxlan_rcv_t *rcv, void *data, | ||
| 28 | bool no_share); | ||
| 29 | |||
| 30 | void vxlan_sock_release(struct vxlan_sock *vs); | ||
| 31 | #endif | ||
