1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _UAPI_LWTUNNEL_H_
3 #define _UAPI_LWTUNNEL_H_
4 
5 #include <linux/types.h>
6 
7 enum lwtunnel_encap_types {
8 	LWTUNNEL_ENCAP_NONE,
9 	LWTUNNEL_ENCAP_MPLS,
10 	LWTUNNEL_ENCAP_IP,
11 	LWTUNNEL_ENCAP_ILA,
12 	LWTUNNEL_ENCAP_IP6,
13 	LWTUNNEL_ENCAP_SEG6,
14 	LWTUNNEL_ENCAP_BPF,
15 	LWTUNNEL_ENCAP_SEG6_LOCAL,
16 	LWTUNNEL_ENCAP_RPL,
17 	__LWTUNNEL_ENCAP_MAX,
18 };
19 
20 #define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
21 
22 enum lwtunnel_ip_t {
23 	LWTUNNEL_IP_UNSPEC,
24 	LWTUNNEL_IP_ID,
25 	LWTUNNEL_IP_DST,
26 	LWTUNNEL_IP_SRC,
27 	LWTUNNEL_IP_TTL,
28 	LWTUNNEL_IP_TOS,
29 	LWTUNNEL_IP_FLAGS,
30 	LWTUNNEL_IP_PAD,
31 	LWTUNNEL_IP_OPTS,
32 	__LWTUNNEL_IP_MAX,
33 };
34 
35 #define LWTUNNEL_IP_MAX (__LWTUNNEL_IP_MAX - 1)
36 
37 enum lwtunnel_ip6_t {
38 	LWTUNNEL_IP6_UNSPEC,
39 	LWTUNNEL_IP6_ID,
40 	LWTUNNEL_IP6_DST,
41 	LWTUNNEL_IP6_SRC,
42 	LWTUNNEL_IP6_HOPLIMIT,
43 	LWTUNNEL_IP6_TC,
44 	LWTUNNEL_IP6_FLAGS,
45 	LWTUNNEL_IP6_PAD,
46 	LWTUNNEL_IP6_OPTS,
47 	__LWTUNNEL_IP6_MAX,
48 };
49 
50 #define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1)
51 
52 enum {
53 	LWTUNNEL_IP_OPTS_UNSPEC,
54 	LWTUNNEL_IP_OPTS_GENEVE,
55 	LWTUNNEL_IP_OPTS_VXLAN,
56 	LWTUNNEL_IP_OPTS_ERSPAN,
57 	__LWTUNNEL_IP_OPTS_MAX,
58 };
59 
60 #define LWTUNNEL_IP_OPTS_MAX (__LWTUNNEL_IP_OPTS_MAX - 1)
61 
62 enum {
63 	LWTUNNEL_IP_OPT_GENEVE_UNSPEC,
64 	LWTUNNEL_IP_OPT_GENEVE_CLASS,
65 	LWTUNNEL_IP_OPT_GENEVE_TYPE,
66 	LWTUNNEL_IP_OPT_GENEVE_DATA,
67 	__LWTUNNEL_IP_OPT_GENEVE_MAX,
68 };
69 
70 #define LWTUNNEL_IP_OPT_GENEVE_MAX (__LWTUNNEL_IP_OPT_GENEVE_MAX - 1)
71 
72 enum {
73 	LWTUNNEL_IP_OPT_VXLAN_UNSPEC,
74 	LWTUNNEL_IP_OPT_VXLAN_GBP,
75 	__LWTUNNEL_IP_OPT_VXLAN_MAX,
76 };
77 
78 #define LWTUNNEL_IP_OPT_VXLAN_MAX (__LWTUNNEL_IP_OPT_VXLAN_MAX - 1)
79 
80 enum {
81 	LWTUNNEL_IP_OPT_ERSPAN_UNSPEC,
82 	LWTUNNEL_IP_OPT_ERSPAN_VER,
83 	LWTUNNEL_IP_OPT_ERSPAN_INDEX,
84 	LWTUNNEL_IP_OPT_ERSPAN_DIR,
85 	LWTUNNEL_IP_OPT_ERSPAN_HWID,
86 	__LWTUNNEL_IP_OPT_ERSPAN_MAX,
87 };
88 
89 #define LWTUNNEL_IP_OPT_ERSPAN_MAX (__LWTUNNEL_IP_OPT_ERSPAN_MAX - 1)
90 
91 enum {
92 	LWT_BPF_PROG_UNSPEC,
93 	LWT_BPF_PROG_FD,
94 	LWT_BPF_PROG_NAME,
95 	__LWT_BPF_PROG_MAX,
96 };
97 
98 #define LWT_BPF_PROG_MAX (__LWT_BPF_PROG_MAX - 1)
99 
100 enum {
101 	LWT_BPF_UNSPEC,
102 	LWT_BPF_IN,
103 	LWT_BPF_OUT,
104 	LWT_BPF_XMIT,
105 	LWT_BPF_XMIT_HEADROOM,
106 	__LWT_BPF_MAX,
107 };
108 
109 #define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
110 
111 #define LWT_BPF_MAX_HEADROOM 256
112 
113 #endif /* _UAPI_LWTUNNEL_H_ */
114