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