1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/****************************************************************************
2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   This header was automatically generated from a Linux kernel header
5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   of the same name, to make information necessary for userspace to
6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   call into the kernel available to libc.  It contains only constants,
7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   structures, and macros generated from the original header, and thus,
8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   contains no copyrightable information.
9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   To edit the content of this header, modify the corresponding
11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   source file (e.g. under external/kernel-headers/original/) then
12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   run bionic/libc/kernel/tools/update_all.py
13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   Any manual change here will be lost the next time this script will
15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   be run. You've been warned!
16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/
19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef _UAPI_IPV6_H
20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _UAPI_IPV6_H
2105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#include <linux/libc-compat.h>
22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h>
2305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#include <linux/in6.h>
24655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <asm/byteorder.h>
25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPV6_MIN_MTU 1280
2605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#if __UAPI_DEF_IN6_PKTINFO
27655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct in6_pktinfo {
28d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in6_addr ipi6_addr;
29d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int ipi6_ifindex;
30655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
3105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#endif
3205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#if __UAPI_DEF_IP6_MTUINFO
33655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ip6_mtuinfo {
34d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct sockaddr_in6 ip6m_addr;
35d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 ip6m_mtu;
36655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
3705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#endif
38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct in6_ifreq {
3905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  struct in6_addr ifr6_addr;
40d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 ifr6_prefixlen;
41d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int ifr6_ifindex;
42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
4305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define IPV6_SRCRT_STRICT 0x01
44655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPV6_SRCRT_TYPE_0 0
45655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPV6_SRCRT_TYPE_2 2
4648af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris#define IPV6_SRCRT_TYPE_4 4
4748af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferrisstruct ipv6_rt_hdr {
4805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u8 nexthdr;
49d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 hdrlen;
50d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 type;
5148af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  __u8 segments_left;
5205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris};
53655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ipv6_opt_hdr {
54d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 nexthdr;
5548af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  __u8 hdrlen;
5605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} __attribute__((packed));
57655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipv6_destopt_hdr ipv6_opt_hdr
58655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipv6_hopopt_hdr ipv6_opt_hdr
5948af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris#define IPV6_OPT_ROUTERALERT_MLD 0x0000
6005d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct rt0_hdr {
61d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct ipv6_rt_hdr rt_hdr;
62d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u32 reserved;
6348af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  struct in6_addr addr[0];
6405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define rt0_type rt_hdr.type
65655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
66655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct rt2_hdr {
6748af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  struct ipv6_rt_hdr rt_hdr;
6805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u32 reserved;
69d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in6_addr addr;
70655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define rt2_type rt_hdr.type
7148af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris};
7205d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisstruct ipv6_destopt_hao {
73d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 type;
74d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 length;
7548af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  struct in6_addr addr;
7605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} __attribute__((packed));
77655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ipv6hdr {
78655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifdef __LITTLE_ENDIAN_BITFIELD
7948af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  __u8 priority : 4, version : 4;
8005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#elif defined(__BIG_ENDIAN_BITFIELD)
81d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 version : 4, priority : 4;
82d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#else
8348af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris#error "Please fix <asm/byteorder.h>"
8405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#endif
85d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __u8 flow_lbl[3];
86d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  __be16 payload_len;
8748af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  __u8 nexthdr;
8805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  __u8 hop_limit;
89d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in6_addr saddr;
90d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct in6_addr daddr;
9148af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris};
9205d08e9716b5974d6ed08973f44930804890b902Christopher Ferrisenum {
93d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_FORWARDING = 0,
94d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_HOPLIMIT,
9548af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_MTU6,
9605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_ACCEPT_RA,
97d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_ACCEPT_REDIRECTS,
98d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_AUTOCONF,
9948af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_DAD_TRANSMITS,
10005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_RTR_SOLICITS,
101d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_RTR_SOLICIT_INTERVAL,
102d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_RTR_SOLICIT_DELAY,
10348af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_USE_TEMPADDR,
10405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_TEMP_VALID_LFT,
105d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_TEMP_PREFERED_LFT,
106d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_REGEN_MAX_RETRY,
10748af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_MAX_DESYNC_FACTOR,
10805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_MAX_ADDRESSES,
109d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_FORCE_MLD_VERSION,
110d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_ACCEPT_RA_DEFRTR,
11148af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_ACCEPT_RA_PINFO,
11205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_ACCEPT_RA_RTR_PREF,
113d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_RTR_PROBE_INTERVAL,
114d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
11548af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_PROXY_NDP,
11605d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_OPTIMISTIC_DAD,
117d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_ACCEPT_SOURCE_ROUTE,
118d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_MC_FORWARDING,
11948af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_DISABLE_IPV6,
12005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_ACCEPT_DAD,
121d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_FORCE_TLLAO,
122d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_NDISC_NOTIFY,
12348af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,
12405d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,
125d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_SUPPRESS_FRAG_NDISC,
126d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_ACCEPT_RA_FROM_LOCAL,
12748af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_USE_OPTIMISTIC,
12805d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_ACCEPT_RA_MTU,
12905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_STABLE_SECRET,
13005d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_USE_OIF_ADDRS_ONLY,
13148af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,
13205d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
133106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
134106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris  DEVCONF_DROP_UNSOLICITED_NA,
13548af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_KEEP_ADDR_ON_DOWN,
1366a9755d20a995756487bb1aafb7e954f4fd868a7Christopher Ferris  DEVCONF_RTR_SOLICIT_MAX_INTERVAL,
13748af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_SEG6_ENABLED,
13848af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_SEG6_REQUIRE_HMAC,
13948af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0Christopher Ferris  DEVCONF_ENHANCED_DAD,
140525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  DEVCONF_ADDR_GEN_MODE,
141525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  DEVCONF_DISABLE_POLICY,
142525ce914edf136d2bd02ac8c404d56c52e737f4dChristopher Ferris  DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN,
143934ec9495505d234b2c2fa284470c2f44aae9de9Christopher Ferris  DEVCONF_NDISC_TCLASS,
144d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  DEVCONF_MAX
145655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng};
146655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
147