1*de1e4e89SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*de1e4e89SAndroid Build Coastguard Worker #ifndef _IF_TUNNEL_H_ 3*de1e4e89SAndroid Build Coastguard Worker #define _IF_TUNNEL_H_ 4*de1e4e89SAndroid Build Coastguard Worker 5*de1e4e89SAndroid Build Coastguard Worker #include <linux/types.h> 6*de1e4e89SAndroid Build Coastguard Worker #include <linux/if.h> 7*de1e4e89SAndroid Build Coastguard Worker #include <linux/ip.h> 8*de1e4e89SAndroid Build Coastguard Worker #include <linux/in6.h> 9*de1e4e89SAndroid Build Coastguard Worker #include <asm/byteorder.h> 10*de1e4e89SAndroid Build Coastguard Worker 11*de1e4e89SAndroid Build Coastguard Worker 12*de1e4e89SAndroid Build Coastguard Worker #define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0) 13*de1e4e89SAndroid Build Coastguard Worker #define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1) 14*de1e4e89SAndroid Build Coastguard Worker #define SIOCDELTUNNEL (SIOCDEVPRIVATE + 2) 15*de1e4e89SAndroid Build Coastguard Worker #define SIOCCHGTUNNEL (SIOCDEVPRIVATE + 3) 16*de1e4e89SAndroid Build Coastguard Worker #define SIOCGETPRL (SIOCDEVPRIVATE + 4) 17*de1e4e89SAndroid Build Coastguard Worker #define SIOCADDPRL (SIOCDEVPRIVATE + 5) 18*de1e4e89SAndroid Build Coastguard Worker #define SIOCDELPRL (SIOCDEVPRIVATE + 6) 19*de1e4e89SAndroid Build Coastguard Worker #define SIOCCHGPRL (SIOCDEVPRIVATE + 7) 20*de1e4e89SAndroid Build Coastguard Worker #define SIOCGET6RD (SIOCDEVPRIVATE + 8) 21*de1e4e89SAndroid Build Coastguard Worker #define SIOCADD6RD (SIOCDEVPRIVATE + 9) 22*de1e4e89SAndroid Build Coastguard Worker #define SIOCDEL6RD (SIOCDEVPRIVATE + 10) 23*de1e4e89SAndroid Build Coastguard Worker #define SIOCCHG6RD (SIOCDEVPRIVATE + 11) 24*de1e4e89SAndroid Build Coastguard Worker 25*de1e4e89SAndroid Build Coastguard Worker #define GRE_CSUM __cpu_to_be16(0x8000) 26*de1e4e89SAndroid Build Coastguard Worker #define GRE_ROUTING __cpu_to_be16(0x4000) 27*de1e4e89SAndroid Build Coastguard Worker #define GRE_KEY __cpu_to_be16(0x2000) 28*de1e4e89SAndroid Build Coastguard Worker #define GRE_SEQ __cpu_to_be16(0x1000) 29*de1e4e89SAndroid Build Coastguard Worker #define GRE_STRICT __cpu_to_be16(0x0800) 30*de1e4e89SAndroid Build Coastguard Worker #define GRE_REC __cpu_to_be16(0x0700) 31*de1e4e89SAndroid Build Coastguard Worker #define GRE_ACK __cpu_to_be16(0x0080) 32*de1e4e89SAndroid Build Coastguard Worker #define GRE_FLAGS __cpu_to_be16(0x0078) 33*de1e4e89SAndroid Build Coastguard Worker #define GRE_VERSION __cpu_to_be16(0x0007) 34*de1e4e89SAndroid Build Coastguard Worker 35*de1e4e89SAndroid Build Coastguard Worker #define GRE_IS_CSUM(f) ((f) & GRE_CSUM) 36*de1e4e89SAndroid Build Coastguard Worker #define GRE_IS_ROUTING(f) ((f) & GRE_ROUTING) 37*de1e4e89SAndroid Build Coastguard Worker #define GRE_IS_KEY(f) ((f) & GRE_KEY) 38*de1e4e89SAndroid Build Coastguard Worker #define GRE_IS_SEQ(f) ((f) & GRE_SEQ) 39*de1e4e89SAndroid Build Coastguard Worker #define GRE_IS_STRICT(f) ((f) & GRE_STRICT) 40*de1e4e89SAndroid Build Coastguard Worker #define GRE_IS_REC(f) ((f) & GRE_REC) 41*de1e4e89SAndroid Build Coastguard Worker #define GRE_IS_ACK(f) ((f) & GRE_ACK) 42*de1e4e89SAndroid Build Coastguard Worker 43*de1e4e89SAndroid Build Coastguard Worker #define GRE_VERSION_0 __cpu_to_be16(0x0000) 44*de1e4e89SAndroid Build Coastguard Worker #define GRE_VERSION_1 __cpu_to_be16(0x0001) 45*de1e4e89SAndroid Build Coastguard Worker #define GRE_PROTO_PPP __cpu_to_be16(0x880b) 46*de1e4e89SAndroid Build Coastguard Worker #define GRE_PPTP_KEY_MASK __cpu_to_be32(0xffff) 47*de1e4e89SAndroid Build Coastguard Worker 48*de1e4e89SAndroid Build Coastguard Worker struct ip_tunnel_parm { 49*de1e4e89SAndroid Build Coastguard Worker char name[IFNAMSIZ]; 50*de1e4e89SAndroid Build Coastguard Worker int link; 51*de1e4e89SAndroid Build Coastguard Worker __be16 i_flags; 52*de1e4e89SAndroid Build Coastguard Worker __be16 o_flags; 53*de1e4e89SAndroid Build Coastguard Worker __be32 i_key; 54*de1e4e89SAndroid Build Coastguard Worker __be32 o_key; 55*de1e4e89SAndroid Build Coastguard Worker struct iphdr iph; 56*de1e4e89SAndroid Build Coastguard Worker }; 57*de1e4e89SAndroid Build Coastguard Worker 58*de1e4e89SAndroid Build Coastguard Worker enum { 59*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_UNSPEC, 60*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_LINK, 61*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_LOCAL, 62*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_REMOTE, 63*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_TTL, 64*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_TOS, 65*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_ENCAP_LIMIT, 66*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_FLOWINFO, 67*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_FLAGS, 68*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_PROTO, 69*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_PMTUDISC, 70*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_6RD_PREFIX, 71*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_6RD_RELAY_PREFIX, 72*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_6RD_PREFIXLEN, 73*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_6RD_RELAY_PREFIXLEN, 74*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_ENCAP_TYPE, 75*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_ENCAP_FLAGS, 76*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_ENCAP_SPORT, 77*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_ENCAP_DPORT, 78*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_COLLECT_METADATA, 79*de1e4e89SAndroid Build Coastguard Worker IFLA_IPTUN_FWMARK, 80*de1e4e89SAndroid Build Coastguard Worker __IFLA_IPTUN_MAX, 81*de1e4e89SAndroid Build Coastguard Worker }; 82*de1e4e89SAndroid Build Coastguard Worker #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1) 83*de1e4e89SAndroid Build Coastguard Worker 84*de1e4e89SAndroid Build Coastguard Worker enum tunnel_encap_types { 85*de1e4e89SAndroid Build Coastguard Worker TUNNEL_ENCAP_NONE, 86*de1e4e89SAndroid Build Coastguard Worker TUNNEL_ENCAP_FOU, 87*de1e4e89SAndroid Build Coastguard Worker TUNNEL_ENCAP_GUE, 88*de1e4e89SAndroid Build Coastguard Worker }; 89*de1e4e89SAndroid Build Coastguard Worker 90*de1e4e89SAndroid Build Coastguard Worker #define TUNNEL_ENCAP_FLAG_CSUM (1<<0) 91*de1e4e89SAndroid Build Coastguard Worker #define TUNNEL_ENCAP_FLAG_CSUM6 (1<<1) 92*de1e4e89SAndroid Build Coastguard Worker #define TUNNEL_ENCAP_FLAG_REMCSUM (1<<2) 93*de1e4e89SAndroid Build Coastguard Worker 94*de1e4e89SAndroid Build Coastguard Worker /* SIT-mode i_flags */ 95*de1e4e89SAndroid Build Coastguard Worker #define SIT_ISATAP 0x0001 96*de1e4e89SAndroid Build Coastguard Worker 97*de1e4e89SAndroid Build Coastguard Worker struct ip_tunnel_prl { 98*de1e4e89SAndroid Build Coastguard Worker __be32 addr; 99*de1e4e89SAndroid Build Coastguard Worker __u16 flags; 100*de1e4e89SAndroid Build Coastguard Worker __u16 __reserved; 101*de1e4e89SAndroid Build Coastguard Worker __u32 datalen; 102*de1e4e89SAndroid Build Coastguard Worker __u32 __reserved2; 103*de1e4e89SAndroid Build Coastguard Worker /* data follows */ 104*de1e4e89SAndroid Build Coastguard Worker }; 105*de1e4e89SAndroid Build Coastguard Worker 106*de1e4e89SAndroid Build Coastguard Worker /* PRL flags */ 107*de1e4e89SAndroid Build Coastguard Worker #define PRL_DEFAULT 0x0001 108*de1e4e89SAndroid Build Coastguard Worker 109*de1e4e89SAndroid Build Coastguard Worker struct ip_tunnel_6rd { 110*de1e4e89SAndroid Build Coastguard Worker struct in6_addr prefix; 111*de1e4e89SAndroid Build Coastguard Worker __be32 relay_prefix; 112*de1e4e89SAndroid Build Coastguard Worker __u16 prefixlen; 113*de1e4e89SAndroid Build Coastguard Worker __u16 relay_prefixlen; 114*de1e4e89SAndroid Build Coastguard Worker }; 115*de1e4e89SAndroid Build Coastguard Worker 116*de1e4e89SAndroid Build Coastguard Worker enum { 117*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_UNSPEC, 118*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_LINK, 119*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_IFLAGS, 120*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_OFLAGS, 121*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_IKEY, 122*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_OKEY, 123*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_LOCAL, 124*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_REMOTE, 125*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_TTL, 126*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_TOS, 127*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_PMTUDISC, 128*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_ENCAP_LIMIT, 129*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_FLOWINFO, 130*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_FLAGS, 131*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_ENCAP_TYPE, 132*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_ENCAP_FLAGS, 133*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_ENCAP_SPORT, 134*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_ENCAP_DPORT, 135*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_COLLECT_METADATA, 136*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_IGNORE_DF, 137*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_FWMARK, 138*de1e4e89SAndroid Build Coastguard Worker IFLA_GRE_ERSPAN_INDEX, 139*de1e4e89SAndroid Build Coastguard Worker __IFLA_GRE_MAX, 140*de1e4e89SAndroid Build Coastguard Worker }; 141*de1e4e89SAndroid Build Coastguard Worker 142*de1e4e89SAndroid Build Coastguard Worker #define IFLA_GRE_MAX (__IFLA_GRE_MAX - 1) 143*de1e4e89SAndroid Build Coastguard Worker 144*de1e4e89SAndroid Build Coastguard Worker /* VTI-mode i_flags */ 145*de1e4e89SAndroid Build Coastguard Worker #define VTI_ISVTI ((__be16)0x0001) 146*de1e4e89SAndroid Build Coastguard Worker 147*de1e4e89SAndroid Build Coastguard Worker enum { 148*de1e4e89SAndroid Build Coastguard Worker IFLA_VTI_UNSPEC, 149*de1e4e89SAndroid Build Coastguard Worker IFLA_VTI_LINK, 150*de1e4e89SAndroid Build Coastguard Worker IFLA_VTI_IKEY, 151*de1e4e89SAndroid Build Coastguard Worker IFLA_VTI_OKEY, 152*de1e4e89SAndroid Build Coastguard Worker IFLA_VTI_LOCAL, 153*de1e4e89SAndroid Build Coastguard Worker IFLA_VTI_REMOTE, 154*de1e4e89SAndroid Build Coastguard Worker IFLA_VTI_FWMARK, 155*de1e4e89SAndroid Build Coastguard Worker __IFLA_VTI_MAX, 156*de1e4e89SAndroid Build Coastguard Worker }; 157*de1e4e89SAndroid Build Coastguard Worker 158*de1e4e89SAndroid Build Coastguard Worker #define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1) 159*de1e4e89SAndroid Build Coastguard Worker #endif /* _IF_TUNNEL_H_ */ 160