Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.19-rc6 97 lines 2.5 kB view raw
1#ifndef __NET_GENEVE_H 2#define __NET_GENEVE_H 1 3 4#ifdef CONFIG_INET 5#include <net/udp_tunnel.h> 6#endif 7 8 9/* Geneve Header: 10 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 11 * |Ver| Opt Len |O|C| Rsvd. | Protocol Type | 12 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 13 * | Virtual Network Identifier (VNI) | Reserved | 14 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 15 * | Variable Length Options | 16 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 17 * 18 * Option Header: 19 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 20 * | Option Class | Type |R|R|R| Length | 21 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 22 * | Variable Option Data | 23 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 24 */ 25 26struct geneve_opt { 27 __be16 opt_class; 28 u8 type; 29#ifdef __LITTLE_ENDIAN_BITFIELD 30 u8 length:5; 31 u8 r3:1; 32 u8 r2:1; 33 u8 r1:1; 34#else 35 u8 r1:1; 36 u8 r2:1; 37 u8 r3:1; 38 u8 length:5; 39#endif 40 u8 opt_data[]; 41}; 42 43#define GENEVE_CRIT_OPT_TYPE (1 << 7) 44 45struct genevehdr { 46#ifdef __LITTLE_ENDIAN_BITFIELD 47 u8 opt_len:6; 48 u8 ver:2; 49 u8 rsvd1:6; 50 u8 critical:1; 51 u8 oam:1; 52#else 53 u8 ver:2; 54 u8 opt_len:6; 55 u8 oam:1; 56 u8 critical:1; 57 u8 rsvd1:6; 58#endif 59 __be16 proto_type; 60 u8 vni[3]; 61 u8 rsvd2; 62 struct geneve_opt options[]; 63}; 64 65#ifdef CONFIG_INET 66struct geneve_sock; 67 68typedef void (geneve_rcv_t)(struct geneve_sock *gs, struct sk_buff *skb); 69 70struct geneve_sock { 71 struct hlist_node hlist; 72 geneve_rcv_t *rcv; 73 void *rcv_data; 74 struct work_struct del_work; 75 struct socket *sock; 76 struct rcu_head rcu; 77 atomic_t refcnt; 78 struct udp_offload udp_offloads; 79}; 80 81#define GENEVE_VER 0 82#define GENEVE_BASE_HLEN (sizeof(struct udphdr) + sizeof(struct genevehdr)) 83 84struct geneve_sock *geneve_sock_add(struct net *net, __be16 port, 85 geneve_rcv_t *rcv, void *data, 86 bool no_share, bool ipv6); 87 88void geneve_sock_release(struct geneve_sock *vs); 89 90int geneve_xmit_skb(struct geneve_sock *gs, struct rtable *rt, 91 struct sk_buff *skb, __be32 src, __be32 dst, __u8 tos, 92 __u8 ttl, __be16 df, __be16 src_port, __be16 dst_port, 93 __be16 tun_flags, u8 vni[3], u8 opt_len, u8 *opt, 94 bool xnet); 95#endif /*ifdef CONFIG_INET */ 96 97#endif /*ifdef__NET_GENEVE_H */