ext.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Martine Lenders <mlenders@inf.fu-berlin.de>
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser General
5  * Public License v2.1. See the file LICENSE in the top level directory for
6  * more details.
7  */
8 
22 #ifndef NET_GNRC_IPV6_EXT_H
23 #define NET_GNRC_IPV6_EXT_H
24 
25 #include <stdbool.h>
26 #include <stdint.h>
27 #include <stdlib.h>
28 
29 #include "net/gnrc/pkt.h"
30 #include "net/ipv6/ext.h"
31 #include "timex.h"
32 
33 #ifdef MODULE_GNRC_IPV6_EXT_RH
34 #include "net/gnrc/ipv6/ext/rh.h"
35 #endif
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
54 #ifndef CONFIG_GNRC_IPV6_EXT_FRAG_SEND_SIZE
55 #define CONFIG_GNRC_IPV6_EXT_FRAG_SEND_SIZE (1U)
56 #endif
57 
65 #ifndef CONFIG_GNRC_IPV6_EXT_FRAG_RBUF_SIZE
66 #define CONFIG_GNRC_IPV6_EXT_FRAG_RBUF_SIZE (1U)
67 #endif
68 
77 #ifndef CONFIG_GNRC_IPV6_EXT_FRAG_LIMITS_POOL_SIZE
78 #define CONFIG_GNRC_IPV6_EXT_FRAG_LIMITS_POOL_SIZE (CONFIG_GNRC_IPV6_EXT_FRAG_RBUF_SIZE * 2U)
79 #endif
80 
86 #ifndef CONFIG_GNRC_IPV6_EXT_FRAG_RBUF_TIMEOUT_US
87 #define CONFIG_GNRC_IPV6_EXT_FRAG_RBUF_TIMEOUT_US (10U * US_PER_SEC)
88 #endif
89 
99 #ifdef DOXYGEN
100 #define CONFIG_GNRC_IPV6_EXT_FRAG_RBUF_DO_NOT_OVERRIDE
101 #endif
102 
118  uint8_t nh, size_t size);
119 
120 #if defined(MODULE_GNRC_IPV6_EXT) || defined(DOXYGEN)
153  uint8_t *protnum);
154 
184  uint8_t *protnum);
185 #else /* defined(MODULE_GNRC_IPV6_EXT) || defined(DOXYGEN) */
186 /* NOPs to make the usage code more readable */
187 #define gnrc_ipv6_ext_process_hopopt(pkt, protnum) (pkt)
188 #define gnrc_ipv6_ext_process_all(pkt, protnum) (pkt)
189 #endif /* defined(MODULE_GNRC_IPV6_EXT) || defined(DOXYGEN) */
190 
191 #ifdef __cplusplus
192 }
193 #endif
194 
195 #endif /* NET_GNRC_IPV6_EXT_H */
GNRC routing extension header definitions.
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.
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.
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 extension header definitions.
General definitions for network packets and their helper functions.
Type to represent parts (either headers or payload) of a packet, called snips.
Definition: pkt.h:108
Utility library for comparing and computing timestamps.