xref: /OK3568_Linux_fs/kernel/include/uapi/linux/seg6_iptunnel.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  *  SR-IPv6 implementation
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  *  Author:
6*4882a593Smuzhiyun  *  David Lebrun <david.lebrun@uclouvain.be>
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  *  This program is free software; you can redistribute it and/or
10*4882a593Smuzhiyun  *      modify it under the terms of the GNU General Public License
11*4882a593Smuzhiyun  *      as published by the Free Software Foundation; either version
12*4882a593Smuzhiyun  *      2 of the License, or (at your option) any later version.
13*4882a593Smuzhiyun  */
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #ifndef _UAPI_LINUX_SEG6_IPTUNNEL_H
16*4882a593Smuzhiyun #define _UAPI_LINUX_SEG6_IPTUNNEL_H
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #include <linux/seg6.h>		/* For struct ipv6_sr_hdr. */
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun enum {
21*4882a593Smuzhiyun 	SEG6_IPTUNNEL_UNSPEC,
22*4882a593Smuzhiyun 	SEG6_IPTUNNEL_SRH,
23*4882a593Smuzhiyun 	__SEG6_IPTUNNEL_MAX,
24*4882a593Smuzhiyun };
25*4882a593Smuzhiyun #define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun struct seg6_iptunnel_encap {
28*4882a593Smuzhiyun 	int mode;
29*4882a593Smuzhiyun 	struct ipv6_sr_hdr srh[0];
30*4882a593Smuzhiyun };
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(*x)) + (((x)->srh->hdrlen + 1) << 3))
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun enum {
35*4882a593Smuzhiyun 	SEG6_IPTUN_MODE_INLINE,
36*4882a593Smuzhiyun 	SEG6_IPTUN_MODE_ENCAP,
37*4882a593Smuzhiyun 	SEG6_IPTUN_MODE_L2ENCAP,
38*4882a593Smuzhiyun };
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun #endif
41