1 /*
2  * This file is auto-generated. Modifications will be lost.
3  *
4  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5  * for more information.
6  */
7 #ifndef _UAPI_IPV6_H
8 #define _UAPI_IPV6_H
9 #include <linux/libc-compat.h>
10 #include <linux/types.h>
11 #include <linux/stddef.h>
12 #include <linux/in6.h>
13 #include <asm/byteorder.h>
14 #define IPV6_MIN_MTU 1280
15 #if __UAPI_DEF_IN6_PKTINFO
16 struct in6_pktinfo {
17   struct in6_addr ipi6_addr;
18   int ipi6_ifindex;
19 };
20 #endif
21 #if __UAPI_DEF_IP6_MTUINFO
22 struct ip6_mtuinfo {
23   struct sockaddr_in6 ip6m_addr;
24   __u32 ip6m_mtu;
25 };
26 #endif
27 struct in6_ifreq {
28   struct in6_addr ifr6_addr;
29   __u32 ifr6_prefixlen;
30   int ifr6_ifindex;
31 };
32 #define IPV6_SRCRT_STRICT 0x01
33 #define IPV6_SRCRT_TYPE_0 0
34 #define IPV6_SRCRT_TYPE_2 2
35 #define IPV6_SRCRT_TYPE_3 3
36 #define IPV6_SRCRT_TYPE_4 4
37 struct ipv6_rt_hdr {
38   __u8 nexthdr;
39   __u8 hdrlen;
40   __u8 type;
41   __u8 segments_left;
42 };
43 struct ipv6_opt_hdr {
44   __u8 nexthdr;
45   __u8 hdrlen;
46 } __attribute__((packed));
47 #define ipv6_destopt_hdr ipv6_opt_hdr
48 #define ipv6_hopopt_hdr ipv6_opt_hdr
49 #define IPV6_OPT_ROUTERALERT_MLD 0x0000
50 struct rt0_hdr {
51   struct ipv6_rt_hdr rt_hdr;
52   __u32 reserved;
53   struct in6_addr addr[];
54 #define rt0_type rt_hdr.type
55 };
56 struct rt2_hdr {
57   struct ipv6_rt_hdr rt_hdr;
58   __u32 reserved;
59   struct in6_addr addr;
60 #define rt2_type rt_hdr.type
61 };
62 struct ipv6_destopt_hao {
63   __u8 type;
64   __u8 length;
65   struct in6_addr addr;
66 } __attribute__((packed));
67 struct ipv6hdr {
68 #ifdef __LITTLE_ENDIAN_BITFIELD
69   __u8 priority : 4, version : 4;
70 #elif defined(__BIG_ENDIAN_BITFIELD)
71   __u8 version : 4, priority : 4;
72 #else
73 #error "Please fix <asm/byteorder.h>"
74 #endif
75   __u8 flow_lbl[3];
76   __be16 payload_len;
77   __u8 nexthdr;
78   __u8 hop_limit;
79   __struct_group(, addrs,, struct in6_addr saddr;
80   struct in6_addr daddr;
81  );
82 };
83 enum {
84   DEVCONF_FORWARDING = 0,
85   DEVCONF_HOPLIMIT,
86   DEVCONF_MTU6,
87   DEVCONF_ACCEPT_RA,
88   DEVCONF_ACCEPT_REDIRECTS,
89   DEVCONF_AUTOCONF,
90   DEVCONF_DAD_TRANSMITS,
91   DEVCONF_RTR_SOLICITS,
92   DEVCONF_RTR_SOLICIT_INTERVAL,
93   DEVCONF_RTR_SOLICIT_DELAY,
94   DEVCONF_USE_TEMPADDR,
95   DEVCONF_TEMP_VALID_LFT,
96   DEVCONF_TEMP_PREFERED_LFT,
97   DEVCONF_REGEN_MAX_RETRY,
98   DEVCONF_MAX_DESYNC_FACTOR,
99   DEVCONF_MAX_ADDRESSES,
100   DEVCONF_FORCE_MLD_VERSION,
101   DEVCONF_ACCEPT_RA_DEFRTR,
102   DEVCONF_ACCEPT_RA_PINFO,
103   DEVCONF_ACCEPT_RA_RTR_PREF,
104   DEVCONF_RTR_PROBE_INTERVAL,
105   DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
106   DEVCONF_PROXY_NDP,
107   DEVCONF_OPTIMISTIC_DAD,
108   DEVCONF_ACCEPT_SOURCE_ROUTE,
109   DEVCONF_MC_FORWARDING,
110   DEVCONF_DISABLE_IPV6,
111   DEVCONF_ACCEPT_DAD,
112   DEVCONF_FORCE_TLLAO,
113   DEVCONF_NDISC_NOTIFY,
114   DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,
115   DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,
116   DEVCONF_SUPPRESS_FRAG_NDISC,
117   DEVCONF_ACCEPT_RA_FROM_LOCAL,
118   DEVCONF_USE_OPTIMISTIC,
119   DEVCONF_ACCEPT_RA_MTU,
120   DEVCONF_STABLE_SECRET,
121   DEVCONF_USE_OIF_ADDRS_ONLY,
122   DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,
123   DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
124   DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
125   DEVCONF_DROP_UNSOLICITED_NA,
126   DEVCONF_KEEP_ADDR_ON_DOWN,
127   DEVCONF_RTR_SOLICIT_MAX_INTERVAL,
128   DEVCONF_SEG6_ENABLED,
129   DEVCONF_SEG6_REQUIRE_HMAC,
130   DEVCONF_ENHANCED_DAD,
131   DEVCONF_ADDR_GEN_MODE,
132   DEVCONF_DISABLE_POLICY,
133   DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN,
134   DEVCONF_NDISC_TCLASS,
135   DEVCONF_RPL_SEG_ENABLED,
136   DEVCONF_RA_DEFRTR_METRIC,
137   DEVCONF_IOAM6_ENABLED,
138   DEVCONF_IOAM6_ID,
139   DEVCONF_IOAM6_ID_WIDE,
140   DEVCONF_NDISC_EVICT_NOCARRIER,
141   DEVCONF_ACCEPT_UNTRACKED_NA,
142   DEVCONF_ACCEPT_RA_MIN_LFT,
143   DEVCONF_MAX
144 };
145 #endif
146