#include <netinet6/in6_var.h>

netinet6/in6_var.h Kernel.framework

includes: sys/appleapiopts.h, net/if_var.h, Kernel/net/net_kev.h, Kernel/sys/protosw.h, netinet/in.h, netinet6/scope6_var.h, sys/kern_event.h, Kernel/sys/protosw.h, net/ethernet.h
76 macros · 11 structs

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
size 24, align 8
time_tia6t_expirevalid lifetime expiration time
time_tia6t_preferredpreferred lifetime expiration time
u_int32_tia6t_vltimevalid lifetime
u_int32_tia6t_pltimeprefix lifetime

structin6_addrpolicy

control structure to manage address selection policy
size 72, align 8
struct sockaddr_in6addrprefix address
struct sockaddr_in6addrmaskprefix mask
intprecedprecedence
intlabelmatching label
u_quad_tusestatistics

structin6_ifstat

IPv6 interface statistics, as defined in RFC2465 Ipv6IfStatsEntry (p12).
size 200, align 8
u_quad_tifs6_in_receive# of total input datagram
u_quad_tifs6_in_hdrerr# of datagrams with invalid hdr
u_quad_tifs6_in_toobig# of datagrams exceeded MTU
u_quad_tifs6_in_noroute# of datagrams with no route
u_quad_tifs6_in_addrerr# of datagrams with invalid dst
u_quad_tifs6_in_protounknown# of datagrams with unknown proto
u_quad_tifs6_in_truncatedNOTE: increment on final dst if # of truncated datagrams
u_quad_tifs6_in_discard# of discarded datagrams
u_quad_tifs6_in_deliverNOTE: fragment timeout is not here # of datagrams delivered to ULP
u_quad_tifs6_out_forwardNOTE: increment on final dst if # of datagrams forwarded
u_quad_tifs6_out_requestNOTE: increment on outgoing if # of outgoing datagrams from ULP
u_quad_tifs6_out_discardNOTE: does not include forwrads # of discarded datagrams
u_quad_tifs6_out_fragok# of datagrams fragmented
u_quad_tifs6_out_fragfail# of datagrams failed on fragment
u_quad_tifs6_out_fragcreat# of fragment datagrams
u_quad_tifs6_reass_reqdNOTE: this is # after fragment # of incoming fragmented packets
u_quad_tifs6_reass_okNOTE: increment on final dst if # of reassembled packets
u_quad_tifs6_atmfrag_rcvdNOTE: this is # after reass NOTE: increment on final dst if # of atomic fragments received
u_quad_tifs6_reass_fail# of reass failures
u_quad_tifs6_in_mcastNOTE: may not be packet count NOTE: increment on final dst if # of inbound multicast datagrams
u_quad_tifs6_out_mcast# of outbound multicast datagrams
u_quad_tifs6_cantfoward_icmp6# of ICMPv6 packets received for unreachable dest
u_quad_tifs6_addr_expiry_cnt# of address expiry events (excluding privacy addresses)
u_quad_tifs6_pfx_expiry_cnt# of prefix expiry events
u_quad_tifs6_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...
size 272, align 8
u_quad_tifs6_in_msgInput statistics ipv6IfIcmpInMsgs, total # of input messages
u_quad_tifs6_in_erroripv6IfIcmpInErrors, # of input error messages
u_quad_tifs6_in_dstunreachipv6IfIcmpInDestUnreachs, # of input dest unreach errors
u_quad_tifs6_in_adminprohibipv6IfIcmpInAdminProhibs, # of input admin. prohibited errs
u_quad_tifs6_in_timeexceedipv6IfIcmpInTimeExcds, # of input time exceeded errors
u_quad_tifs6_in_paramprobipv6IfIcmpInParmProblems, # of input parameter problem errors
u_quad_tifs6_in_pkttoobigipv6IfIcmpInPktTooBigs, # of input packet too big errors
u_quad_tifs6_in_echoipv6IfIcmpInEchos, # of input echo requests
u_quad_tifs6_in_echoreplyipv6IfIcmpInEchoReplies, # of input echo replies
u_quad_tifs6_in_routersolicitipv6IfIcmpInRouterSolicits, # of input router solicitations
u_quad_tifs6_in_routeradvertipv6IfIcmpInRouterAdvertisements, # of input router advertisements
u_quad_tifs6_in_neighborsolicitipv6IfIcmpInNeighborSolicits, # of input neighbor solicitations
u_quad_tifs6_in_neighboradvertipv6IfIcmpInNeighborAdvertisements, # of input neighbor advs.
u_quad_tifs6_in_redirectipv6IfIcmpInRedirects, # of input redirects
u_quad_tifs6_in_mldqueryipv6IfIcmpInGroupMembQueries, # of input MLD queries
u_quad_tifs6_in_mldreportipv6IfIcmpInGroupMembResponses, # of input MLD reports
u_quad_tifs6_in_mlddoneipv6IfIcmpInGroupMembReductions, # of input MLD done
u_quad_tifs6_out_msgOutput statistics. We should solve unresolved routing problem... ipv6IfIcmpOutMsgs, total # of output messages
u_quad_tifs6_out_erroripv6IfIcmpOutErrors, # of output error messages
u_quad_tifs6_out_dstunreachipv6IfIcmpOutDestUnreachs, # of output dest unreach errors
u_quad_tifs6_out_adminprohibipv6IfIcmpOutAdminProhibs, # of output admin. prohibited errs
u_quad_tifs6_out_timeexceedipv6IfIcmpOutTimeExcds, # of output time exceeded errors
u_quad_tifs6_out_paramprobipv6IfIcmpOutParmProblems, # of output parameter problem errors
u_quad_tifs6_out_pkttoobigipv6IfIcmpOutPktTooBigs, # of output packet too big errors
u_quad_tifs6_out_echoipv6IfIcmpOutEchos, # of output echo requests
u_quad_tifs6_out_echoreplyipv6IfIcmpOutEchoReplies, # of output echo replies
u_quad_tifs6_out_routersolicitipv6IfIcmpOutRouterSolicits, # of output router solicitations
u_quad_tifs6_out_routeradvertipv6IfIcmpOutRouterAdvertisements, # of output router advs.
u_quad_tifs6_out_neighborsolicitipv6IfIcmpOutNeighborSolicits, # of output neighbor solicitations
u_quad_tifs6_out_neighboradvertipv6IfIcmpOutNeighborAdvertisements, # of output neighbor advs.
u_quad_tifs6_out_redirectipv6IfIcmpOutRedirects, # of output redirects
u_quad_tifs6_out_mldqueryipv6IfIcmpOutGroupMembQueries, # of output MLD queries
u_quad_tifs6_out_mldreportipv6IfIcmpOutGroupMembResponses, # of output MLD reports
u_quad_tifs6_out_mlddoneipv6IfIcmpOutGroupMembReductions, # of output MLD done

structin6_ifreq

size 288, align 8
char[16]ifr_name
unnamed union at Kernel/netinet6/in6_var.h:258:2ifr_ifru
struct sockaddr_in6ifru_addr
struct sockaddr_in6ifru_dstaddr
intifru_flags
intifru_flags6
intifru_metric
intifru_intval
caddr_tifru_data
struct in6_addrlifetimeifru_lifetime
struct in6_ifstatifru_stat
struct icmp6_ifstatifru_icmp6stat
u_int32_t[16]ifru_scope_id

structin6_aliasreq

size 128, align 8
char[16]ifra_name
struct sockaddr_in6ifra_addr
struct sockaddr_in6ifra_dstaddr
struct sockaddr_in6ifra_prefixmask
intifra_flags
struct in6_addrlifetimeifra_lifetime

macroIN6_PREFIX_ND

prefix type macro
#define IN6_PREFIX_ND 1

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).
size 8, align 2
struct prf_raprf_ra
u_charprf_reserved1
u_shortprf_reserved2
struct prf_rrprf_rrwant to put this on 4byte offset
u_charprf_reserved3
u_shortprf_reserved4

structin6_prefixreq

size 64, align 4
char[16]ipr_name
u_charipr_origin
u_charipr_plen
u_int32_tipr_vltime
u_int32_tipr_pltime
struct in6_prflagsipr_flags
struct sockaddr_in6ipr_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_auto

#define ipr_raf_auto ipr_flags.prf_ra.autonomous

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

size 96, align 4
char[16]irr_name
u_charirr_origin
u_charirr_m_lenmatch len for matchprefix
u_charirr_m_minlenminlen for matching prefix
u_charirr_m_maxlenmaxlen for matching prefix
u_charirr_u_uselenuselen for adding prefix
u_charirr_u_keeplenkeeplen from matching prefix
struct irr_raflagmaskirr_raflagmask
u_int32_tirr_vltime
u_int32_tirr_pltime
struct in6_prflagsirr_flags
struct sockaddr_in6irr_matchprefix
struct sockaddr_in6irr_useprefix

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_auto

#define irr_raf_auto irr_flags.prf_ra.autonomous

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.
size 16, align 4
u_int32_tia6t_expire
u_int32_tia6t_preferred
u_int32_tia6t_vltime
u_int32_tia6t_pltime

structkev_in6_data

size 168, align 4
struct net_event_datalink_data
struct sockaddr_in6ia_addrinterface address
struct sockaddr_in6ia_netnetwork number of interface
struct sockaddr_in6ia_dstaddrspace for destination addr
struct sockaddr_in6ia_prefixmaskprefix mask
u_int32_tia_plenprefix length
u_int32_tia6_flagsaddress flags from in6_ifaddr
struct kev_in6_addrlifetimeia_lifetimeaddress 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)

macroSIOCSIFINFO_FLAGS

#define SIOCSIFINFO_FLAGS _IOWR('i', 87, struct in6_ndireq)
XXX

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)

macroSIOCSIFPREFIX_IN6

#define SIOCSIFPREFIX_IN6 _IOW('i', 100, struct in6_prefixreq)
set

macroSIOCGIFPREFIX_IN6

#define SIOCGIFPREFIX_IN6 _IOWR('i', 101, struct in6_prefixreq)
get

macroSIOCDIFPREFIX_IN6

#define SIOCDIFPREFIX_IN6 _IOW('i', 102, struct in6_prefixreq)
del

macroSIOCAIFPREFIX_IN6

#define SIOCAIFPREFIX_IN6 _IOW('i', 103, struct in6_rrenumreq)
add

macroSIOCCIFPREFIX_IN6

change
#define SIOCCIFPREFIX_IN6 _IOW('i', 104, struct in6_rrenumreq)

macroSIOCSGIFPREFIX_IN6

set global
#define SIOCSGIFPREFIX_IN6 _IOW('i', 105, struct in6_rrenumreq)

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_ANYCAST

#define IN6_IFF_ANYCAST 0x0001
anycast address

macroIN6_IFF_TENTATIVE

#define IN6_IFF_TENTATIVE 0x0002
tentative address

macroIN6_IFF_DUPLICATED

#define IN6_IFF_DUPLICATED 0x0004
DAD detected duplicate

macroIN6_IFF_DETACHED

#define IN6_IFF_DETACHED 0x0008
XXX Obsolete. May be detached from the link

macroIN6_IFF_DEPRECATED

#define IN6_IFF_DEPRECATED 0x0010
deprecated address

macroIN6_IFF_NODAD

don't perform DAD on this address (used only at first SIOC* call)
#define IN6_IFF_NODAD 0x0020

macroIN6_IFF_AUTOCONF

#define IN6_IFF_AUTOCONF 0x0040
autoconfigurable address.

macroIN6_IFF_TEMPORARY

#define IN6_IFF_TEMPORARY 0x0080
temporary (anonymous) address.

macroIN6_IFF_DYNAMIC

#define IN6_IFF_DYNAMIC 0x0100
assigned by DHCPv6 service

macroIN6_IFF_OPTIMISTIC

#define IN6_IFF_OPTIMISTIC 0x0200
optimistic DAD, i.e. RFC 4429

macroIN6_IFF_SECURED

#define IN6_IFF_SECURED 0x0400
cryptographically generated

macroIN6_IFF_CLAT46

#define IN6_IFF_CLAT46 0x1000
Address reserved for CLAT46

macroIN6_IFF_NOPFX

#define IN6_IFF_NOPFX 0x8000
Depreciated. Don't use.

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))