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