#include <netinet6/nd6.h>
netinet6/nd6.h Kernel.framework
31 macros · 8 structs · 1 variable · 1 function
#define ND6_LLINFO_PURGE -3
#define ND6_LLINFO_NOSTATE -2
We don't need the WAITDELETE state any more, but we keep the definition
in a comment line instead of removing it. This is necessary to avoid
unintentionally reusing the value for another purpose, which might
affect backward compatibility with old applications.
(20000711 jinmei@kame.net)
#define ND6_LLINFO_WAITDELETE -1
#define ND6_LLINFO_INCOMPLETE 0
#define ND6_LLINFO_REACHABLE 1
#define ND6_LLINFO_STALE 2
#define ND6_LLINFO_DELAY 3
#define ND6_LLINFO_PROBE 4
size 56, align 4
| u_int32_t | linkmtu | LinkMTU |
| u_int32_t | maxmtu | Upper bound of LinkMTU |
| u_int32_t | basereachable | BaseReachableTime |
| u_int32_t | reachable | Reachable Time |
| u_int32_t | retrans | Retrans Timer |
| u_int32_t | flags | Flags |
| int | recalctm | BaseReacable re-calculation timer |
| u_int8_t | chlim | CurHopLimit |
| u_int8_t | receivedra | |
| u_int8_t[8] | randomseed0 | the following 3 members are for privacy extension for addrconf upper 64 bits of SHA256 digest |
| u_int8_t[8] | randomseed1 | lower 64 bits (usually the EUI64 IFID) |
| u_int8_t[8] | randomid | current random ID |
#define ND6_IFF_PROXY_PREFIXES 0x20
#define ND6_IFF_IGNORE_NA 0x40
#define ND6_IFF_REPLICATED 0x100
sleep proxy registered
#define ND6_IFF_DAD 0x200
Perform DAD on the interface
#define ND6_DAD_ENHANCED_DEFAULT 1
size 56, align 8
| char[16] | ifname | if name, e.g. "en0" |
| struct in6_addr | addr | IPv6 address of the neighbor |
| long | asked | # of queries already sent for this addr |
| int | isrouter | if it acts as a router |
| int | state | reachability state |
| int | expire | lifetime for NDP state transition |
valid values for stateflags
#define NDDRF_INSTALLED 0x01
installed in the routing table
#define NDDRF_IFSCOPE 0x02
installed as a scoped route
#define NDDRF_STATIC 0x04
for internal use only
#define NDDRF_MAPPED 0x08
Default router addr is mapped to a different one for routing
#define NDDRF_INELIGIBLE 0x10
Default router entry is ineligible for default router selection
#define NDDRF_LOCAL 0x20
Router's address is locally hosted as well
size 48, align 4
| char[16] | ifname | |
| unnamed struct at Kernel/netinet6/nd6.h:163:2 | ndi | |
| | u_int32_t | linkmtu | LinkMTU | | u_int32_t | maxmtu | Upper bound of LinkMTU | | u_int32_t | basereachable | BaseReachableTime | | u_int32_t | reachable | Reachable Time | | u_int32_t | retrans | Retrans Timer | | u_int32_t | flags | Flags | | int | recalctm | BaseReacable re-calculation timer | | u_int8_t | chlim | CurHopLimit | | u_int8_t | receivedra | Number of routers learned on the interface | | u_int8_t | collision_count | The current collision count value
being used for secure address generation. |
|
#define MAX_RTR_SOLICITATION_DELAY 1
1sec
#define RTR_SOLICITATION_INTERVAL 4
4sec
Prefix status
#define NDPRF_ONLINK 0x1
#define NDPRF_DETACHED 0x2
#define NDPRF_STATIC 0x100
#define NDPRF_IFSCOPE 0x1000
#define NDPRF_PRPROXY 0x2000
protocol constants
#define MAX_RTR_SOLICITATION_DELAY 1
1sec
#define RTR_SOLICITATION_INTERVAL 4
4sec
#define MAX_RTR_SOLICITATIONS 3
#define ND6_INFINITE_LIFETIME 0xffffffff
#define ND6_MAX_LIFETIME 0x7fffffff
extern errno_t nd6_lookup_ipv6(
ifnet_t interface,
const struct sockaddr_in6 *ip6_dest,
struct sockaddr_dl *ll_dest,
size_t ll_dest_len,
route_t hint,
mbuf_t packet
)
@function nd6_lookup_ipv6
@discussion This function will check the routing table for a cached
neighbor discovery entry or trigger an neighbor discovery query
to resolve the IPv6 address to a link-layer address.
nd entries are stored in the routing table. This function will
lookup the IPv6 destination in the routing table. If the
destination requires forwarding to a gateway, the route of the
gateway will be looked up. The route entry is inspected to
determine if the link layer destination address is known. If
unknown, neighbor discovery will be used to resolve the entry.
@param interface The interface the packet is being sent on.
@param ip6_dest The IPv6 destination of the packet.
@param ll_dest On output, the link-layer destination.
@param ll_dest_len The length of the buffer for ll_dest.
@param hint Any routing hint passed down from the protocol.
@param packet The packet being transmitted.
@result May return an error such as
EHOSTDOWN or
ENETUNREACH. If
this function returns
EJUSTRETURN, the packet has been queued
and will be sent when the address is resolved. If any other
value is returned, the caller is responsible for disposing of
the packet.