1
#ifndef __NET_GENEVE_WRAPPER_H
2
#define __NET_GENEVE_WRAPPER_H 1
4
#include <linux/version.h>
6
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0)
7
#include_next <net/geneve.h>
11
#include <net/udp_tunnel.h>
16
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
17
* |Ver| Opt Len |O|C| Rsvd. | Protocol Type |
18
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
19
* | Virtual Network Identifier (VNI) | Reserved |
20
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
21
* | Variable Length Options |
22
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
25
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
26
* | Option Class | Type |R|R|R| Length |
27
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28
* | Variable Option Data |
29
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
35
#ifdef __LITTLE_ENDIAN_BITFIELD
49
#define GENEVE_CRIT_OPT_TYPE (1 << 7)
52
#ifdef __LITTLE_ENDIAN_BITFIELD
68
struct geneve_opt options[];
74
typedef void (geneve_rcv_t)(struct geneve_sock *gs, struct sk_buff *skb);
84
#define GENEVE_BASE_HLEN (sizeof(struct udphdr) + sizeof(struct genevehdr))
86
#define geneve_sock_add rpl_geneve_sock_add
87
struct geneve_sock *rpl_geneve_sock_add(struct net *net, __be16 port,
88
geneve_rcv_t *rcv, void *data,
89
bool no_share, bool ipv6);
91
#define geneve_sock_release rpl_geneve_sock_release
92
void rpl_geneve_sock_release(struct geneve_sock *vs);
94
#define geneve_xmit_skb rpl_geneve_xmit_skb
95
int rpl_geneve_xmit_skb(struct geneve_sock *gs, struct rtable *rt,
96
struct sk_buff *skb, __be32 src, __be32 dst, __u8 tos,
97
__u8 ttl, __be16 df, __be16 src_port, __be16 dst_port,
98
__be16 tun_flags, u8 vni[3], u8 opt_len, u8 *opt,
99
bool csum, bool xnet);
100
#endif /*ifdef CONFIG_INET */
102
#endif /* kernel < 4.0 */
104
#endif /*ifdef__NET_GENEVE_WRAPPER_H */