Implementation of IPv6 extension headers. More...
Implementation of IPv6 extension headers.
Modules | |
| GNRC IPv6 extension header compile configurations | |
| Support for IPv6 fragmentation extension | |
| GNRC implementation of IPv6 fragmentation extension. | |
| Support for IPv6 option extension headers | |
| GNRC implementation of IPv6 hop-by-hop and destination option header extension. | |
| Support for IPv6 routing header extension | |
| GNRC implementation of IPv6 routing header extension. | |
Files | |
| file | ext.h |
| Definititions for IPv6 extension headers. | |
Functions | |
| gnrc_pktsnip_t * | gnrc_ipv6_ext_build (gnrc_pktsnip_t *ipv6, gnrc_pktsnip_t *next, uint8_t nh, size_t size) |
| Builds an extension header for sending. More... | |
| gnrc_pktsnip_t * | gnrc_ipv6_ext_process_hopopt (gnrc_pktsnip_t *pkt, uint8_t *protnum) |
Processes a packet's payload as hop-by-hop option if protnum is pointing to a value equal to PROTNUM_IPV6_EXT_HOPOPT. More... | |
| gnrc_pktsnip_t * | gnrc_ipv6_ext_process_all (gnrc_pktsnip_t *pkt, uint8_t *protnum) |
| Processes a packet's extension headers after a potential initial hop-by-hop header. More... | |
| gnrc_pktsnip_t* gnrc_ipv6_ext_build | ( | gnrc_pktsnip_t * | ipv6, |
| gnrc_pktsnip_t * | next, | ||
| uint8_t | nh, | ||
| size_t | size | ||
| ) |
Builds an extension header for sending.
| [in] | ipv6 | The IPv6 header. Can be NULL. |
| [in] | next | The next header. Must be a successor to ipv6 if it is not NULL. |
| [in] | nh | Protocol Numbers of the next header. |
| [in] | size | Size of the extension header. |
| gnrc_pktsnip_t* gnrc_ipv6_ext_process_all | ( | gnrc_pktsnip_t * | pkt, |
| uint8_t * | protnum | ||
| ) |
Processes a packet's extension headers after a potential initial hop-by-hop header.
pkt. If a hop-by-hop option is found in gnrc_pktsnip_t::data of pkt, the function will return an error.| [in] | pkt | An IPv6 packet in receive order. |
| [in,out] | protnum | In: The Protocol Numbers of gnrc_pktsnip_t::data of pkt (i.e. the first extension header to be processed). Out: The Protocol Numbers of header in gnrc_pktsnip_t::data of pkt. The extension headers are now marked, so their data can be found in gnrc_pktsnip_t::next of pkt and the following. If the return value is NULL, the value of protnum is undefined. |
pkt with all extension headers marked until the first non-extension header. pkt is released with EINVAL in that case. | gnrc_pktsnip_t* gnrc_ipv6_ext_process_hopopt | ( | gnrc_pktsnip_t * | pkt, |
| uint8_t * | protnum | ||
| ) |
Processes a packet's payload as hop-by-hop option if protnum is pointing to a value equal to PROTNUM_IPV6_EXT_HOPOPT.
pkt.| [in] | pkt | An IPv6 packet in receive order. It assumed that gnrc_pktsnip_t::data points to a hop-by-hop option when protnum points to value equal to PROTNUM_IPV6_EXT_HOPOPT. |
| [in,out] | protnum | In: The Protocol Numbers of gnrc_pktsnip_t::data of pkt. Out: If protnum was PROTNUM_IPV6_EXT_HOPOPT on in and the return value is not NULL it points to the value of the next header field of the processed hop-by-hop option header. Since the hop-by-hop option header is now marked, gnrc_pktsnip_t::data of pkt will then be identified by protnum. If protnum was PROTNUM_IPV6_EXT_HOPOPT on in and the return value is NULL the value protnum is pointing to is undefined. If protnum unequal to PROTNUM_IPV6_EXT_HOPOPT on in the value protnum is pointing to remains unchanged. |
pkt with the hop-by-hop option marked on success. pkt is released with EINVAL in that case.