xref: /linux/include/uapi/linux/lwtunnel.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2499a2425SRoopa Prabhu #ifndef _UAPI_LWTUNNEL_H_
3499a2425SRoopa Prabhu #define _UAPI_LWTUNNEL_H_
4499a2425SRoopa Prabhu 
5499a2425SRoopa Prabhu #include <linux/types.h>
6499a2425SRoopa Prabhu 
7499a2425SRoopa Prabhu enum lwtunnel_encap_types {
8499a2425SRoopa Prabhu 	LWTUNNEL_ENCAP_NONE,
9499a2425SRoopa Prabhu 	LWTUNNEL_ENCAP_MPLS,
103093fbe7SThomas Graf 	LWTUNNEL_ENCAP_IP,
1165d7ab8dSTom Herbert 	LWTUNNEL_ENCAP_ILA,
1232a2b002SJiri Benc 	LWTUNNEL_ENCAP_IP6,
136c8702c6SDavid Lebrun 	LWTUNNEL_ENCAP_SEG6,
143a0af8fdSThomas Graf 	LWTUNNEL_ENCAP_BPF,
15d1df6fd8SDavid Lebrun 	LWTUNNEL_ENCAP_SEG6_LOCAL,
16a7a29f9cSAlexander Aring 	LWTUNNEL_ENCAP_RPL,
173edede08SJustin Iurman 	LWTUNNEL_ENCAP_IOAM6,
18*2c2493b9SEyal Birger 	LWTUNNEL_ENCAP_XFRM,
19499a2425SRoopa Prabhu 	__LWTUNNEL_ENCAP_MAX,
20499a2425SRoopa Prabhu };
21499a2425SRoopa Prabhu 
22499a2425SRoopa Prabhu #define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
23499a2425SRoopa Prabhu 
24a1c234f9SJiri Benc enum lwtunnel_ip_t {
25a1c234f9SJiri Benc 	LWTUNNEL_IP_UNSPEC,
26a1c234f9SJiri Benc 	LWTUNNEL_IP_ID,
27a1c234f9SJiri Benc 	LWTUNNEL_IP_DST,
28a1c234f9SJiri Benc 	LWTUNNEL_IP_SRC,
29a1c234f9SJiri Benc 	LWTUNNEL_IP_TTL,
30a1c234f9SJiri Benc 	LWTUNNEL_IP_TOS,
31a1c234f9SJiri Benc 	LWTUNNEL_IP_FLAGS,
32b46f6dedSNicolas Dichtel 	LWTUNNEL_IP_PAD,
334ece4778SXin Long 	LWTUNNEL_IP_OPTS,
34a1c234f9SJiri Benc 	__LWTUNNEL_IP_MAX,
35a1c234f9SJiri Benc };
36a1c234f9SJiri Benc 
37a1c234f9SJiri Benc #define LWTUNNEL_IP_MAX (__LWTUNNEL_IP_MAX - 1)
38499a2425SRoopa Prabhu 
3932a2b002SJiri Benc enum lwtunnel_ip6_t {
4032a2b002SJiri Benc 	LWTUNNEL_IP6_UNSPEC,
4132a2b002SJiri Benc 	LWTUNNEL_IP6_ID,
4232a2b002SJiri Benc 	LWTUNNEL_IP6_DST,
4332a2b002SJiri Benc 	LWTUNNEL_IP6_SRC,
4432a2b002SJiri Benc 	LWTUNNEL_IP6_HOPLIMIT,
4532a2b002SJiri Benc 	LWTUNNEL_IP6_TC,
4632a2b002SJiri Benc 	LWTUNNEL_IP6_FLAGS,
47b46f6dedSNicolas Dichtel 	LWTUNNEL_IP6_PAD,
484ece4778SXin Long 	LWTUNNEL_IP6_OPTS,
4932a2b002SJiri Benc 	__LWTUNNEL_IP6_MAX,
5032a2b002SJiri Benc };
5132a2b002SJiri Benc 
5232a2b002SJiri Benc #define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1)
5332a2b002SJiri Benc 
543a0af8fdSThomas Graf enum {
554ece4778SXin Long 	LWTUNNEL_IP_OPTS_UNSPEC,
564ece4778SXin Long 	LWTUNNEL_IP_OPTS_GENEVE,
57edf31cbbSXin Long 	LWTUNNEL_IP_OPTS_VXLAN,
58b0a21810SXin Long 	LWTUNNEL_IP_OPTS_ERSPAN,
594ece4778SXin Long 	__LWTUNNEL_IP_OPTS_MAX,
604ece4778SXin Long };
614ece4778SXin Long 
624ece4778SXin Long #define LWTUNNEL_IP_OPTS_MAX (__LWTUNNEL_IP_OPTS_MAX - 1)
634ece4778SXin Long 
644ece4778SXin Long enum {
654ece4778SXin Long 	LWTUNNEL_IP_OPT_GENEVE_UNSPEC,
664ece4778SXin Long 	LWTUNNEL_IP_OPT_GENEVE_CLASS,
674ece4778SXin Long 	LWTUNNEL_IP_OPT_GENEVE_TYPE,
684ece4778SXin Long 	LWTUNNEL_IP_OPT_GENEVE_DATA,
694ece4778SXin Long 	__LWTUNNEL_IP_OPT_GENEVE_MAX,
704ece4778SXin Long };
714ece4778SXin Long 
724ece4778SXin Long #define LWTUNNEL_IP_OPT_GENEVE_MAX (__LWTUNNEL_IP_OPT_GENEVE_MAX - 1)
734ece4778SXin Long 
744ece4778SXin Long enum {
75edf31cbbSXin Long 	LWTUNNEL_IP_OPT_VXLAN_UNSPEC,
76edf31cbbSXin Long 	LWTUNNEL_IP_OPT_VXLAN_GBP,
77edf31cbbSXin Long 	__LWTUNNEL_IP_OPT_VXLAN_MAX,
78edf31cbbSXin Long };
79edf31cbbSXin Long 
80edf31cbbSXin Long #define LWTUNNEL_IP_OPT_VXLAN_MAX (__LWTUNNEL_IP_OPT_VXLAN_MAX - 1)
81edf31cbbSXin Long 
82edf31cbbSXin Long enum {
83b0a21810SXin Long 	LWTUNNEL_IP_OPT_ERSPAN_UNSPEC,
84b0a21810SXin Long 	LWTUNNEL_IP_OPT_ERSPAN_VER,
85b0a21810SXin Long 	LWTUNNEL_IP_OPT_ERSPAN_INDEX,
86b0a21810SXin Long 	LWTUNNEL_IP_OPT_ERSPAN_DIR,
87b0a21810SXin Long 	LWTUNNEL_IP_OPT_ERSPAN_HWID,
88b0a21810SXin Long 	__LWTUNNEL_IP_OPT_ERSPAN_MAX,
89b0a21810SXin Long };
90b0a21810SXin Long 
91b0a21810SXin Long #define LWTUNNEL_IP_OPT_ERSPAN_MAX (__LWTUNNEL_IP_OPT_ERSPAN_MAX - 1)
92b0a21810SXin Long 
93b0a21810SXin Long enum {
943a0af8fdSThomas Graf 	LWT_BPF_PROG_UNSPEC,
953a0af8fdSThomas Graf 	LWT_BPF_PROG_FD,
963a0af8fdSThomas Graf 	LWT_BPF_PROG_NAME,
973a0af8fdSThomas Graf 	__LWT_BPF_PROG_MAX,
983a0af8fdSThomas Graf };
993a0af8fdSThomas Graf 
1003a0af8fdSThomas Graf #define LWT_BPF_PROG_MAX (__LWT_BPF_PROG_MAX - 1)
1013a0af8fdSThomas Graf 
1023a0af8fdSThomas Graf enum {
1033a0af8fdSThomas Graf 	LWT_BPF_UNSPEC,
1043a0af8fdSThomas Graf 	LWT_BPF_IN,
1053a0af8fdSThomas Graf 	LWT_BPF_OUT,
1063a0af8fdSThomas Graf 	LWT_BPF_XMIT,
1073a0af8fdSThomas Graf 	LWT_BPF_XMIT_HEADROOM,
1083a0af8fdSThomas Graf 	__LWT_BPF_MAX,
1093a0af8fdSThomas Graf };
1103a0af8fdSThomas Graf 
1113a0af8fdSThomas Graf #define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
1123a0af8fdSThomas Graf 
1133a0af8fdSThomas Graf #define LWT_BPF_MAX_HEADROOM 256
1143a0af8fdSThomas Graf 
115*2c2493b9SEyal Birger enum {
116*2c2493b9SEyal Birger 	LWT_XFRM_UNSPEC,
117*2c2493b9SEyal Birger 	LWT_XFRM_IF_ID,
118*2c2493b9SEyal Birger 	LWT_XFRM_LINK,
119*2c2493b9SEyal Birger 	__LWT_XFRM_MAX,
120*2c2493b9SEyal Birger };
121*2c2493b9SEyal Birger 
122*2c2493b9SEyal Birger #define LWT_XFRM_MAX (__LWT_XFRM_MAX - 1)
123*2c2493b9SEyal Birger 
124499a2425SRoopa Prabhu #endif /* _UAPI_LWTUNNEL_H_ */
125