66#ifndef _NETINET_ICMP6_H_
67#define _NETINET_ICMP6_H_
69#define ICMPV6_PLD_MAXLEN 1232
83#define icmp6_data32 icmp6_dataun.icmp6_un_data32
84#define icmp6_data16 icmp6_dataun.icmp6_un_data16
85#define icmp6_data8 icmp6_dataun.icmp6_un_data8
86#define icmp6_pptr icmp6_data32[0]
87#define icmp6_mtu icmp6_data32[0]
88#define icmp6_id icmp6_data16[0]
89#define icmp6_seq icmp6_data16[1]
90#define icmp6_maxdelay icmp6_data16[0]
92#define ICMP6_DST_UNREACH 1
93#define ICMP6_PACKET_TOO_BIG 2
94#define ICMP6_TIME_EXCEEDED 3
95#define ICMP6_PARAM_PROB 4
97#define ICMP6_ECHO_REQUEST 128
98#define ICMP6_ECHO_REPLY 129
99#define MLD_LISTENER_QUERY 130
100#define MLD_LISTENER_REPORT 131
101#define MLD_LISTENER_DONE 132
102#define MLD_LISTENER_REDUCTION MLD_LISTENER_DONE
105#define ICMP6_MEMBERSHIP_QUERY 130
106#define ICMP6_MEMBERSHIP_REPORT 131
107#define ICMP6_MEMBERSHIP_REDUCTION 132
111#define MLD6_LISTENER_QUERY MLD_LISTENER_QUERY
112#define MLD6_LISTENER_REPORT MLD_LISTENER_REPORT
113#define MLD6_LISTENER_DONE MLD_LISTENER_DONE
116#define ND_ROUTER_SOLICIT 133
117#define ND_ROUTER_ADVERT 134
118#define ND_NEIGHBOR_SOLICIT 135
119#define ND_NEIGHBOR_ADVERT 136
120#define ND_REDIRECT 137
122#define ICMP6_ROUTER_RENUMBERING 138
124#define ICMP6_WRUREQUEST 139
125#define ICMP6_WRUREPLY 140
126#define ICMP6_FQDN_QUERY 139
127#define ICMP6_FQDN_REPLY 140
128#define ICMP6_NI_QUERY 139
129#define ICMP6_NI_REPLY 140
130#define MLDV2_LISTENER_REPORT 143
133#define MLD_MTRACE_RESP 200
134#define MLD_MTRACE 201
137#define MLD6_MTRACE_RESP MLD_MTRACE_RESP
138#define MLD6_MTRACE MLD_MTRACE
141#define ICMP6_MAXTYPE 201
143#define ICMP6_DST_UNREACH_NOROUTE 0
144#define ICMP6_DST_UNREACH_ADMIN 1
145#define ICMP6_DST_UNREACH_NOTNEIGHBOR 2
146#define ICMP6_DST_UNREACH_BEYONDSCOPE 2
147#define ICMP6_DST_UNREACH_ADDR 3
148#define ICMP6_DST_UNREACH_NOPORT 4
149#define ICMP6_DST_UNREACH_POLICY 5
150#define ICMP6_DST_UNREACH_REJECT 6
151#define ICMP6_DST_UNREACH_SRCROUTE 7
153#define ICMP6_TIME_EXCEED_TRANSIT 0
154#define ICMP6_TIME_EXCEED_REASSEMBLY 1
156#define ICMP6_PARAMPROB_HEADER 0
157#define ICMP6_PARAMPROB_NEXTHEADER 1
158#define ICMP6_PARAMPROB_OPTION 2
160#define ICMP6_INFOMSG_MASK 0x80
162#define ICMP6_NI_SUBJ_IPV6 0
163#define ICMP6_NI_SUBJ_FQDN 1
164#define ICMP6_NI_SUBJ_IPV4 2
166#define ICMP6_NI_SUCCESS 0
167#define ICMP6_NI_REFUSED 1
168#define ICMP6_NI_UNKNOWN 2
170#define ICMP6_ROUTER_RENUMBERING_COMMAND 0
171#define ICMP6_ROUTER_RENUMBERING_RESULT 1
172#define ICMP6_ROUTER_RENUMBERING_SEQNUM_RESET 255
175#define ND_REDIRECT_ONLINK 0
176#define ND_REDIRECT_ROUTER 1
188#define mld6_hdr mld_hdr
189#define mld6_type mld_type
190#define mld6_code mld_code
191#define mld6_cksum mld_cksum
192#define mld6_maxdelay mld_maxdelay
193#define mld6_reserved mld_reserved
194#define mld6_addr mld_addr
198#define mld_type mld_icmp6_hdr.icmp6_type
199#define mld_code mld_icmp6_hdr.icmp6_code
200#define mld_cksum mld_icmp6_hdr.icmp6_cksum
201#define mld_maxdelay mld_icmp6_hdr.icmp6_data16[0]
202#define mld_reserved mld_icmp6_hdr.icmp6_data16[1]
203#define mld_v2_reserved mld_icmp6_hdr.icmp6_data16[0]
204#define mld_v2_numrecs mld_icmp6_hdr.icmp6_data16[1]
215#define nd_rs_type nd_rs_hdr.icmp6_type
216#define nd_rs_code nd_rs_hdr.icmp6_code
217#define nd_rs_cksum nd_rs_hdr.icmp6_cksum
218#define nd_rs_reserved nd_rs_hdr.icmp6_data32[0]
227#define nd_ra_type nd_ra_hdr.icmp6_type
228#define nd_ra_code nd_ra_hdr.icmp6_code
229#define nd_ra_cksum nd_ra_hdr.icmp6_cksum
230#define nd_ra_curhoplimit nd_ra_hdr.icmp6_data8[0]
231#define nd_ra_flags_reserved nd_ra_hdr.icmp6_data8[1]
232#define ND_RA_FLAG_MANAGED 0x80
233#define ND_RA_FLAG_OTHER 0x40
234#define ND_RA_FLAG_HA 0x20
240#define ND_RA_FLAG_RTPREF_MASK 0x18
242#define ND_RA_FLAG_RTPREF_HIGH 0x08
243#define ND_RA_FLAG_RTPREF_MEDIUM 0x00
244#define ND_RA_FLAG_RTPREF_LOW 0x18
245#define ND_RA_FLAG_RTPREF_RSV 0x10
248#define ND_RA_FLAG_IPV6_ONLY 0x02
251#define nd_ra_router_lifetime nd_ra_hdr.icmp6_data16[1]
259#define nd_ns_type nd_ns_hdr.icmp6_type
260#define nd_ns_code nd_ns_hdr.icmp6_code
261#define nd_ns_cksum nd_ns_hdr.icmp6_cksum
262#define nd_ns_reserved nd_ns_hdr.icmp6_data32[0]
270#define nd_na_type nd_na_hdr.icmp6_type
271#define nd_na_code nd_na_hdr.icmp6_code
272#define nd_na_cksum nd_na_hdr.icmp6_cksum
273#define nd_na_flags_reserved nd_na_hdr.icmp6_data32[0]
274#if BYTE_ORDER == BIG_ENDIAN
275#define ND_NA_FLAG_ROUTER 0x80000000
276#define ND_NA_FLAG_SOLICITED 0x40000000
277#define ND_NA_FLAG_OVERRIDE 0x20000000
279#if BYTE_ORDER == LITTLE_ENDIAN
280#define ND_NA_FLAG_ROUTER 0x80
281#define ND_NA_FLAG_SOLICITED 0x40
282#define ND_NA_FLAG_OVERRIDE 0x20
293#define nd_rd_type nd_rd_hdr.icmp6_type
294#define nd_rd_code nd_rd_hdr.icmp6_code
295#define nd_rd_cksum nd_rd_hdr.icmp6_cksum
296#define nd_rd_reserved nd_rd_hdr.icmp6_data32[0]
304#define ND_OPT_SOURCE_LINKADDR 1
305#define ND_OPT_TARGET_LINKADDR 2
306#define ND_OPT_PREFIX_INFORMATION 3
307#define ND_OPT_REDIRECTED_HEADER 4
309#define ND_OPT_NONCE 14
310#define ND_OPT_ROUTE_INFO 24
311#define ND_OPT_RDNSS 25
312#define ND_OPT_DNSSL 31
326#define ND_OPT_PI_FLAG_ONLINK 0x80
327#define ND_OPT_PI_FLAG_AUTO 0x40
344#define ND_OPT_NONCE_LEN ((1 * 8) - 2)
345#if ((ND_OPT_NONCE_LEN + 2) % 8) != 0
346#error "(ND_OPT_NONCE_LEN + 2) must be a multiple of 8."
388 u_int8_t icmp6_nl_len;
389 u_int8_t icmp6_nl_name[3];
403#define ni_type icmp6_ni_hdr.icmp6_type
404#define ni_code icmp6_ni_hdr.icmp6_code
405#define ni_cksum icmp6_ni_hdr.icmp6_cksum
406#define ni_qtype icmp6_ni_hdr.icmp6_data16[0]
407#define ni_flags icmp6_ni_hdr.icmp6_data16[1]
409#define NI_QTYPE_NOOP 0
410#define NI_QTYPE_SUPTYPES 1
411#define NI_QTYPE_FQDN 2
412#define NI_QTYPE_DNSNAME 2
413#define NI_QTYPE_NODEADDR 3
414#define NI_QTYPE_IPV4ADDR 4
416#if BYTE_ORDER == BIG_ENDIAN
417#define NI_SUPTYPE_FLAG_COMPRESS 0x1
418#define NI_FQDN_FLAG_VALIDTTL 0x1
419#elif BYTE_ORDER == LITTLE_ENDIAN
420#define NI_SUPTYPE_FLAG_COMPRESS 0x0100
421#define NI_FQDN_FLAG_VALIDTTL 0x0100
424#ifdef NAME_LOOKUPS_04
425#if BYTE_ORDER == BIG_ENDIAN
426#define NI_NODEADDR_FLAG_LINKLOCAL 0x1
427#define NI_NODEADDR_FLAG_SITELOCAL 0x2
428#define NI_NODEADDR_FLAG_GLOBAL 0x4
429#define NI_NODEADDR_FLAG_ALL 0x8
430#define NI_NODEADDR_FLAG_TRUNCATE 0x10
431#define NI_NODEADDR_FLAG_ANYCAST 0x20
432#elif BYTE_ORDER == LITTLE_ENDIAN
433#define NI_NODEADDR_FLAG_LINKLOCAL 0x0100
434#define NI_NODEADDR_FLAG_SITELOCAL 0x0200
435#define NI_NODEADDR_FLAG_GLOBAL 0x0400
436#define NI_NODEADDR_FLAG_ALL 0x0800
437#define NI_NODEADDR_FLAG_TRUNCATE 0x1000
438#define NI_NODEADDR_FLAG_ANYCAST 0x2000
441#if BYTE_ORDER == BIG_ENDIAN
442#define NI_NODEADDR_FLAG_TRUNCATE 0x1
443#define NI_NODEADDR_FLAG_ALL 0x2
444#define NI_NODEADDR_FLAG_COMPAT 0x4
445#define NI_NODEADDR_FLAG_LINKLOCAL 0x8
446#define NI_NODEADDR_FLAG_SITELOCAL 0x10
447#define NI_NODEADDR_FLAG_GLOBAL 0x20
448#define NI_NODEADDR_FLAG_ANYCAST 0x40
449#elif BYTE_ORDER == LITTLE_ENDIAN
450#define NI_NODEADDR_FLAG_TRUNCATE 0x0100
451#define NI_NODEADDR_FLAG_ALL 0x0200
452#define NI_NODEADDR_FLAG_COMPAT 0x0400
453#define NI_NODEADDR_FLAG_LINKLOCAL 0x0800
454#define NI_NODEADDR_FLAG_SITELOCAL 0x1000
455#define NI_NODEADDR_FLAG_GLOBAL 0x2000
456#define NI_NODEADDR_FLAG_ANYCAST 0x4000
477#define ICMP6_RR_FLAGS_TEST 0x80
478#define ICMP6_RR_FLAGS_REQRESULT 0x40
479#define ICMP6_RR_FLAGS_FORCEAPPLY 0x20
480#define ICMP6_RR_FLAGS_SPECSITE 0x10
481#define ICMP6_RR_FLAGS_PREVDONE 0x08
483#define rr_type rr_hdr.icmp6_type
484#define rr_code rr_hdr.icmp6_code
485#define rr_cksum rr_hdr.icmp6_cksum
486#define rr_seqnum rr_hdr.icmp6_data32[0]
500#define RPM_PCO_CHANGE 2
501#define RPM_PCO_SETGLOBAL 3
514#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK 0x80
515#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO 0x40
517#if BYTE_ORDER == BIG_ENDIAN
518#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80000000
519#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40000000
520#elif BYTE_ORDER == LITTLE_ENDIAN
521#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80
522#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40
532#if BYTE_ORDER == BIG_ENDIAN
533#define ICMP6_RR_RESULT_FLAGS_OOB 0x0002
534#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0001
535#elif BYTE_ORDER == LITTLE_ENDIAN
536#define ICMP6_RR_RESULT_FLAGS_OOB 0x0200
537#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0100
549#define ICMP6_FILTER_SETPASSALL(filterp) \
552 p = (u_char *)filterp; \
553 for (i = 0; i < sizeof(struct icmp6_filter); i++) \
556#define ICMP6_FILTER_SETBLOCKALL(filterp) \
557 bzero(filterp, sizeof(struct icmp6_filter))
559#define ICMP6_FILTER_SETPASSALL(filterp) \
560 memset(filterp, 0xff, sizeof(struct icmp6_filter))
561#define ICMP6_FILTER_SETBLOCKALL(filterp) \
562 memset(filterp, 0x00, sizeof(struct icmp6_filter))
565#define ICMP6_FILTER_SETPASS(type, filterp) \
566 (((filterp)->icmp6_filt[(type) >> 5]) |= (1 << ((type) & 31)))
567#define ICMP6_FILTER_SETBLOCK(type, filterp) \
568 (((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31)))
569#define ICMP6_FILTER_WILLPASS(type, filterp) \
570 ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)
571#define ICMP6_FILTER_WILLBLOCK(type, filterp) \
572 ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)
613#define icp6s_odst_unreach_noroute \
614 icp6s_outerrhist.icp6errs_dst_unreach_noroute
615#define icp6s_odst_unreach_admin icp6s_outerrhist.icp6errs_dst_unreach_admin
616#define icp6s_odst_unreach_beyondscope \
617 icp6s_outerrhist.icp6errs_dst_unreach_beyondscope
618#define icp6s_odst_unreach_addr icp6s_outerrhist.icp6errs_dst_unreach_addr
619#define icp6s_odst_unreach_noport icp6s_outerrhist.icp6errs_dst_unreach_noport
620#define icp6s_opacket_too_big icp6s_outerrhist.icp6errs_packet_too_big
621#define icp6s_otime_exceed_transit \
622 icp6s_outerrhist.icp6errs_time_exceed_transit
623#define icp6s_otime_exceed_reassembly \
624 icp6s_outerrhist.icp6errs_time_exceed_reassembly
625#define icp6s_oparamprob_header icp6s_outerrhist.icp6errs_paramprob_header
626#define icp6s_oparamprob_nextheader \
627 icp6s_outerrhist.icp6errs_paramprob_nextheader
628#define icp6s_oparamprob_option icp6s_outerrhist.icp6errs_paramprob_option
629#define icp6s_oredirect icp6s_outerrhist.icp6errs_redirect
630#define icp6s_ounknown icp6s_outerrhist.icp6errs_unknown
647#include <sys/counter.h>
654#define ICMP6STAT_ADD(name, val) \
655 VNET_PCPUSTAT_ADD(struct icmp6stat, icmp6stat, name, (val))
656#define ICMP6STAT_INC(name) ICMP6STAT_ADD(name, 1)
662#define KMOD_ICMP6STAT_INC(name) \
663 kmod_icmp6stat_inc(offsetof(struct icmp6stat, name) / sizeof(uint64_t))
669#define ICMPV6CTL_STATS 1
670#define ICMPV6CTL_REDIRACCEPT 2
671#define ICMPV6CTL_REDIRTIMEOUT 3
673#define ICMPV6CTL_ERRRATELIMIT 5
675#define ICMPV6CTL_ND6_PRUNE 6
676#define ICMPV6CTL_ND6_DELAY 8
677#define ICMPV6CTL_ND6_UMAXTRIES 9
678#define ICMPV6CTL_ND6_MMAXTRIES 10
679#define ICMPV6CTL_ND6_USELOOPBACK 11
681#define ICMPV6CTL_NODEINFO 13
682#define ICMPV6CTL_ERRPPSLIMIT 14
683#define ICMPV6CTL_ND6_MAXNUDHINT 15
684#define ICMPV6CTL_MTUDISC_HIWAT 16
685#define ICMPV6CTL_MTUDISC_LOWAT 17
686#define ICMPV6CTL_ND6_DEBUG 18
687#define ICMPV6CTL_ND6_DRLIST 19
688#define ICMPV6CTL_ND6_PRLIST 20
689#define ICMPV6CTL_MLD_MAXSRCFILTER 21
690#define ICMPV6CTL_MLD_SOMAXSRC 22
691#define ICMPV6CTL_MLD_VERSION 23
692#define ICMPV6CTL_ND6_MAXQLEN 24
693#define ICMPV6CTL_NODEINFO_OLDMCPREFIX 25
694#define ICMPV6CTL_MAXID 26
716#define icmp6_ifstat_inc(ifp, tag) \
719 counter_u64_add(((struct in6_ifextra *) \
720 ((ifp)->if_afdata[AF_INET6]))->icmp6_ifstat[\
721 offsetof(struct icmp6_ifstat, tag) / sizeof(uint64_t)], 1);\
724#define icmp6_ifoutstat_inc(ifp, type, code) \
726 icmp6_ifstat_inc(ifp, ifs6_out_msg); \
727 if (type < ICMP6_INFOMSG_MASK) \
728 icmp6_ifstat_inc(ifp, ifs6_out_error); \
730 case ICMP6_DST_UNREACH: \
731 icmp6_ifstat_inc(ifp, ifs6_out_dstunreach); \
732 if (code == ICMP6_DST_UNREACH_ADMIN) \
733 icmp6_ifstat_inc(ifp, ifs6_out_adminprohib); \
735 case ICMP6_PACKET_TOO_BIG: \
736 icmp6_ifstat_inc(ifp, ifs6_out_pkttoobig); \
738 case ICMP6_TIME_EXCEEDED: \
739 icmp6_ifstat_inc(ifp, ifs6_out_timeexceed); \
741 case ICMP6_PARAM_PROB: \
742 icmp6_ifstat_inc(ifp, ifs6_out_paramprob); \
744 case ICMP6_ECHO_REQUEST: \
745 icmp6_ifstat_inc(ifp, ifs6_out_echo); \
747 case ICMP6_ECHO_REPLY: \
748 icmp6_ifstat_inc(ifp, ifs6_out_echoreply); \
750 case MLD_LISTENER_QUERY: \
751 icmp6_ifstat_inc(ifp, ifs6_out_mldquery); \
753 case MLD_LISTENER_REPORT: \
754 icmp6_ifstat_inc(ifp, ifs6_out_mldreport); \
756 case MLD_LISTENER_DONE: \
757 icmp6_ifstat_inc(ifp, ifs6_out_mlddone); \
759 case ND_ROUTER_SOLICIT: \
760 icmp6_ifstat_inc(ifp, ifs6_out_routersolicit); \
762 case ND_ROUTER_ADVERT: \
763 icmp6_ifstat_inc(ifp, ifs6_out_routeradvert); \
765 case ND_NEIGHBOR_SOLICIT: \
766 icmp6_ifstat_inc(ifp, ifs6_out_neighborsolicit); \
768 case ND_NEIGHBOR_ADVERT: \
769 icmp6_ifstat_inc(ifp, ifs6_out_neighboradvert); \
772 icmp6_ifstat_inc(ifp, ifs6_out_redirect); \
780#define V_icmp6_rediraccept VNET(icmp6_rediraccept)
781#define V_icmp6_redirtimeout VNET(icmp6_redirtimeout)
783#define ICMP6_NODEINFO_FQDNOK 0x1
784#define ICMP6_NODEINFO_NODEADDROK 0x2
785#define ICMP6_NODEINFO_TMPADDROK 0x4
786#define ICMP6_NODEINFO_GLOBALOK 0x8
VNET_PCPUSTAT_DECLARE(struct icmp6stat, icmp6stat)
struct icmp6_hdr __packed
VNET_DECLARE(int, icmp6_rediraccept)
void icmp6_error(struct mbuf *, int, int, int)
int icmp6_input(struct mbuf **, int *, int)
void icmp6_slowtimo(void)
void icmp6_fasttimo(void)
void icmp6_redirect_input(struct mbuf *, int)
void icmp6_paramerror(struct mbuf *, int)
void icmp6_error2(struct mbuf *, int, int, int, struct ifnet *)
void icmp6_redirect_output(struct mbuf *, struct nhop_object *)
void icmp6_prepare(struct mbuf *)
void kmod_icmp6stat_inc(int statnum)
void icmp6_mtudisc_update(struct ip6ctlparam *, int)
u_int32_t icmp6_un_data32[1]
u_int16_t icmp6_un_data16[2]
u_int8_t icmp6_un_data8[4]
union icmp6_hdr::@0 icmp6_dataun
struct icmp6_hdr icmp6_nl_hdr
u_int8_t icmp6_nl_nonce[8]
struct icmp6_hdr icmp6_ni_hdr
u_int8_t icmp6_ni_nonce[8]
uint64_t icp6errs_paramprob_header
uint64_t icp6errs_paramprob_option
uint64_t icp6errs_time_exceed_reassembly
uint64_t icp6errs_paramprob_nextheader
uint64_t icp6errs_dst_unreach_noport
uint64_t icp6errs_dst_unreach_addr
uint64_t icp6errs_unknown
uint64_t icp6errs_redirect
uint64_t icp6errs_packet_too_big
uint64_t icp6errs_time_exceed_transit
uint64_t icp6errs_dst_unreach_noroute
uint64_t icp6errs_dst_unreach_beyondscope
uint64_t icp6errs_dst_unreach_admin
uint64_t icp6s_overflowdefrtr
uint64_t icp6s_nd_toomanyopt
uint64_t icp6s_overflownndp
struct icmp6errstat icp6s_outerrhist
uint64_t icp6s_overflowredirect
uint64_t icp6s_overflowprfx
uint64_t icp6s_outhist[256]
uint64_t icp6s_badredirect
uint64_t icp6s_inhist[256]
struct icmp6_hdr mld_icmp6_hdr
struct in6_addr nd_na_target
struct icmp6_hdr nd_na_hdr
struct icmp6_hdr nd_ns_hdr
struct in6_addr nd_ns_target
u_int16_t nd_opt_dnssl_reserved
u_int8_t nd_opt_dnssl_len
u_int32_t nd_opt_dnssl_lifetime
u_int8_t nd_opt_dnssl_type
u_int16_t nd_opt_mtu_reserved
u_int8_t nd_opt_nonce_len
u_int8_t nd_opt_nonce_type
u_int8_t nd_opt_pi_prefix_len
u_int32_t nd_opt_pi_valid_time
u_int32_t nd_opt_pi_reserved2
u_int32_t nd_opt_pi_preferred_time
struct in6_addr nd_opt_pi_prefix
u_int8_t nd_opt_pi_flags_reserved
u_int16_t nd_opt_rh_reserved1
u_int32_t nd_opt_rh_reserved2
u_int8_t nd_opt_rdnss_len
u_int8_t nd_opt_rdnss_type
u_int32_t nd_opt_rdnss_lifetime
u_int16_t nd_opt_rdnss_reserved
u_int8_t nd_opt_rti_flags
u_int32_t nd_opt_rti_lifetime
u_int8_t nd_opt_rti_prefixlen
struct in6_addr nd_rd_dst
struct icmp6_hdr nd_rd_hdr
struct in6_addr nd_rd_target
struct icmp6_hdr nd_ra_hdr
u_int32_t nd_ra_reachable
u_int32_t nd_ra_retransmit
struct icmp6_hdr nd_rs_hdr
struct in6_addr rpm_prefix
struct in6_addr rpu_prefix
struct in6_addr rrr_prefix