linux/include/net/vxlan.h
<<
>>
Prefs
   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, bool ipv6);
  29
  30void vxlan_sock_release(struct vxlan_sock *vs);
  31
  32int vxlan_xmit_skb(struct vxlan_sock *vs,
  33                   struct rtable *rt, struct sk_buff *skb,
  34                   __be32 src, __be32 dst, __u8 tos, __u8 ttl, __be16 df,
  35                   __be16 src_port, __be16 dst_port, __be32 vni);
  36
  37__be16 vxlan_src_port(__u16 port_min, __u16 port_max, struct sk_buff *skb);
  38
  39void vxlan_get_rx_port(struct net_device *netdev);
  40#endif
  41