IPv6¶
GNRC’s IPv6 implementation.
The IPv6 control thread understands messages of type
-
kernel_types.h::kernel_pid_t
gnrc_ipv6_pid
¶ The PID to the IPv6 thread.
Note
Use
gnrc/ipv6.h::gnrc_ipv6_init()
to initialize. Do not set by hand.
-
kernel_types.h::kernel_pid_t
gnrc_ipv6_init
(void)¶ Initialization of the IPv6 thread.
Return values
- The PID to the IPv6 thread, on success.
- a negative errno on error.
- -EOVERFLOW, if there are too many threads running already
- -EEXIST, if IPv6 was already initialized.
-
void
gnrc_ipv6_demux
(gnrc_netif_t * netif,include/net/gnrc/pkt.h::gnrc_pktsnip_t
* current,include/net/gnrc/pkt.h::gnrc_pktsnip_t
* pkt, uint8_t nh)¶ Demultiplexes a packet according to
nh
.
-
ipv6_hdr_t *
gnrc_ipv6_get_header
(include/net/gnrc/pkt.h::gnrc_pktsnip_t
* pkt)¶ Get the IPv6 header from a given list of
include/net/gnrc/pkt.h::gnrc_pktsnip_t
.This function may be used with e.g. a pointer to a (full) UDP datagram.
Parameters
pkt: The pointer to the first include/net/gnrc/pkt.h::gnrc_pktsnip_t
of the packet.Return values
- A pointer to the ipv6_hdr_t of the packet.
- NULL if the packet does not contain an IPv6 header.
-
GNRC_IPV6_STACK_SIZE
¶ Default stack size to use for the IPv6 thread.
1
(THREAD_STACKSIZE_DEFAULT)
-
GNRC_IPV6_PRIO
¶ Default priority for the IPv6 thread.
1
(THREAD_PRIORITY_MAIN - 3)
-
GNRC_IPV6_MSG_QUEUE_SIZE
¶ Default message queue size to use for the IPv6 thread.
1
(8U)
-
GNRC_IPV6_STATIC_LLADDR
¶ Add a static IPv6 link local address to any network interface.
This macro allows to specify a certain link local IPv6 address to be assigned to a network interface on startup, which might be handy for testing. Note: a) a interface will keep its auto-generated link local address, too b) the address is incremented by 1, if multiple interfaces are present
To use the macro just add it to
CFLAGS
in the application’s Makefile, like:1 2
IPV6_STATIC_LLADDR ?= '"fe80::cafe:cafe:cafe:1"' CFLAGS += -DGNRC_IPV6_STATIC_LLADDR=$(STATIC_IPV6_LLADDR)