xref: /linux-6.15/include/linux/if_tunnel.h (revision fa857afc)
11da177e4SLinus Torvalds #ifndef _IF_TUNNEL_H_
21da177e4SLinus Torvalds #define _IF_TUNNEL_H_
31da177e4SLinus Torvalds 
46fd8bb88SMasahide NAKAMURA #include <linux/types.h>
50afd4a21SDavid S. Miller 
60afd4a21SDavid S. Miller #ifdef __KERNEL__
7c19e654dSHerbert Xu #include <linux/ip.h>
80afd4a21SDavid S. Miller #endif
96fd8bb88SMasahide NAKAMURA 
101da177e4SLinus Torvalds #define SIOCGETTUNNEL   (SIOCDEVPRIVATE + 0)
111da177e4SLinus Torvalds #define SIOCADDTUNNEL   (SIOCDEVPRIVATE + 1)
121da177e4SLinus Torvalds #define SIOCDELTUNNEL   (SIOCDEVPRIVATE + 2)
131da177e4SLinus Torvalds #define SIOCCHGTUNNEL   (SIOCDEVPRIVATE + 3)
14300aaeeaSYOSHIFUJI Hideaki #define SIOCGETPRL      (SIOCDEVPRIVATE + 4)
15fadf6bf0STemplin, Fred L #define SIOCADDPRL      (SIOCDEVPRIVATE + 5)
16fadf6bf0STemplin, Fred L #define SIOCDELPRL      (SIOCDEVPRIVATE + 6)
17fadf6bf0STemplin, Fred L #define SIOCCHGPRL      (SIOCDEVPRIVATE + 7)
18*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 #define SIOCGET6RD      (SIOCDEVPRIVATE + 8)
19*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 #define SIOCADD6RD      (SIOCDEVPRIVATE + 9)
20*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 #define SIOCDEL6RD      (SIOCDEVPRIVATE + 10)
21*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 #define SIOCCHG6RD      (SIOCDEVPRIVATE + 11)
221da177e4SLinus Torvalds 
23f3a7c66bSHarvey Harrison #define GRE_CSUM	__cpu_to_be16(0x8000)
24f3a7c66bSHarvey Harrison #define GRE_ROUTING	__cpu_to_be16(0x4000)
25f3a7c66bSHarvey Harrison #define GRE_KEY		__cpu_to_be16(0x2000)
26f3a7c66bSHarvey Harrison #define GRE_SEQ		__cpu_to_be16(0x1000)
27f3a7c66bSHarvey Harrison #define GRE_STRICT	__cpu_to_be16(0x0800)
28f3a7c66bSHarvey Harrison #define GRE_REC		__cpu_to_be16(0x0700)
29f3a7c66bSHarvey Harrison #define GRE_FLAGS	__cpu_to_be16(0x00F8)
30f3a7c66bSHarvey Harrison #define GRE_VERSION	__cpu_to_be16(0x0007)
311da177e4SLinus Torvalds 
321da177e4SLinus Torvalds struct ip_tunnel_parm
331da177e4SLinus Torvalds {
341da177e4SLinus Torvalds 	char			name[IFNAMSIZ];
351da177e4SLinus Torvalds 	int			link;
36d5a0a1e3SAl Viro 	__be16			i_flags;
37d5a0a1e3SAl Viro 	__be16			o_flags;
38d5a0a1e3SAl Viro 	__be32			i_key;
39d5a0a1e3SAl Viro 	__be32			o_key;
401da177e4SLinus Torvalds 	struct iphdr		iph;
411da177e4SLinus Torvalds };
421da177e4SLinus Torvalds 
43fadf6bf0STemplin, Fred L /* SIT-mode i_flags */
44fadf6bf0STemplin, Fred L #define	SIT_ISATAP	0x0001
45fadf6bf0STemplin, Fred L 
46fadf6bf0STemplin, Fred L struct ip_tunnel_prl {
47fadf6bf0STemplin, Fred L 	__be32			addr;
48fadf6bf0STemplin, Fred L 	__u16			flags;
49fadf6bf0STemplin, Fred L 	__u16			__reserved;
50300aaeeaSYOSHIFUJI Hideaki 	__u32			datalen;
51d1f8297aSSascha Hlusiak 	__u32			__reserved2;
522b4743bdSYOSHIFUJI Hideaki 	/* data follows */
53fadf6bf0STemplin, Fred L };
54fadf6bf0STemplin, Fred L 
55fadf6bf0STemplin, Fred L /* PRL flags */
56fadf6bf0STemplin, Fred L #define	PRL_DEFAULT		0x0001
57fadf6bf0STemplin, Fred L 
58*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 struct ip_tunnel_6rd {
59*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 	struct in6_addr		prefix;
60*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 	__be32			relay_prefix;
61*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 	__u16			prefixlen;
62*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 	__u16			relay_prefixlen;
63*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 };
64*fa857afcSYOSHIFUJI Hideaki / 吉藤英明 
65c19e654dSHerbert Xu enum
66c19e654dSHerbert Xu {
67c19e654dSHerbert Xu 	IFLA_GRE_UNSPEC,
68c19e654dSHerbert Xu 	IFLA_GRE_LINK,
69c19e654dSHerbert Xu 	IFLA_GRE_IFLAGS,
70c19e654dSHerbert Xu 	IFLA_GRE_OFLAGS,
71c19e654dSHerbert Xu 	IFLA_GRE_IKEY,
72c19e654dSHerbert Xu 	IFLA_GRE_OKEY,
73c19e654dSHerbert Xu 	IFLA_GRE_LOCAL,
74c19e654dSHerbert Xu 	IFLA_GRE_REMOTE,
75c19e654dSHerbert Xu 	IFLA_GRE_TTL,
76c19e654dSHerbert Xu 	IFLA_GRE_TOS,
77c19e654dSHerbert Xu 	IFLA_GRE_PMTUDISC,
78c19e654dSHerbert Xu 	__IFLA_GRE_MAX,
79c19e654dSHerbert Xu };
80c19e654dSHerbert Xu 
81c19e654dSHerbert Xu #define IFLA_GRE_MAX	(__IFLA_GRE_MAX - 1)
82c19e654dSHerbert Xu 
831da177e4SLinus Torvalds #endif /* _IF_TUNNEL_H_ */
84