#include <netinet6/in6_var.h>
netinet6/in6_var.h
structin6_addrlifetime
pltime/vltime are just for future reference (required to implements 2
hour rule for hosts). they should never be modified by nd6_timeout or
anywhere else.
userland -> kernel: accept pltime/vltime
kernel -> userland: throw up everything
in kernel: modify preferred/expire only
| time_t | ia6t_expire | valid lifetime expiration time |
| time_t | ia6t_preferred | preferred lifetime expiration time |
| u_int32_t | ia6t_vltime | valid lifetime |
| u_int32_t | ia6t_pltime | prefix lifetime |
structin6_addrpolicy
control structure to manage address selection policy
| struct sockaddr_in6 | addr | prefix address |
| struct sockaddr_in6 | addrmask | prefix mask |
| int | preced | precedence |
| int | label | matching label |
| u_quad_t | use | statistics |
structin6_ifstat
IPv6 interface statistics, as defined in RFC2465 Ipv6IfStatsEntry (p12).
| u_quad_t | ifs6_in_receive | # of total input datagram |
| u_quad_t | ifs6_in_hdrerr | # of datagrams with invalid hdr |
| u_quad_t | ifs6_in_toobig | # of datagrams exceeded MTU |
| u_quad_t | ifs6_in_noroute | # of datagrams with no route |
| u_quad_t | ifs6_in_addrerr | # of datagrams with invalid dst |
| u_quad_t | ifs6_in_protounknown | # of datagrams with unknown proto |
| u_quad_t | ifs6_in_truncated | NOTE: increment on final dst if # of truncated datagrams |
| u_quad_t | ifs6_in_discard | # of discarded datagrams |
| u_quad_t | ifs6_in_deliver | NOTE: fragment timeout is not here # of datagrams delivered to ULP |
| u_quad_t | ifs6_out_forward | NOTE: increment on final dst if # of datagrams forwarded |
| u_quad_t | ifs6_out_request | NOTE: increment on outgoing if # of outgoing datagrams from ULP |
| u_quad_t | ifs6_out_discard | NOTE: does not include forwrads # of discarded datagrams |
| u_quad_t | ifs6_out_fragok | # of datagrams fragmented |
| u_quad_t | ifs6_out_fragfail | # of datagrams failed on fragment |
| u_quad_t | ifs6_out_fragcreat | # of fragment datagrams |
| u_quad_t | ifs6_reass_reqd | NOTE: this is # after fragment # of incoming fragmented packets |
| u_quad_t | ifs6_reass_ok | NOTE: increment on final dst if # of reassembled packets |
| u_quad_t | ifs6_atmfrag_rcvd | NOTE: this is # after reass NOTE: increment on final dst if # of atomic fragments received |
| u_quad_t | ifs6_reass_fail | # of reass failures |
| u_quad_t | ifs6_in_mcast | NOTE: may not be packet count NOTE: increment on final dst if # of inbound multicast datagrams |
| u_quad_t | ifs6_out_mcast | # of outbound multicast datagrams |
| u_quad_t | ifs6_cantfoward_icmp6 | # of ICMPv6 packets received for unreachable dest |
| u_quad_t | ifs6_addr_expiry_cnt | # of address expiry events (excluding privacy addresses) |
| u_quad_t | ifs6_pfx_expiry_cnt | # of prefix expiry events |
| u_quad_t | ifs6_defrtr_expiry_cnt | # of default router expiry events |
structicmp6_ifstat
ICMPv6 interface statistics, as defined in RFC2466 Ipv6IfIcmpEntry.
XXX: I'm not sure if this file is the right place for this structure...
| u_quad_t | ifs6_in_msg | Input statistics ipv6IfIcmpInMsgs, total # of input messages |
| u_quad_t | ifs6_in_error | ipv6IfIcmpInErrors, # of input error messages |
| u_quad_t | ifs6_in_dstunreach | ipv6IfIcmpInDestUnreachs, # of input dest unreach errors |
| u_quad_t | ifs6_in_adminprohib | ipv6IfIcmpInAdminProhibs, # of input admin. prohibited errs |
| u_quad_t | ifs6_in_timeexceed | ipv6IfIcmpInTimeExcds, # of input time exceeded errors |
| u_quad_t | ifs6_in_paramprob | ipv6IfIcmpInParmProblems, # of input parameter problem errors |
| u_quad_t | ifs6_in_pkttoobig | ipv6IfIcmpInPktTooBigs, # of input packet too big errors |
| u_quad_t | ifs6_in_echo | ipv6IfIcmpInEchos, # of input echo requests |
| u_quad_t | ifs6_in_echoreply | ipv6IfIcmpInEchoReplies, # of input echo replies |
| u_quad_t | ifs6_in_routersolicit | ipv6IfIcmpInRouterSolicits, # of input router solicitations |
| u_quad_t | ifs6_in_routeradvert | ipv6IfIcmpInRouterAdvertisements, # of input router advertisements |
| u_quad_t | ifs6_in_neighborsolicit | ipv6IfIcmpInNeighborSolicits, # of input neighbor solicitations |
| u_quad_t | ifs6_in_neighboradvert | ipv6IfIcmpInNeighborAdvertisements, # of input neighbor advs. |
| u_quad_t | ifs6_in_redirect | ipv6IfIcmpInRedirects, # of input redirects |
| u_quad_t | ifs6_in_mldquery | ipv6IfIcmpInGroupMembQueries, # of input MLD queries |
| u_quad_t | ifs6_in_mldreport | ipv6IfIcmpInGroupMembResponses, # of input MLD reports |
| u_quad_t | ifs6_in_mlddone | ipv6IfIcmpInGroupMembReductions, # of input MLD done |
| u_quad_t | ifs6_out_msg | Output statistics. We should solve unresolved routing problem... ipv6IfIcmpOutMsgs, total # of output messages |
| u_quad_t | ifs6_out_error | ipv6IfIcmpOutErrors, # of output error messages |
| u_quad_t | ifs6_out_dstunreach | ipv6IfIcmpOutDestUnreachs, # of output dest unreach errors |
| u_quad_t | ifs6_out_adminprohib | ipv6IfIcmpOutAdminProhibs, # of output admin. prohibited errs |
| u_quad_t | ifs6_out_timeexceed | ipv6IfIcmpOutTimeExcds, # of output time exceeded errors |
| u_quad_t | ifs6_out_paramprob | ipv6IfIcmpOutParmProblems, # of output parameter problem errors |
| u_quad_t | ifs6_out_pkttoobig | ipv6IfIcmpOutPktTooBigs, # of output packet too big errors |
| u_quad_t | ifs6_out_echo | ipv6IfIcmpOutEchos, # of output echo requests |
| u_quad_t | ifs6_out_echoreply | ipv6IfIcmpOutEchoReplies, # of output echo replies |
| u_quad_t | ifs6_out_routersolicit | ipv6IfIcmpOutRouterSolicits, # of output router solicitations |
| u_quad_t | ifs6_out_routeradvert | ipv6IfIcmpOutRouterAdvertisements, # of output router advs. |
| u_quad_t | ifs6_out_neighborsolicit | ipv6IfIcmpOutNeighborSolicits, # of output neighbor solicitations |
| u_quad_t | ifs6_out_neighboradvert | ipv6IfIcmpOutNeighborAdvertisements, # of output neighbor advs. |
| u_quad_t | ifs6_out_redirect | ipv6IfIcmpOutRedirects, # of output redirects |
| u_quad_t | ifs6_out_mldquery | ipv6IfIcmpOutGroupMembQueries, # of output MLD queries |
| u_quad_t | ifs6_out_mldreport | ipv6IfIcmpOutGroupMembResponses, # of output MLD reports |
| u_quad_t | ifs6_out_mlddone | ipv6IfIcmpOutGroupMembReductions, # of output MLD done |
structin6_ifreq
| char[16] | ifr_name | ||||||||||||||||||||||||||||||||||
| unnamed union at Kernel/netinet6/in6_var.h:258:2 | ifr_ifru | ||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
structin6_aliasreq
| char[16] | ifra_name | |
| struct sockaddr_in6 | ifra_addr | |
| struct sockaddr_in6 | ifra_dstaddr | |
| struct sockaddr_in6 | ifra_prefixmask | |
| int | ifra_flags | |
| struct in6_addrlifetime | ifra_lifetime |
macroIN6_PREFIX_RR
#define IN6_PREFIX_RR 2
structin6_prflags
prefix related flags passed between kernel(NDP related part) and
user land command(ifconfig) and daemon(rtadvd).
| struct prf_ra | prf_ra | |
| u_char | prf_reserved1 | |
| u_short | prf_reserved2 | |
| struct prf_rr | prf_rr | want to put this on 4byte offset |
| u_char | prf_reserved3 | |
| u_short | prf_reserved4 |
structin6_prefixreq
| char[16] | ipr_name | |
| u_char | ipr_origin | |
| u_char | ipr_plen | |
| u_int32_t | ipr_vltime | |
| u_int32_t | ipr_pltime | |
| struct in6_prflags | ipr_flags | |
| struct sockaddr_in6 | ipr_prefix |
macroPR_ORIG_RA
#define PR_ORIG_RA 0
macroPR_ORIG_RR
#define PR_ORIG_RR 1
macroPR_ORIG_STATIC
#define PR_ORIG_STATIC 2
macroPR_ORIG_KERNEL
#define PR_ORIG_KERNEL 3
macroipr_raf_onlink
#define ipr_raf_onlink ipr_flags.prf_ra.onlink
macroipr_raf_auto
#define ipr_raf_auto ipr_flags.prf_ra.autonomous
macroipr_statef_onlink
#define ipr_statef_onlink ipr_flags.prf_state.onlink
macroipr_rrf_decrvalid
#define ipr_rrf_decrvalid ipr_flags.prf_rr.decrvalid
macroipr_rrf_decrprefd
#define ipr_rrf_decrprefd ipr_flags.prf_rr.decrprefd
structin6_rrenumreq
| char[16] | irr_name | |
| u_char | irr_origin | |
| u_char | irr_m_len | match len for matchprefix |
| u_char | irr_m_minlen | minlen for matching prefix |
| u_char | irr_m_maxlen | maxlen for matching prefix |
| u_char | irr_u_uselen | uselen for adding prefix |
| u_char | irr_u_keeplen | keeplen from matching prefix |
| struct irr_raflagmask | irr_raflagmask | |
| u_int32_t | irr_vltime | |
| u_int32_t | irr_pltime | |
| struct in6_prflags | irr_flags | |
| struct sockaddr_in6 | irr_matchprefix | |
| struct sockaddr_in6 | irr_useprefix |
macroirr_raf_mask_onlink
#define irr_raf_mask_onlink irr_raflagmask.onlink
macroirr_raf_mask_auto
#define irr_raf_mask_auto irr_raflagmask.autonomous
macroirr_raf_mask_reserved
#define irr_raf_mask_reserved irr_raflagmask.reserved
macroirr_raf_onlink
#define irr_raf_onlink irr_flags.prf_ra.onlink
macroirr_raf_auto
#define irr_raf_auto irr_flags.prf_ra.autonomous
macroirr_statef_onlink
#define irr_statef_onlink irr_flags.prf_state.onlink
macroirr_rrf
#define irr_rrf irr_flags.prf_rr
macroirr_rrf_decrvalid
#define irr_rrf_decrvalid irr_flags.prf_rr.decrvalid
macroirr_rrf_decrprefd
#define irr_rrf_decrprefd irr_flags.prf_rr.decrprefd
structkev_in6_addrlifetime
Event data, inet6 style.
| u_int32_t | ia6t_expire | |
| u_int32_t | ia6t_preferred | |
| u_int32_t | ia6t_vltime | |
| u_int32_t | ia6t_pltime |
structkev_in6_data
| struct net_event_data | link_data | |
| struct sockaddr_in6 | ia_addr | interface address |
| struct sockaddr_in6 | ia_net | network number of interface |
| struct sockaddr_in6 | ia_dstaddr | space for destination addr |
| struct sockaddr_in6 | ia_prefixmask | prefix mask |
| u_int32_t | ia_plen | prefix length |
| u_int32_t | ia6_flags | address flags from in6_ifaddr |
| struct kev_in6_addrlifetime | ia_lifetime | address life info |
| uint8_t[6] | ia_mac |
macroSIOCSIFADDR_IN6
#define SIOCSIFADDR_IN6 _IOW('i', 12, struct in6_ifreq)
macroSIOCGIFADDR_IN6
#define SIOCGIFADDR_IN6 _IOWR('i', 33, struct in6_ifreq)
macroSIOCSIFDSTADDR_IN6
SIOCSxxx ioctls should be unused (see comments in in6.c), but
we do not shift numbers for binary compatibility.
#define SIOCSIFDSTADDR_IN6 _IOW('i', 14, struct in6_ifreq)
macroSIOCSIFNETMASK_IN6
#define SIOCSIFNETMASK_IN6 _IOW('i', 22, struct in6_ifreq)
macroSIOCGIFDSTADDR_IN6
#define SIOCGIFDSTADDR_IN6 _IOWR('i', 34, struct in6_ifreq)
macroSIOCGIFNETMASK_IN6
#define SIOCGIFNETMASK_IN6 _IOWR('i', 37, struct in6_ifreq)
macroSIOCDIFADDR_IN6
#define SIOCDIFADDR_IN6 _IOW('i', 25, struct in6_ifreq)
macroSIOCAIFADDR_IN6
#define SIOCAIFADDR_IN6 _IOW('i', 26, struct in6_aliasreq)
macroSIOCSIFPHYADDR_IN6
#define SIOCSIFPHYADDR_IN6 _IOW('i', 62, struct in6_aliasreq)
macroSIOCGIFPSRCADDR_IN6
#define SIOCGIFPSRCADDR_IN6 _IOWR('i', 63, struct in6_ifreq)
macroSIOCGIFPDSTADDR_IN6
#define SIOCGIFPDSTADDR_IN6 _IOWR('i', 64, struct in6_ifreq)
macroSIOCGIFAFLAG_IN6
#define SIOCGIFAFLAG_IN6 _IOWR('i', 73, struct in6_ifreq)
macroOSIOCGIFINFO_IN6
#define OSIOCGIFINFO_IN6 _IOWR('i', 108, struct in6_ondireq)
macroSIOCGIFINFO_IN6
#define SIOCGIFINFO_IN6 _IOWR('i', 76, struct in6_ondireq)
macroSIOCSNDFLUSH_IN6
#define SIOCSNDFLUSH_IN6 _IOWR('i', 77, struct in6_ifreq)
macroSIOCGNBRINFO_IN6
#define SIOCGNBRINFO_IN6 _IOWR('i', 78, struct in6_nbrinfo)
macroSIOCSPFXFLUSH_IN6
#define SIOCSPFXFLUSH_IN6 _IOWR('i', 79, struct in6_ifreq)
macroSIOCSRTRFLUSH_IN6
#define SIOCSRTRFLUSH_IN6 _IOWR('i', 80, struct in6_ifreq)
macroSIOCGIFALIFETIME_IN6
#define SIOCGIFALIFETIME_IN6 _IOWR('i', 81, struct in6_ifreq)
macroSIOCSIFALIFETIME_IN6
#define SIOCSIFALIFETIME_IN6 _IOWR('i', 82, struct in6_ifreq)
macroSIOCGIFSTAT_IN6
#define SIOCGIFSTAT_IN6 _IOWR('i', 83, struct in6_ifreq)
macroSIOCGIFSTAT_ICMP6
#define SIOCGIFSTAT_ICMP6 _IOWR('i', 84, struct in6_ifreq)
macroSIOCSDEFIFACE_IN6
#define SIOCSDEFIFACE_IN6 _IOWR('i', 85, struct in6_ndifreq)
macroSIOCGDEFIFACE_IN6
#define SIOCGDEFIFACE_IN6 _IOWR('i', 86, struct in6_ndifreq)
macroSIOCSSCOPE6
N.B.: These 3 ioctls are deprecated and won't work
#define SIOCSSCOPE6 _IOW('i', 88, struct in6_ifreq)
macroSIOCGSCOPE6
#define SIOCGSCOPE6 _IOWR('i', 89, struct in6_ifreq)
macroSIOCGSCOPE6DEF
#define SIOCGSCOPE6DEF _IOWR('i', 90, struct in6_ifreq)
macroSIOCGETSGCNT_IN6
multicast routing, get s/g pkt cnt, pkt cnt per interface.
#define SIOCGETSGCNT_IN6 _IOWR('u', 28, struct sioc_sg_req6)
macroSIOCGETMIFCNT_IN6
#define SIOCGETMIFCNT_IN6 _IOWR('u', 107, struct sioc_mif_req6)
macroSIOCAADDRCTL_POLICY
#define SIOCAADDRCTL_POLICY _IOW('u', 108, struct in6_addrpolicy)
macroSIOCDADDRCTL_POLICY
#define SIOCDADDRCTL_POLICY _IOW('u', 109, struct in6_addrpolicy)
macroIN6_IFF_NODAD
don't perform DAD on this address (used only at first SIOC* call)
#define IN6_IFF_NODAD 0x0020
macroIN6_IFF_DADPROGRESS
Duplicate Address Detection [DAD] in progress.
#define IN6_IFF_DADPROGRESS (IN6_IFF_TENTATIVE|IN6_IFF_OPTIMISTIC)
macroIN6_IFF_NOTREADY
do not input/output
#define IN6_IFF_NOTREADY (IN6_IFF_TENTATIVE|IN6_IFF_DUPLICATED)
macroIN6_IFF_NOTMANUAL
SLAAC/DHCPv6 address
#define IN6_IFF_NOTMANUAL (IN6_IFF_AUTOCONF|IN6_IFF_DYNAMIC)
macroIN6_ARE_SCOPE_CMP
#define IN6_ARE_SCOPE_CMP(a, b) ((a) - (b))
macroIN6_ARE_SCOPE_EQUAL
#define IN6_ARE_SCOPE_EQUAL(a, b) ((a) == (b))