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_IOAM6,
18 	LWTUNNEL_ENCAP_XFRM,
19 	__LWTUNNEL_ENCAP_MAX,
20 };
21 
22 #define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
23 
24 enum lwtunnel_ip_t {
25 	LWTUNNEL_IP_UNSPEC,
26 	LWTUNNEL_IP_ID,
27 	LWTUNNEL_IP_DST,
28 	LWTUNNEL_IP_SRC,
29 	LWTUNNEL_IP_TTL,
30 	LWTUNNEL_IP_TOS,
31 	LWTUNNEL_IP_FLAGS,
32 	LWTUNNEL_IP_PAD,
33 	LWTUNNEL_IP_OPTS,
34 	__LWTUNNEL_IP_MAX,
35 };
36 
37 #define LWTUNNEL_IP_MAX (__LWTUNNEL_IP_MAX - 1)
38 
39 enum lwtunnel_ip6_t {
40 	LWTUNNEL_IP6_UNSPEC,
41 	LWTUNNEL_IP6_ID,
42 	LWTUNNEL_IP6_DST,
43 	LWTUNNEL_IP6_SRC,
44 	LWTUNNEL_IP6_HOPLIMIT,
45 	LWTUNNEL_IP6_TC,
46 	LWTUNNEL_IP6_FLAGS,
47 	LWTUNNEL_IP6_PAD,
48 	LWTUNNEL_IP6_OPTS,
49 	__LWTUNNEL_IP6_MAX,
50 };
51 
52 #define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1)
53 
54 enum {
55 	LWTUNNEL_IP_OPTS_UNSPEC,
56 	LWTUNNEL_IP_OPTS_GENEVE,
57 	LWTUNNEL_IP_OPTS_VXLAN,
58 	LWTUNNEL_IP_OPTS_ERSPAN,
59 	__LWTUNNEL_IP_OPTS_MAX,
60 };
61 
62 #define LWTUNNEL_IP_OPTS_MAX (__LWTUNNEL_IP_OPTS_MAX - 1)
63 
64 enum {
65 	LWTUNNEL_IP_OPT_GENEVE_UNSPEC,
66 	LWTUNNEL_IP_OPT_GENEVE_CLASS,
67 	LWTUNNEL_IP_OPT_GENEVE_TYPE,
68 	LWTUNNEL_IP_OPT_GENEVE_DATA,
69 	__LWTUNNEL_IP_OPT_GENEVE_MAX,
70 };
71 
72 #define LWTUNNEL_IP_OPT_GENEVE_MAX (__LWTUNNEL_IP_OPT_GENEVE_MAX - 1)
73 
74 enum {
75 	LWTUNNEL_IP_OPT_VXLAN_UNSPEC,
76 	LWTUNNEL_IP_OPT_VXLAN_GBP,
77 	__LWTUNNEL_IP_OPT_VXLAN_MAX,
78 };
79 
80 #define LWTUNNEL_IP_OPT_VXLAN_MAX (__LWTUNNEL_IP_OPT_VXLAN_MAX - 1)
81 
82 enum {
83 	LWTUNNEL_IP_OPT_ERSPAN_UNSPEC,
84 	LWTUNNEL_IP_OPT_ERSPAN_VER,
85 	LWTUNNEL_IP_OPT_ERSPAN_INDEX,
86 	LWTUNNEL_IP_OPT_ERSPAN_DIR,
87 	LWTUNNEL_IP_OPT_ERSPAN_HWID,
88 	__LWTUNNEL_IP_OPT_ERSPAN_MAX,
89 };
90 
91 #define LWTUNNEL_IP_OPT_ERSPAN_MAX (__LWTUNNEL_IP_OPT_ERSPAN_MAX - 1)
92 
93 enum {
94 	LWT_BPF_PROG_UNSPEC,
95 	LWT_BPF_PROG_FD,
96 	LWT_BPF_PROG_NAME,
97 	__LWT_BPF_PROG_MAX,
98 };
99 
100 #define LWT_BPF_PROG_MAX (__LWT_BPF_PROG_MAX - 1)
101 
102 enum {
103 	LWT_BPF_UNSPEC,
104 	LWT_BPF_IN,
105 	LWT_BPF_OUT,
106 	LWT_BPF_XMIT,
107 	LWT_BPF_XMIT_HEADROOM,
108 	__LWT_BPF_MAX,
109 };
110 
111 #define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
112 
113 #define LWT_BPF_MAX_HEADROOM 256
114 
115 enum {
116 	LWT_XFRM_UNSPEC,
117 	LWT_XFRM_IF_ID,
118 	LWT_XFRM_LINK,
119 	__LWT_XFRM_MAX,
120 };
121 
122 #define LWT_XFRM_MAX (__LWT_XFRM_MAX - 1)
123 
124 #endif /* _UAPI_LWTUNNEL_H_ */
125