122851890Sopenharmony_ci/****************************************************************************
222851890Sopenharmony_ci ****************************************************************************
322851890Sopenharmony_ci ***
422851890Sopenharmony_ci ***   This header was automatically generated from a Linux kernel header
522851890Sopenharmony_ci ***   of the same name, to make information necessary for userspace to
622851890Sopenharmony_ci ***   call into the kernel available to libc.  It contains only constants,
722851890Sopenharmony_ci ***   structures, and macros generated from the original header, and thus,
822851890Sopenharmony_ci ***   contains no copyrightable information.
922851890Sopenharmony_ci ***
1022851890Sopenharmony_ci ***   To edit the content of this header, modify the corresponding
1122851890Sopenharmony_ci ***   source file (e.g. under external/kernel-headers/original/) then
1222851890Sopenharmony_ci ***   run bionic/libc/kernel/tools/update_all.py
1322851890Sopenharmony_ci ***
1422851890Sopenharmony_ci ***   Any manual change here will be lost the next time this script will
1522851890Sopenharmony_ci ***   be run. You've been warned!
1622851890Sopenharmony_ci ***
1722851890Sopenharmony_ci ****************************************************************************
1822851890Sopenharmony_ci ****************************************************************************/
1922851890Sopenharmony_ci#ifndef _UAPI_IF_TUNNEL_H_
2022851890Sopenharmony_ci#define _UAPI_IF_TUNNEL_H_
2122851890Sopenharmony_ci#include <linux/types.h>
2222851890Sopenharmony_ci#include <linux/if.h>
2322851890Sopenharmony_ci#include <linux/ip.h>
2422851890Sopenharmony_ci#include <linux/in6.h>
2522851890Sopenharmony_ci#include <asm/byteorder.h>
2622851890Sopenharmony_ci#define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0)
2722851890Sopenharmony_ci#define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1)
2822851890Sopenharmony_ci#define SIOCDELTUNNEL (SIOCDEVPRIVATE + 2)
2922851890Sopenharmony_ci#define SIOCCHGTUNNEL (SIOCDEVPRIVATE + 3)
3022851890Sopenharmony_ci#define SIOCGETPRL (SIOCDEVPRIVATE + 4)
3122851890Sopenharmony_ci#define SIOCADDPRL (SIOCDEVPRIVATE + 5)
3222851890Sopenharmony_ci#define SIOCDELPRL (SIOCDEVPRIVATE + 6)
3322851890Sopenharmony_ci#define SIOCCHGPRL (SIOCDEVPRIVATE + 7)
3422851890Sopenharmony_ci#define SIOCGET6RD (SIOCDEVPRIVATE + 8)
3522851890Sopenharmony_ci#define SIOCADD6RD (SIOCDEVPRIVATE + 9)
3622851890Sopenharmony_ci#define SIOCDEL6RD (SIOCDEVPRIVATE + 10)
3722851890Sopenharmony_ci#define SIOCCHG6RD (SIOCDEVPRIVATE + 11)
3822851890Sopenharmony_ci#define GRE_CSUM __cpu_to_be16(0x8000)
3922851890Sopenharmony_ci#define GRE_ROUTING __cpu_to_be16(0x4000)
4022851890Sopenharmony_ci#define GRE_KEY __cpu_to_be16(0x2000)
4122851890Sopenharmony_ci#define GRE_SEQ __cpu_to_be16(0x1000)
4222851890Sopenharmony_ci#define GRE_STRICT __cpu_to_be16(0x0800)
4322851890Sopenharmony_ci#define GRE_REC __cpu_to_be16(0x0700)
4422851890Sopenharmony_ci#define GRE_ACK __cpu_to_be16(0x0080)
4522851890Sopenharmony_ci#define GRE_FLAGS __cpu_to_be16(0x0078)
4622851890Sopenharmony_ci#define GRE_VERSION __cpu_to_be16(0x0007)
4722851890Sopenharmony_ci#define GRE_IS_CSUM(f) ((f) & GRE_CSUM)
4822851890Sopenharmony_ci#define GRE_IS_ROUTING(f) ((f) & GRE_ROUTING)
4922851890Sopenharmony_ci#define GRE_IS_KEY(f) ((f) & GRE_KEY)
5022851890Sopenharmony_ci#define GRE_IS_SEQ(f) ((f) & GRE_SEQ)
5122851890Sopenharmony_ci#define GRE_IS_STRICT(f) ((f) & GRE_STRICT)
5222851890Sopenharmony_ci#define GRE_IS_REC(f) ((f) & GRE_REC)
5322851890Sopenharmony_ci#define GRE_IS_ACK(f) ((f) & GRE_ACK)
5422851890Sopenharmony_ci#define GRE_VERSION_0 __cpu_to_be16(0x0000)
5522851890Sopenharmony_ci#define GRE_VERSION_1 __cpu_to_be16(0x0001)
5622851890Sopenharmony_ci#define GRE_PROTO_PPP __cpu_to_be16(0x880b)
5722851890Sopenharmony_ci#define GRE_PPTP_KEY_MASK __cpu_to_be32(0xffff)
5822851890Sopenharmony_cistruct ip_tunnel_parm {
5922851890Sopenharmony_ci  char name[IFNAMSIZ];
6022851890Sopenharmony_ci  int link;
6122851890Sopenharmony_ci  __be16 i_flags;
6222851890Sopenharmony_ci  __be16 o_flags;
6322851890Sopenharmony_ci  __be32 i_key;
6422851890Sopenharmony_ci  __be32 o_key;
6522851890Sopenharmony_ci  struct iphdr iph;
6622851890Sopenharmony_ci};
6722851890Sopenharmony_cienum {
6822851890Sopenharmony_ci  IFLA_IPTUN_UNSPEC,
6922851890Sopenharmony_ci  IFLA_IPTUN_LINK,
7022851890Sopenharmony_ci  IFLA_IPTUN_LOCAL,
7122851890Sopenharmony_ci  IFLA_IPTUN_REMOTE,
7222851890Sopenharmony_ci  IFLA_IPTUN_TTL,
7322851890Sopenharmony_ci  IFLA_IPTUN_TOS,
7422851890Sopenharmony_ci  IFLA_IPTUN_ENCAP_LIMIT,
7522851890Sopenharmony_ci  IFLA_IPTUN_FLOWINFO,
7622851890Sopenharmony_ci  IFLA_IPTUN_FLAGS,
7722851890Sopenharmony_ci  IFLA_IPTUN_PROTO,
7822851890Sopenharmony_ci  IFLA_IPTUN_PMTUDISC,
7922851890Sopenharmony_ci  IFLA_IPTUN_6RD_PREFIX,
8022851890Sopenharmony_ci  IFLA_IPTUN_6RD_RELAY_PREFIX,
8122851890Sopenharmony_ci  IFLA_IPTUN_6RD_PREFIXLEN,
8222851890Sopenharmony_ci  IFLA_IPTUN_6RD_RELAY_PREFIXLEN,
8322851890Sopenharmony_ci  IFLA_IPTUN_ENCAP_TYPE,
8422851890Sopenharmony_ci  IFLA_IPTUN_ENCAP_FLAGS,
8522851890Sopenharmony_ci  IFLA_IPTUN_ENCAP_SPORT,
8622851890Sopenharmony_ci  IFLA_IPTUN_ENCAP_DPORT,
8722851890Sopenharmony_ci  IFLA_IPTUN_COLLECT_METADATA,
8822851890Sopenharmony_ci  IFLA_IPTUN_FWMARK,
8922851890Sopenharmony_ci  __IFLA_IPTUN_MAX,
9022851890Sopenharmony_ci};
9122851890Sopenharmony_ci#define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1)
9222851890Sopenharmony_cienum tunnel_encap_types {
9322851890Sopenharmony_ci  TUNNEL_ENCAP_NONE,
9422851890Sopenharmony_ci  TUNNEL_ENCAP_FOU,
9522851890Sopenharmony_ci  TUNNEL_ENCAP_GUE,
9622851890Sopenharmony_ci  TUNNEL_ENCAP_MPLS,
9722851890Sopenharmony_ci};
9822851890Sopenharmony_ci#define TUNNEL_ENCAP_FLAG_CSUM (1 << 0)
9922851890Sopenharmony_ci#define TUNNEL_ENCAP_FLAG_CSUM6 (1 << 1)
10022851890Sopenharmony_ci#define TUNNEL_ENCAP_FLAG_REMCSUM (1 << 2)
10122851890Sopenharmony_ci#define SIT_ISATAP 0x0001
10222851890Sopenharmony_cistruct ip_tunnel_prl {
10322851890Sopenharmony_ci  __be32 addr;
10422851890Sopenharmony_ci  __u16 flags;
10522851890Sopenharmony_ci  __u16 __reserved;
10622851890Sopenharmony_ci  __u32 datalen;
10722851890Sopenharmony_ci  __u32 __reserved2;
10822851890Sopenharmony_ci};
10922851890Sopenharmony_ci#define PRL_DEFAULT 0x0001
11022851890Sopenharmony_cistruct ip_tunnel_6rd {
11122851890Sopenharmony_ci  struct in6_addr prefix;
11222851890Sopenharmony_ci  __be32 relay_prefix;
11322851890Sopenharmony_ci  __u16 prefixlen;
11422851890Sopenharmony_ci  __u16 relay_prefixlen;
11522851890Sopenharmony_ci};
11622851890Sopenharmony_cienum {
11722851890Sopenharmony_ci  IFLA_GRE_UNSPEC,
11822851890Sopenharmony_ci  IFLA_GRE_LINK,
11922851890Sopenharmony_ci  IFLA_GRE_IFLAGS,
12022851890Sopenharmony_ci  IFLA_GRE_OFLAGS,
12122851890Sopenharmony_ci  IFLA_GRE_IKEY,
12222851890Sopenharmony_ci  IFLA_GRE_OKEY,
12322851890Sopenharmony_ci  IFLA_GRE_LOCAL,
12422851890Sopenharmony_ci  IFLA_GRE_REMOTE,
12522851890Sopenharmony_ci  IFLA_GRE_TTL,
12622851890Sopenharmony_ci  IFLA_GRE_TOS,
12722851890Sopenharmony_ci  IFLA_GRE_PMTUDISC,
12822851890Sopenharmony_ci  IFLA_GRE_ENCAP_LIMIT,
12922851890Sopenharmony_ci  IFLA_GRE_FLOWINFO,
13022851890Sopenharmony_ci  IFLA_GRE_FLAGS,
13122851890Sopenharmony_ci  IFLA_GRE_ENCAP_TYPE,
13222851890Sopenharmony_ci  IFLA_GRE_ENCAP_FLAGS,
13322851890Sopenharmony_ci  IFLA_GRE_ENCAP_SPORT,
13422851890Sopenharmony_ci  IFLA_GRE_ENCAP_DPORT,
13522851890Sopenharmony_ci  IFLA_GRE_COLLECT_METADATA,
13622851890Sopenharmony_ci  IFLA_GRE_IGNORE_DF,
13722851890Sopenharmony_ci  IFLA_GRE_FWMARK,
13822851890Sopenharmony_ci  IFLA_GRE_ERSPAN_INDEX,
13922851890Sopenharmony_ci  IFLA_GRE_ERSPAN_VER,
14022851890Sopenharmony_ci  IFLA_GRE_ERSPAN_DIR,
14122851890Sopenharmony_ci  IFLA_GRE_ERSPAN_HWID,
14222851890Sopenharmony_ci  __IFLA_GRE_MAX,
14322851890Sopenharmony_ci};
14422851890Sopenharmony_ci#define IFLA_GRE_MAX (__IFLA_GRE_MAX - 1)
14522851890Sopenharmony_ci#define VTI_ISVTI ((__force __be16) 0x0001)
14622851890Sopenharmony_cienum {
14722851890Sopenharmony_ci  IFLA_VTI_UNSPEC,
14822851890Sopenharmony_ci  IFLA_VTI_LINK,
14922851890Sopenharmony_ci  IFLA_VTI_IKEY,
15022851890Sopenharmony_ci  IFLA_VTI_OKEY,
15122851890Sopenharmony_ci  IFLA_VTI_LOCAL,
15222851890Sopenharmony_ci  IFLA_VTI_REMOTE,
15322851890Sopenharmony_ci  IFLA_VTI_FWMARK,
15422851890Sopenharmony_ci  __IFLA_VTI_MAX,
15522851890Sopenharmony_ci};
15622851890Sopenharmony_ci#define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1)
15722851890Sopenharmony_ci#define TUNNEL_CSUM __cpu_to_be16(0x01)
15822851890Sopenharmony_ci#define TUNNEL_ROUTING __cpu_to_be16(0x02)
15922851890Sopenharmony_ci#define TUNNEL_KEY __cpu_to_be16(0x04)
16022851890Sopenharmony_ci#define TUNNEL_SEQ __cpu_to_be16(0x08)
16122851890Sopenharmony_ci#define TUNNEL_STRICT __cpu_to_be16(0x10)
16222851890Sopenharmony_ci#define TUNNEL_REC __cpu_to_be16(0x20)
16322851890Sopenharmony_ci#define TUNNEL_VERSION __cpu_to_be16(0x40)
16422851890Sopenharmony_ci#define TUNNEL_NO_KEY __cpu_to_be16(0x80)
16522851890Sopenharmony_ci#define TUNNEL_DONT_FRAGMENT __cpu_to_be16(0x0100)
16622851890Sopenharmony_ci#define TUNNEL_OAM __cpu_to_be16(0x0200)
16722851890Sopenharmony_ci#define TUNNEL_CRIT_OPT __cpu_to_be16(0x0400)
16822851890Sopenharmony_ci#define TUNNEL_GENEVE_OPT __cpu_to_be16(0x0800)
16922851890Sopenharmony_ci#define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000)
17022851890Sopenharmony_ci#define TUNNEL_NOCACHE __cpu_to_be16(0x2000)
17122851890Sopenharmony_ci#define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000)
17222851890Sopenharmony_ci#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT)
17322851890Sopenharmony_ci#endif
174