xref: /aosp_15_r20/prebuilts/build-tools/sysroots/i686-unknown-linux-musl/include/netinet/icmp6.h (revision cda5da8d549138a6648c5ee6d7a49cf8f4a657be)
1*cda5da8dSAndroid Build Coastguard Worker #ifndef _NETINET_ICMP6_H
2*cda5da8dSAndroid Build Coastguard Worker #define _NETINET_ICMP6_H
3*cda5da8dSAndroid Build Coastguard Worker 
4*cda5da8dSAndroid Build Coastguard Worker #ifdef __cplusplus
5*cda5da8dSAndroid Build Coastguard Worker extern "C" {
6*cda5da8dSAndroid Build Coastguard Worker #endif
7*cda5da8dSAndroid Build Coastguard Worker 
8*cda5da8dSAndroid Build Coastguard Worker #include <stdint.h>
9*cda5da8dSAndroid Build Coastguard Worker #include <string.h>
10*cda5da8dSAndroid Build Coastguard Worker #include <sys/types.h>
11*cda5da8dSAndroid Build Coastguard Worker #include <netinet/in.h>
12*cda5da8dSAndroid Build Coastguard Worker 
13*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER 1
14*cda5da8dSAndroid Build Coastguard Worker 
15*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER_BLOCK		1
16*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER_PASS		2
17*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER_BLOCKOTHERS	3
18*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER_PASSONLY		4
19*cda5da8dSAndroid Build Coastguard Worker 
20*cda5da8dSAndroid Build Coastguard Worker struct icmp6_filter {
21*cda5da8dSAndroid Build Coastguard Worker 	uint32_t icmp6_filt[8];
22*cda5da8dSAndroid Build Coastguard Worker };
23*cda5da8dSAndroid Build Coastguard Worker 
24*cda5da8dSAndroid Build Coastguard Worker struct icmp6_hdr {
25*cda5da8dSAndroid Build Coastguard Worker 	uint8_t     icmp6_type;
26*cda5da8dSAndroid Build Coastguard Worker 	uint8_t     icmp6_code;
27*cda5da8dSAndroid Build Coastguard Worker 	uint16_t    icmp6_cksum;
28*cda5da8dSAndroid Build Coastguard Worker 	union {
29*cda5da8dSAndroid Build Coastguard Worker 		uint32_t  icmp6_un_data32[1];
30*cda5da8dSAndroid Build Coastguard Worker 		uint16_t  icmp6_un_data16[2];
31*cda5da8dSAndroid Build Coastguard Worker 		uint8_t   icmp6_un_data8[4];
32*cda5da8dSAndroid Build Coastguard Worker 	} icmp6_dataun;
33*cda5da8dSAndroid Build Coastguard Worker };
34*cda5da8dSAndroid Build Coastguard Worker 
35*cda5da8dSAndroid Build Coastguard Worker #define icmp6_data32    icmp6_dataun.icmp6_un_data32
36*cda5da8dSAndroid Build Coastguard Worker #define icmp6_data16    icmp6_dataun.icmp6_un_data16
37*cda5da8dSAndroid Build Coastguard Worker #define icmp6_data8     icmp6_dataun.icmp6_un_data8
38*cda5da8dSAndroid Build Coastguard Worker #define icmp6_pptr      icmp6_data32[0]
39*cda5da8dSAndroid Build Coastguard Worker #define icmp6_mtu       icmp6_data32[0]
40*cda5da8dSAndroid Build Coastguard Worker #define icmp6_id        icmp6_data16[0]
41*cda5da8dSAndroid Build Coastguard Worker #define icmp6_seq       icmp6_data16[1]
42*cda5da8dSAndroid Build Coastguard Worker #define icmp6_maxdelay  icmp6_data16[0]
43*cda5da8dSAndroid Build Coastguard Worker 
44*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_DST_UNREACH             1
45*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_PACKET_TOO_BIG          2
46*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_TIME_EXCEEDED           3
47*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_PARAM_PROB              4
48*cda5da8dSAndroid Build Coastguard Worker 
49*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_INFOMSG_MASK  0x80
50*cda5da8dSAndroid Build Coastguard Worker 
51*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_ECHO_REQUEST          128
52*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_ECHO_REPLY            129
53*cda5da8dSAndroid Build Coastguard Worker #define MLD_LISTENER_QUERY          130
54*cda5da8dSAndroid Build Coastguard Worker #define MLD_LISTENER_REPORT         131
55*cda5da8dSAndroid Build Coastguard Worker #define MLD_LISTENER_REDUCTION      132
56*cda5da8dSAndroid Build Coastguard Worker 
57*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_DST_UNREACH_NOROUTE     0
58*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_DST_UNREACH_ADMIN       1
59*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_DST_UNREACH_BEYONDSCOPE 2
60*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_DST_UNREACH_ADDR        3
61*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_DST_UNREACH_NOPORT      4
62*cda5da8dSAndroid Build Coastguard Worker 
63*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_TIME_EXCEED_TRANSIT     0
64*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_TIME_EXCEED_REASSEMBLY  1
65*cda5da8dSAndroid Build Coastguard Worker 
66*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_PARAMPROB_HEADER        0
67*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_PARAMPROB_NEXTHEADER    1
68*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_PARAMPROB_OPTION        2
69*cda5da8dSAndroid Build Coastguard Worker 
70*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER_WILLPASS(type, filterp) \
71*cda5da8dSAndroid Build Coastguard Worker 	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)
72*cda5da8dSAndroid Build Coastguard Worker 
73*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER_WILLBLOCK(type, filterp) \
74*cda5da8dSAndroid Build Coastguard Worker 	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)
75*cda5da8dSAndroid Build Coastguard Worker 
76*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER_SETPASS(type, filterp) \
77*cda5da8dSAndroid Build Coastguard Worker 	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31))))
78*cda5da8dSAndroid Build Coastguard Worker 
79*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER_SETBLOCK(type, filterp) \
80*cda5da8dSAndroid Build Coastguard Worker 	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1 << ((type) & 31))))
81*cda5da8dSAndroid Build Coastguard Worker 
82*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER_SETPASSALL(filterp) \
83*cda5da8dSAndroid Build Coastguard Worker 	memset (filterp, 0, sizeof (struct icmp6_filter));
84*cda5da8dSAndroid Build Coastguard Worker 
85*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_FILTER_SETBLOCKALL(filterp) \
86*cda5da8dSAndroid Build Coastguard Worker 	memset (filterp, 0xFF, sizeof (struct icmp6_filter));
87*cda5da8dSAndroid Build Coastguard Worker 
88*cda5da8dSAndroid Build Coastguard Worker #define ND_ROUTER_SOLICIT           133
89*cda5da8dSAndroid Build Coastguard Worker #define ND_ROUTER_ADVERT            134
90*cda5da8dSAndroid Build Coastguard Worker #define ND_NEIGHBOR_SOLICIT         135
91*cda5da8dSAndroid Build Coastguard Worker #define ND_NEIGHBOR_ADVERT          136
92*cda5da8dSAndroid Build Coastguard Worker #define ND_REDIRECT                 137
93*cda5da8dSAndroid Build Coastguard Worker 
94*cda5da8dSAndroid Build Coastguard Worker struct nd_router_solicit {
95*cda5da8dSAndroid Build Coastguard Worker 	struct icmp6_hdr  nd_rs_hdr;
96*cda5da8dSAndroid Build Coastguard Worker };
97*cda5da8dSAndroid Build Coastguard Worker 
98*cda5da8dSAndroid Build Coastguard Worker #define nd_rs_type               nd_rs_hdr.icmp6_type
99*cda5da8dSAndroid Build Coastguard Worker #define nd_rs_code               nd_rs_hdr.icmp6_code
100*cda5da8dSAndroid Build Coastguard Worker #define nd_rs_cksum              nd_rs_hdr.icmp6_cksum
101*cda5da8dSAndroid Build Coastguard Worker #define nd_rs_reserved           nd_rs_hdr.icmp6_data32[0]
102*cda5da8dSAndroid Build Coastguard Worker 
103*cda5da8dSAndroid Build Coastguard Worker struct nd_router_advert {
104*cda5da8dSAndroid Build Coastguard Worker 	struct icmp6_hdr  nd_ra_hdr;
105*cda5da8dSAndroid Build Coastguard Worker 	uint32_t   nd_ra_reachable;
106*cda5da8dSAndroid Build Coastguard Worker 	uint32_t   nd_ra_retransmit;
107*cda5da8dSAndroid Build Coastguard Worker };
108*cda5da8dSAndroid Build Coastguard Worker 
109*cda5da8dSAndroid Build Coastguard Worker #define nd_ra_type               nd_ra_hdr.icmp6_type
110*cda5da8dSAndroid Build Coastguard Worker #define nd_ra_code               nd_ra_hdr.icmp6_code
111*cda5da8dSAndroid Build Coastguard Worker #define nd_ra_cksum              nd_ra_hdr.icmp6_cksum
112*cda5da8dSAndroid Build Coastguard Worker #define nd_ra_curhoplimit        nd_ra_hdr.icmp6_data8[0]
113*cda5da8dSAndroid Build Coastguard Worker #define nd_ra_flags_reserved     nd_ra_hdr.icmp6_data8[1]
114*cda5da8dSAndroid Build Coastguard Worker #define ND_RA_FLAG_MANAGED       0x80
115*cda5da8dSAndroid Build Coastguard Worker #define ND_RA_FLAG_OTHER         0x40
116*cda5da8dSAndroid Build Coastguard Worker #define ND_RA_FLAG_HOME_AGENT    0x20
117*cda5da8dSAndroid Build Coastguard Worker #define nd_ra_router_lifetime    nd_ra_hdr.icmp6_data16[1]
118*cda5da8dSAndroid Build Coastguard Worker 
119*cda5da8dSAndroid Build Coastguard Worker struct nd_neighbor_solicit {
120*cda5da8dSAndroid Build Coastguard Worker 	struct icmp6_hdr  nd_ns_hdr;
121*cda5da8dSAndroid Build Coastguard Worker 	struct in6_addr   nd_ns_target;
122*cda5da8dSAndroid Build Coastguard Worker };
123*cda5da8dSAndroid Build Coastguard Worker 
124*cda5da8dSAndroid Build Coastguard Worker #define nd_ns_type               nd_ns_hdr.icmp6_type
125*cda5da8dSAndroid Build Coastguard Worker #define nd_ns_code               nd_ns_hdr.icmp6_code
126*cda5da8dSAndroid Build Coastguard Worker #define nd_ns_cksum              nd_ns_hdr.icmp6_cksum
127*cda5da8dSAndroid Build Coastguard Worker #define nd_ns_reserved           nd_ns_hdr.icmp6_data32[0]
128*cda5da8dSAndroid Build Coastguard Worker 
129*cda5da8dSAndroid Build Coastguard Worker struct nd_neighbor_advert {
130*cda5da8dSAndroid Build Coastguard Worker 	struct icmp6_hdr  nd_na_hdr;
131*cda5da8dSAndroid Build Coastguard Worker 	struct in6_addr   nd_na_target;
132*cda5da8dSAndroid Build Coastguard Worker };
133*cda5da8dSAndroid Build Coastguard Worker 
134*cda5da8dSAndroid Build Coastguard Worker #define nd_na_type               nd_na_hdr.icmp6_type
135*cda5da8dSAndroid Build Coastguard Worker #define nd_na_code               nd_na_hdr.icmp6_code
136*cda5da8dSAndroid Build Coastguard Worker #define nd_na_cksum              nd_na_hdr.icmp6_cksum
137*cda5da8dSAndroid Build Coastguard Worker #define nd_na_flags_reserved     nd_na_hdr.icmp6_data32[0]
138*cda5da8dSAndroid Build Coastguard Worker #if     __BYTE_ORDER == __BIG_ENDIAN
139*cda5da8dSAndroid Build Coastguard Worker #define ND_NA_FLAG_ROUTER        0x80000000
140*cda5da8dSAndroid Build Coastguard Worker #define ND_NA_FLAG_SOLICITED     0x40000000
141*cda5da8dSAndroid Build Coastguard Worker #define ND_NA_FLAG_OVERRIDE      0x20000000
142*cda5da8dSAndroid Build Coastguard Worker #else
143*cda5da8dSAndroid Build Coastguard Worker #define ND_NA_FLAG_ROUTER        0x00000080
144*cda5da8dSAndroid Build Coastguard Worker #define ND_NA_FLAG_SOLICITED     0x00000040
145*cda5da8dSAndroid Build Coastguard Worker #define ND_NA_FLAG_OVERRIDE      0x00000020
146*cda5da8dSAndroid Build Coastguard Worker #endif
147*cda5da8dSAndroid Build Coastguard Worker 
148*cda5da8dSAndroid Build Coastguard Worker struct nd_redirect {
149*cda5da8dSAndroid Build Coastguard Worker 	struct icmp6_hdr  nd_rd_hdr;
150*cda5da8dSAndroid Build Coastguard Worker 	struct in6_addr   nd_rd_target;
151*cda5da8dSAndroid Build Coastguard Worker 	struct in6_addr   nd_rd_dst;
152*cda5da8dSAndroid Build Coastguard Worker };
153*cda5da8dSAndroid Build Coastguard Worker 
154*cda5da8dSAndroid Build Coastguard Worker #define nd_rd_type               nd_rd_hdr.icmp6_type
155*cda5da8dSAndroid Build Coastguard Worker #define nd_rd_code               nd_rd_hdr.icmp6_code
156*cda5da8dSAndroid Build Coastguard Worker #define nd_rd_cksum              nd_rd_hdr.icmp6_cksum
157*cda5da8dSAndroid Build Coastguard Worker #define nd_rd_reserved           nd_rd_hdr.icmp6_data32[0]
158*cda5da8dSAndroid Build Coastguard Worker 
159*cda5da8dSAndroid Build Coastguard Worker struct nd_opt_hdr {
160*cda5da8dSAndroid Build Coastguard Worker 	uint8_t  nd_opt_type;
161*cda5da8dSAndroid Build Coastguard Worker 	uint8_t  nd_opt_len;
162*cda5da8dSAndroid Build Coastguard Worker };
163*cda5da8dSAndroid Build Coastguard Worker 
164*cda5da8dSAndroid Build Coastguard Worker #define ND_OPT_SOURCE_LINKADDR		1
165*cda5da8dSAndroid Build Coastguard Worker #define ND_OPT_TARGET_LINKADDR		2
166*cda5da8dSAndroid Build Coastguard Worker #define ND_OPT_PREFIX_INFORMATION	3
167*cda5da8dSAndroid Build Coastguard Worker #define ND_OPT_REDIRECTED_HEADER	4
168*cda5da8dSAndroid Build Coastguard Worker #define ND_OPT_MTU			5
169*cda5da8dSAndroid Build Coastguard Worker #define ND_OPT_RTR_ADV_INTERVAL		7
170*cda5da8dSAndroid Build Coastguard Worker #define ND_OPT_HOME_AGENT_INFO		8
171*cda5da8dSAndroid Build Coastguard Worker 
172*cda5da8dSAndroid Build Coastguard Worker struct nd_opt_prefix_info {
173*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_pi_type;
174*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_pi_len;
175*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_pi_prefix_len;
176*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_pi_flags_reserved;
177*cda5da8dSAndroid Build Coastguard Worker 	uint32_t  nd_opt_pi_valid_time;
178*cda5da8dSAndroid Build Coastguard Worker 	uint32_t  nd_opt_pi_preferred_time;
179*cda5da8dSAndroid Build Coastguard Worker 	uint32_t  nd_opt_pi_reserved2;
180*cda5da8dSAndroid Build Coastguard Worker 	struct in6_addr  nd_opt_pi_prefix;
181*cda5da8dSAndroid Build Coastguard Worker };
182*cda5da8dSAndroid Build Coastguard Worker 
183*cda5da8dSAndroid Build Coastguard Worker #define ND_OPT_PI_FLAG_ONLINK	0x80
184*cda5da8dSAndroid Build Coastguard Worker #define ND_OPT_PI_FLAG_AUTO	0x40
185*cda5da8dSAndroid Build Coastguard Worker #define ND_OPT_PI_FLAG_RADDR	0x20
186*cda5da8dSAndroid Build Coastguard Worker 
187*cda5da8dSAndroid Build Coastguard Worker struct nd_opt_rd_hdr {
188*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_rh_type;
189*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_rh_len;
190*cda5da8dSAndroid Build Coastguard Worker 	uint16_t  nd_opt_rh_reserved1;
191*cda5da8dSAndroid Build Coastguard Worker 	uint32_t  nd_opt_rh_reserved2;
192*cda5da8dSAndroid Build Coastguard Worker };
193*cda5da8dSAndroid Build Coastguard Worker 
194*cda5da8dSAndroid Build Coastguard Worker struct nd_opt_mtu {
195*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_mtu_type;
196*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_mtu_len;
197*cda5da8dSAndroid Build Coastguard Worker 	uint16_t  nd_opt_mtu_reserved;
198*cda5da8dSAndroid Build Coastguard Worker 	uint32_t  nd_opt_mtu_mtu;
199*cda5da8dSAndroid Build Coastguard Worker };
200*cda5da8dSAndroid Build Coastguard Worker 
201*cda5da8dSAndroid Build Coastguard Worker struct mld_hdr {
202*cda5da8dSAndroid Build Coastguard Worker 	struct icmp6_hdr    mld_icmp6_hdr;
203*cda5da8dSAndroid Build Coastguard Worker 	struct in6_addr     mld_addr;
204*cda5da8dSAndroid Build Coastguard Worker };
205*cda5da8dSAndroid Build Coastguard Worker 
206*cda5da8dSAndroid Build Coastguard Worker #define mld_type        mld_icmp6_hdr.icmp6_type
207*cda5da8dSAndroid Build Coastguard Worker #define mld_code        mld_icmp6_hdr.icmp6_code
208*cda5da8dSAndroid Build Coastguard Worker #define mld_cksum       mld_icmp6_hdr.icmp6_cksum
209*cda5da8dSAndroid Build Coastguard Worker #define mld_maxdelay    mld_icmp6_hdr.icmp6_data16[0]
210*cda5da8dSAndroid Build Coastguard Worker #define mld_reserved    mld_icmp6_hdr.icmp6_data16[1]
211*cda5da8dSAndroid Build Coastguard Worker 
212*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_ROUTER_RENUMBERING    138
213*cda5da8dSAndroid Build Coastguard Worker 
214*cda5da8dSAndroid Build Coastguard Worker struct icmp6_router_renum {
215*cda5da8dSAndroid Build Coastguard Worker 	struct icmp6_hdr    rr_hdr;
216*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rr_segnum;
217*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rr_flags;
218*cda5da8dSAndroid Build Coastguard Worker 	uint16_t            rr_maxdelay;
219*cda5da8dSAndroid Build Coastguard Worker 	uint32_t            rr_reserved;
220*cda5da8dSAndroid Build Coastguard Worker };
221*cda5da8dSAndroid Build Coastguard Worker 
222*cda5da8dSAndroid Build Coastguard Worker #define rr_type		rr_hdr.icmp6_type
223*cda5da8dSAndroid Build Coastguard Worker #define rr_code         rr_hdr.icmp6_code
224*cda5da8dSAndroid Build Coastguard Worker #define rr_cksum        rr_hdr.icmp6_cksum
225*cda5da8dSAndroid Build Coastguard Worker #define rr_seqnum       rr_hdr.icmp6_data32[0]
226*cda5da8dSAndroid Build Coastguard Worker 
227*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_FLAGS_TEST             0x80
228*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_FLAGS_REQRESULT        0x40
229*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_FLAGS_FORCEAPPLY       0x20
230*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_FLAGS_SPECSITE         0x10
231*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_FLAGS_PREVDONE         0x08
232*cda5da8dSAndroid Build Coastguard Worker 
233*cda5da8dSAndroid Build Coastguard Worker struct rr_pco_match {
234*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rpm_code;
235*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rpm_len;
236*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rpm_ordinal;
237*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rpm_matchlen;
238*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rpm_minlen;
239*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rpm_maxlen;
240*cda5da8dSAndroid Build Coastguard Worker 	uint16_t            rpm_reserved;
241*cda5da8dSAndroid Build Coastguard Worker 	struct in6_addr     rpm_prefix;
242*cda5da8dSAndroid Build Coastguard Worker };
243*cda5da8dSAndroid Build Coastguard Worker 
244*cda5da8dSAndroid Build Coastguard Worker #define RPM_PCO_ADD             1
245*cda5da8dSAndroid Build Coastguard Worker #define RPM_PCO_CHANGE          2
246*cda5da8dSAndroid Build Coastguard Worker #define RPM_PCO_SETGLOBAL       3
247*cda5da8dSAndroid Build Coastguard Worker 
248*cda5da8dSAndroid Build Coastguard Worker struct rr_pco_use {
249*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rpu_uselen;
250*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rpu_keeplen;
251*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rpu_ramask;
252*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rpu_raflags;
253*cda5da8dSAndroid Build Coastguard Worker 	uint32_t            rpu_vltime;
254*cda5da8dSAndroid Build Coastguard Worker 	uint32_t            rpu_pltime;
255*cda5da8dSAndroid Build Coastguard Worker 	uint32_t            rpu_flags;
256*cda5da8dSAndroid Build Coastguard Worker 	struct in6_addr     rpu_prefix;
257*cda5da8dSAndroid Build Coastguard Worker };
258*cda5da8dSAndroid Build Coastguard Worker 
259*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK  0x20
260*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_PCOUSE_RAFLAGS_AUTO    0x10
261*cda5da8dSAndroid Build Coastguard Worker 
262*cda5da8dSAndroid Build Coastguard Worker #if __BYTE_ORDER == __BIG_ENDIAN
263*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80000000
264*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40000000
265*cda5da8dSAndroid Build Coastguard Worker #else
266*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80
267*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40
268*cda5da8dSAndroid Build Coastguard Worker #endif
269*cda5da8dSAndroid Build Coastguard Worker 
270*cda5da8dSAndroid Build Coastguard Worker struct rr_result {
271*cda5da8dSAndroid Build Coastguard Worker 	uint16_t            rrr_flags;
272*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rrr_ordinal;
273*cda5da8dSAndroid Build Coastguard Worker 	uint8_t             rrr_matchedlen;
274*cda5da8dSAndroid Build Coastguard Worker 	uint32_t            rrr_ifid;
275*cda5da8dSAndroid Build Coastguard Worker 	struct in6_addr     rrr_prefix;
276*cda5da8dSAndroid Build Coastguard Worker };
277*cda5da8dSAndroid Build Coastguard Worker 
278*cda5da8dSAndroid Build Coastguard Worker #if __BYTE_ORDER == __BIG_ENDIAN
279*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_RESULT_FLAGS_OOB       0x0002
280*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0001
281*cda5da8dSAndroid Build Coastguard Worker #else
282*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_RESULT_FLAGS_OOB       0x0200
283*cda5da8dSAndroid Build Coastguard Worker #define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0100
284*cda5da8dSAndroid Build Coastguard Worker #endif
285*cda5da8dSAndroid Build Coastguard Worker 
286*cda5da8dSAndroid Build Coastguard Worker struct nd_opt_adv_interval {
287*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_adv_interval_type;
288*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_adv_interval_len;
289*cda5da8dSAndroid Build Coastguard Worker 	uint16_t  nd_opt_adv_interval_reserved;
290*cda5da8dSAndroid Build Coastguard Worker 	uint32_t  nd_opt_adv_interval_ival;
291*cda5da8dSAndroid Build Coastguard Worker };
292*cda5da8dSAndroid Build Coastguard Worker 
293*cda5da8dSAndroid Build Coastguard Worker struct nd_opt_home_agent_info {
294*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_home_agent_info_type;
295*cda5da8dSAndroid Build Coastguard Worker 	uint8_t   nd_opt_home_agent_info_len;
296*cda5da8dSAndroid Build Coastguard Worker 	uint16_t  nd_opt_home_agent_info_reserved;
297*cda5da8dSAndroid Build Coastguard Worker 	uint16_t  nd_opt_home_agent_info_preference;
298*cda5da8dSAndroid Build Coastguard Worker 	uint16_t  nd_opt_home_agent_info_lifetime;
299*cda5da8dSAndroid Build Coastguard Worker };
300*cda5da8dSAndroid Build Coastguard Worker 
301*cda5da8dSAndroid Build Coastguard Worker #ifdef __cplusplus
302*cda5da8dSAndroid Build Coastguard Worker }
303*cda5da8dSAndroid Build Coastguard Worker #endif
304*cda5da8dSAndroid Build Coastguard Worker 
305*cda5da8dSAndroid Build Coastguard Worker #endif
306