Merge pull request #13123 from PeterKietzmann/pr_kconf_6lo

Kconfig: Expose gnrc/sixlowpan configurations
This commit is contained in:
Leandro Lanzieri 2020-01-20 17:41:52 +01:00 committed by GitHub
commit 881f17a816
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 222 additions and 88 deletions

View File

@ -45,8 +45,8 @@ extern "C" {
/** /**
* @brief Default message queue size to use for the 6LoWPAN thread. * @brief Default message queue size to use for the 6LoWPAN thread.
*/ */
#ifndef GNRC_SIXLOWPAN_MSG_QUEUE_SIZE #ifndef CONFIG_GNRC_SIXLOWPAN_MSG_QUEUE_SIZE
#define GNRC_SIXLOWPAN_MSG_QUEUE_SIZE (8U) #define CONFIG_GNRC_SIXLOWPAN_MSG_QUEUE_SIZE (8U)
#endif #endif
/** /**
@ -58,8 +58,8 @@ extern "C" {
* @note Only applicable with * @note Only applicable with
* [gnrc_sixlowpan_frag_fb](@ref net_gnrc_sixlowpan_frag_fb) module * [gnrc_sixlowpan_frag_fb](@ref net_gnrc_sixlowpan_frag_fb) module
*/ */
#ifndef GNRC_SIXLOWPAN_FRAG_FB_SIZE #ifndef CONFIG_GNRC_SIXLOWPAN_FRAG_FB_SIZE
#define GNRC_SIXLOWPAN_FRAG_FB_SIZE (1U) #define CONFIG_GNRC_SIXLOWPAN_FRAG_FB_SIZE (1U)
#endif #endif
/** /**
@ -68,8 +68,8 @@ extern "C" {
* @note Only applicable with * @note Only applicable with
* [gnrc_sixlowpan_frag_rb](@ref net_gnrc_sixlowpan_frag_rb) module * [gnrc_sixlowpan_frag_rb](@ref net_gnrc_sixlowpan_frag_rb) module
*/ */
#ifndef GNRC_SIXLOWPAN_FRAG_RBUF_SIZE #ifndef CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE
#define GNRC_SIXLOWPAN_FRAG_RBUF_SIZE (4U) #define CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE (4U)
#endif #endif
/** /**
@ -78,8 +78,8 @@ extern "C" {
* @note Only applicable with * @note Only applicable with
* [gnrc_sixlowpan_frag_rb](@ref net_gnrc_sixlowpan_frag_rb) module * [gnrc_sixlowpan_frag_rb](@ref net_gnrc_sixlowpan_frag_rb) module
*/ */
#ifndef GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US #ifndef CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US
#define GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US (3U * US_PER_SEC) #define CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US (3U * US_PER_SEC)
#endif #endif
/** /**
@ -91,11 +91,11 @@ extern "C" {
* When not set, it will cause the reassembly buffer to override the oldest entry * When not set, it will cause the reassembly buffer to override the oldest entry
* if a new entry has to be created and the reassembly buffer is full, no matter what. * if a new entry has to be created and the reassembly buffer is full, no matter what.
* When set to 1, only incomplete entries that are older than * When set to 1, only incomplete entries that are older than
* @ref GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US will be overwritten (they will still timeout * @ref CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US will be overwritten (they will still
* normally). * timeout normally).
*/ */
#ifdef DOXYGEN #ifdef DOXYGEN
#define GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE #define CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE
#endif #endif
/** /**
@ -106,19 +106,19 @@ extern "C" {
* *
* When set to a non-zero value this will cause the reassembly buffer to * When set to a non-zero value this will cause the reassembly buffer to
* override the oldest entry no matter what. When set to zero only the oldest * override the oldest entry no matter what. When set to zero only the oldest
* entry that is older than @ref GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US will be * entry that is older than @ref CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US will be
* overwritten (they will still timeout normally if reassembly buffer is not * overwritten (they will still timeout normally if reassembly buffer is not
* full). * full).
* *
* @deprecated Use inverse @ref GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE instead. * @deprecated Use inverse @ref CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE instead.
* Will be removed after 2020.10 release. * Will be removed after 2020.10 release.
*/ */
#ifndef GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE #ifndef GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE
#if IS_ACTIVE(GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE) #if IS_ACTIVE(CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE)
#define GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE (0) #define GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE (0)
#else /* GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE */ #else /* CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE */
#define GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE (1) #define GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE (1)
#endif /* GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE */ #endif /* CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE */
#endif /* GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE */ #endif /* GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE */
/** /**
@ -132,8 +132,8 @@ extern "C" {
* immediately. Use this value to prevent re-creation of a reassembly buffer * immediately. Use this value to prevent re-creation of a reassembly buffer
* entry on late arriving link-layer duplicates. * entry on late arriving link-layer duplicates.
*/ */
#ifndef GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER #ifndef CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER
#define GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER (0U) #define CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER (0U)
#endif #endif
/** /**
@ -150,8 +150,8 @@ extern "C" {
* provides capabilities to build the address registration option as a * provides capabilities to build the address registration option as a
* @ref gnrc_pktsnip_t * @ref gnrc_pktsnip_t
*/ */
#ifndef GNRC_SIXLOWPAN_ND_AR_LTIME #ifndef CONFIG_GNRC_SIXLOWPAN_ND_AR_LTIME
#define GNRC_SIXLOWPAN_ND_AR_LTIME (15U) #define CONFIG_GNRC_SIXLOWPAN_ND_AR_LTIME (15U)
#endif #endif
/** /**
@ -162,16 +162,11 @@ extern "C" {
* @note Only applicable with * @note Only applicable with
* [gnrc_sixlowpan_frag_vrb](@ref net_gnrc_sixlowpan_frag_vrb) module, * [gnrc_sixlowpan_frag_vrb](@ref net_gnrc_sixlowpan_frag_vrb) module,
* but has also a direct influence on the number of available * but has also a direct influence on the number of available
* gnrc_sixlowpan_frag_rb_int_t entries (even when * gnrc_sixlowpan_frag_rb_int_t entries.
* `gnrc_sixlowpan_frag_vrb` is not compiled in).
*/ */
#ifndef GNRC_SIXLOWPAN_FRAG_VRB_SIZE #ifndef CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_SIZE
#if defined(MODULE_GNRC_SIXLOWPAN_FRAG_VRB) || defined(DOXYGEN) #define CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_SIZE (16U)
#define GNRC_SIXLOWPAN_FRAG_VRB_SIZE (16U) #endif /* CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_SIZE */
#else /* defined(MODULE_GNRC_SIXLOWPAN_FRAG_VRB) || defined(DOXYGEN) */
#define GNRC_SIXLOWPAN_FRAG_VRB_SIZE (0U)
#endif /* defined(MODULE_GNRC_SIXLOWPAN_FRAG_VRB) || defined(DOXYGEN) */
#endif /* GNRC_SIXLOWPAN_FRAG_VRB_SIZE */
/** /**
* @brief Timeout for a VRB entry in microseconds * @brief Timeout for a VRB entry in microseconds
@ -181,9 +176,9 @@ extern "C" {
* @note Only applicable with * @note Only applicable with
* [gnrc_sixlowpan_frag_vrb](@ref net_gnrc_sixlowpan_frag_vrb) module. * [gnrc_sixlowpan_frag_vrb](@ref net_gnrc_sixlowpan_frag_vrb) module.
*/ */
#ifndef GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US #ifndef CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US
#define GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US (GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US) #define CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US (CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US)
#endif /* GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US */ #endif /* CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US */
/** /**
* @name Selective fragment recovery configuration * @name Selective fragment recovery configuration

View File

@ -27,6 +27,7 @@
#include "kernel_types.h" #include "kernel_types.h"
#include "net/gnrc/pkt.h" #include "net/gnrc/pkt.h"
#include "net/gnrc/sixlowpan/config.h"
#include "net/ipv6/addr.h" #include "net/ipv6/addr.h"
#include "net/ndp.h" #include "net/ndp.h"
#include "net/sixlowpan/nd.h" #include "net/sixlowpan/nd.h"
@ -36,20 +37,6 @@
extern "C" { extern "C" {
#endif #endif
#ifndef GNRC_SIXLOWPAN_ND_AR_LTIME
/**
* @brief Registration lifetime in minutes for the address registration option
*
* This value should be adapted to the devices power-lifecycle so that it is greater than the
* time the device spends sleeping.
*
* @see <a href="https://tools.ietf.org/html/rfc6775#section-5.8.1">
* RFC 6775, section 5.8.1
* </a>
*/
#define GNRC_SIXLOWPAN_ND_AR_LTIME (15U)
#endif
/** /**
* @brief Builds the address registration option. * @brief Builds the address registration option.
* *

View File

@ -12,5 +12,6 @@ rsource "netif/Kconfig"
rsource "network_layer/ipv6/Kconfig" rsource "network_layer/ipv6/Kconfig"
rsource "network_layer/ipv6/blacklist/Kconfig" rsource "network_layer/ipv6/blacklist/Kconfig"
rsource "network_layer/ipv6/whitelist/Kconfig" rsource "network_layer/ipv6/whitelist/Kconfig"
rsource "network_layer/sixlowpan/Kconfig"
endmenu # GNRC Network Stack endmenu # GNRC Network Stack

View File

@ -50,7 +50,7 @@ void _snd_ns(const ipv6_addr_t *tgt, gnrc_netif_t *netif,
DEBUG("nib: can't get EUI-64 of the interface for ARO\n"); DEBUG("nib: can't get EUI-64 of the interface for ARO\n");
return; return;
} }
ext_opt = gnrc_sixlowpan_nd_opt_ar_build(0, GNRC_SIXLOWPAN_ND_AR_LTIME, ext_opt = gnrc_sixlowpan_nd_opt_ar_build(0, CONFIG_GNRC_SIXLOWPAN_ND_AR_LTIME,
&eui64, NULL); &eui64, NULL);
if (ext_opt == NULL) { if (ext_opt == NULL) {
DEBUG("nib: error allocating ARO.\n"); DEBUG("nib: error allocating ARO.\n");

View File

@ -0,0 +1,23 @@
# Copyright (c) 2020 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
menuconfig KCONFIG_MODULE_GNRC_SIXLOWPAN
bool "Configure GNRC 6LoWPAN"
depends on MODULE_GNRC_SIXLOWPAN
help
Configure GNRC 6LoWPAN module using Kconfig.
if KCONFIG_MODULE_GNRC_SIXLOWPAN
rsource "frag/Kconfig"
rsource "nd/Kconfig"
config GNRC_SIXLOWPAN_MSG_QUEUE_SIZE
int "Message queue size for the 6LoWPAN thread"
default 8
endif # KCONFIG_MODULE_GNRC_SIXLOWPAN

View File

@ -0,0 +1,14 @@
# Copyright (c) 2020 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
if MODULE_GNRC_SIXLOWPAN_FRAG
rsource "fb/Kconfig"
rsource "rb/Kconfig"
rsource "vrb/Kconfig"
endif # MODULE_GNRC_SIXLOWPAN_FRAG

View File

@ -0,0 +1,22 @@
# Copyright (c) 2020 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
menuconfig KCONFIG_MODULE_GNRC_SIXLOWPAN_FRAG_FB
bool "Configure GNRC 6LoWPAN Fragmentation buffer"
depends on MODULE_GNRC_SIXLOWPAN_FRAG_FB
help
Configure GNRC 6LoWPAN Fragmentation buffer using Kconfig.
if KCONFIG_MODULE_GNRC_SIXLOWPAN_FRAG_FB
config GNRC_SIXLOWPAN_FRAG_FB_SIZE
int "Number of datagrams that can be fragmented simultaneously"
default 1
help
This determines the number of @ref gnrc_sixlowpan_frag_fb_t instances
available.
endif # KCONFIG_MODULE_GNRC_SIXLOWPAN_FRAG_FB

View File

@ -22,7 +22,7 @@
#include "net/gnrc/sixlowpan/frag/stats.h" #include "net/gnrc/sixlowpan/frag/stats.h"
#endif #endif
static gnrc_sixlowpan_frag_fb_t _fbs[GNRC_SIXLOWPAN_FRAG_FB_SIZE]; static gnrc_sixlowpan_frag_fb_t _fbs[CONFIG_GNRC_SIXLOWPAN_FRAG_FB_SIZE];
static uint16_t _current_tag; static uint16_t _current_tag;
#ifdef TEST_SUITES #ifdef TEST_SUITES
@ -35,7 +35,7 @@ void gnrc_sixlowpan_frag_fb_reset(void)
gnrc_sixlowpan_frag_fb_t *gnrc_sixlowpan_frag_fb_get(void) gnrc_sixlowpan_frag_fb_t *gnrc_sixlowpan_frag_fb_get(void)
{ {
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_FB_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_FB_SIZE; i++) {
if (_fbs[i].pkt == NULL) { if (_fbs[i].pkt == NULL) {
return &_fbs[i]; return &_fbs[i];
} }
@ -48,7 +48,7 @@ gnrc_sixlowpan_frag_fb_t *gnrc_sixlowpan_frag_fb_get(void)
gnrc_sixlowpan_frag_fb_t *gnrc_sixlowpan_frag_fb_get_by_tag(uint16_t tag) gnrc_sixlowpan_frag_fb_t *gnrc_sixlowpan_frag_fb_get_by_tag(uint16_t tag)
{ {
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_FB_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_FB_SIZE; i++) {
if ((_fbs[i].pkt != NULL) && (_fbs[i].tag == tag)) { if ((_fbs[i].pkt != NULL) && (_fbs[i].tag == tag)) {
return &_fbs[i]; return &_fbs[i];
} }

View File

@ -0,0 +1,42 @@
# Copyright (c) 2020 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
menuconfig KCONFIG_MODULE_GNRC_SIXLOWPAN_FRAG_RB
bool "Configure GNRC 6LoWPAN Reassembly buffer"
depends on MODULE_GNRC_SIXLOWPAN_FRAG_RB
help
Configure GNRC 6LoWPAN Reassembly buffer using Kconfig.
if KCONFIG_MODULE_GNRC_SIXLOWPAN_FRAG_RB
config GNRC_SIXLOWPAN_FRAG_RBUF_SIZE
int "Size of the reassembly buffer"
default 4
config GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US
int "Timeout for reassembly buffer entries in microseconds"
default 3000000
config GNRC_SIXLOWPAN_FRAG_RBUF_DO_NOT_OVERRIDE
bool "Keep all but oldest fragment when reassembly buffer is full"
help
When not set, it will cause the reassembly buffer to
override the oldest entry no matter what. When set, only the oldest
entry that is older than @ref CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US
will be overwritten (they will still timeout normally if reassembly
buffer is not full).
config GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER
int "Deletion timer for reassembly buffer entries in microseconds"
default 0
help
Time to pass between completion of a datagram and the deletion
of its reassembly buffer entry. If this value is 0, the entry
is dropped immediately. Use this value to prevent re-creation
of a reassembly buffer entry on late arriving link-layer
uplicates.
endif # KCONFIG_MODULE_GNRC_SIXLOWPAN_FRAG_RB

View File

@ -49,12 +49,12 @@
/* same as ((int) ceil((double) N / D)) */ /* same as ((int) ceil((double) N / D)) */
#define DIV_CEIL(N, D) (((N) + (D) - 1) / (D)) #define DIV_CEIL(N, D) (((N) + (D) - 1) / (D))
#define RBUF_INT_SIZE (DIV_CEIL(IPV6_MIN_MTU, GNRC_SIXLOWPAN_FRAG_SIZE) * \ #define RBUF_INT_SIZE (DIV_CEIL(IPV6_MIN_MTU, GNRC_SIXLOWPAN_FRAG_SIZE) * \
GNRC_SIXLOWPAN_FRAG_RBUF_SIZE) CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE)
#endif #endif
static gnrc_sixlowpan_frag_rb_int_t rbuf_int[RBUF_INT_SIZE]; static gnrc_sixlowpan_frag_rb_int_t rbuf_int[RBUF_INT_SIZE];
static gnrc_sixlowpan_frag_rb_t rbuf[GNRC_SIXLOWPAN_FRAG_RBUF_SIZE]; static gnrc_sixlowpan_frag_rb_t rbuf[CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE];
static char l2addr_str[3 * IEEE802154_LONG_ADDRESS_LEN]; static char l2addr_str[3 * IEEE802154_LONG_ADDRESS_LEN];
@ -164,7 +164,7 @@ static gnrc_sixlowpan_frag_rb_t *_rbuf_get_by_tag(const gnrc_netif_hdr_t *netif_
const uint8_t src_len = netif_hdr->src_l2addr_len; const uint8_t src_len = netif_hdr->src_l2addr_len;
const uint8_t dst_len = netif_hdr->dst_l2addr_len; const uint8_t dst_len = netif_hdr->dst_l2addr_len;
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
gnrc_sixlowpan_frag_rb_t *e = &rbuf[i]; gnrc_sixlowpan_frag_rb_t *e = &rbuf[i];
if ((e->pkt != NULL) && (e->super.tag == tag) && if ((e->pkt != NULL) && (e->super.tag == tag) &&
@ -364,7 +364,7 @@ static bool _rbuf_update_ints(gnrc_sixlowpan_frag_rb_base_t *entry,
static void _gc_pkt(gnrc_sixlowpan_frag_rb_t *rbuf) static void _gc_pkt(gnrc_sixlowpan_frag_rb_t *rbuf)
{ {
#if GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER > 0 #if CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER > 0
if (rbuf->super.current_size == 0) { if (rbuf->super.current_size == 0) {
/* packet is scheduled for deletion, but was complete, i.e. pkt is /* packet is scheduled for deletion, but was complete, i.e. pkt is
* already handed up to other layer, i.e. no need to release */ * already handed up to other layer, i.e. no need to release */
@ -379,11 +379,11 @@ void gnrc_sixlowpan_frag_rb_gc(void)
uint32_t now_usec = xtimer_now_usec(); uint32_t now_usec = xtimer_now_usec();
unsigned int i; unsigned int i;
for (i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
/* since pkt occupies pktbuf, aggressivly collect garbage */ /* since pkt occupies pktbuf, aggressivly collect garbage */
if (!gnrc_sixlowpan_frag_rb_entry_empty(&rbuf[i]) && if (!gnrc_sixlowpan_frag_rb_entry_empty(&rbuf[i]) &&
((now_usec - rbuf[i].super.arrival) > ((now_usec - rbuf[i].super.arrival) >
GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US)) { CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US)) {
DEBUG("6lo rfrag: entry (%s, ", DEBUG("6lo rfrag: entry (%s, ",
gnrc_netif_addr_to_str(rbuf[i].super.src, gnrc_netif_addr_to_str(rbuf[i].super.src,
rbuf[i].super.src_len, rbuf[i].super.src_len,
@ -405,7 +405,7 @@ void gnrc_sixlowpan_frag_rb_gc(void)
static inline void _set_rbuf_timeout(void) static inline void _set_rbuf_timeout(void)
{ {
xtimer_set_msg(&_gc_timer, GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US, xtimer_set_msg(&_gc_timer, CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US,
&_gc_timer_msg, sched_active_pid); &_gc_timer_msg, sched_active_pid);
} }
@ -417,7 +417,7 @@ static int _rbuf_get(const void *src, size_t src_len,
gnrc_sixlowpan_frag_rb_t *res = NULL, *oldest = NULL; gnrc_sixlowpan_frag_rb_t *res = NULL, *oldest = NULL;
uint32_t now_usec = xtimer_now_usec(); uint32_t now_usec = xtimer_now_usec();
for (unsigned int i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (unsigned int i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
/* check first if entry already available */ /* check first if entry already available */
if ((rbuf[i].pkt != NULL) && (rbuf[i].super.datagram_size == size) && if ((rbuf[i].pkt != NULL) && (rbuf[i].super.datagram_size == size) &&
(rbuf[i].super.tag == tag) && (rbuf[i].super.src_len == src_len) && (rbuf[i].super.tag == tag) && (rbuf[i].super.src_len == src_len) &&
@ -433,7 +433,7 @@ static int _rbuf_get(const void *src, size_t src_len,
rbuf[i].super.dst_len, rbuf[i].super.dst_len,
l2addr_str), l2addr_str),
(unsigned)rbuf[i].super.datagram_size, rbuf[i].super.tag); (unsigned)rbuf[i].super.datagram_size, rbuf[i].super.tag);
#if GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER > 0 #if CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER > 0
if (rbuf[i].super.current_size == 0) { if (rbuf[i].super.current_size == 0) {
/* ensure that only empty reassembly buffer entries and entries /* ensure that only empty reassembly buffer entries and entries
* scheduled for deletion have `current_size == 0` */ * scheduled for deletion have `current_size == 0` */
@ -467,7 +467,7 @@ static int _rbuf_get(const void *src, size_t src_len,
assert(!gnrc_sixlowpan_frag_rb_entry_empty(oldest)); assert(!gnrc_sixlowpan_frag_rb_entry_empty(oldest));
if (GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE || if (GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE ||
((now_usec - oldest->super.arrival) > ((now_usec - oldest->super.arrival) >
GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US)) { CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US)) {
DEBUG("6lo rfrag: reassembly buffer full, remove oldest entry\n"); DEBUG("6lo rfrag: reassembly buffer full, remove oldest entry\n");
gnrc_pktbuf_release(oldest->pkt); gnrc_pktbuf_release(oldest->pkt);
gnrc_sixlowpan_frag_rb_remove(oldest); gnrc_sixlowpan_frag_rb_remove(oldest);
@ -533,7 +533,7 @@ void gnrc_sixlowpan_frag_rb_reset(void)
{ {
xtimer_remove(&_gc_timer); xtimer_remove(&_gc_timer);
memset(rbuf_int, 0, sizeof(rbuf_int)); memset(rbuf_int, 0, sizeof(rbuf_int));
for (unsigned int i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (unsigned int i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
if ((rbuf[i].pkt != NULL) && if ((rbuf[i].pkt != NULL) &&
(rbuf[i].pkt->users > 0)) { (rbuf[i].pkt->users > 0)) {
_gc_pkt(&rbuf[i]); _gc_pkt(&rbuf[i]);
@ -563,21 +563,21 @@ void gnrc_sixlowpan_frag_rb_base_rm(gnrc_sixlowpan_frag_rb_base_t *entry)
static void _tmp_rm(gnrc_sixlowpan_frag_rb_t *rbuf) static void _tmp_rm(gnrc_sixlowpan_frag_rb_t *rbuf)
{ {
#if GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER > 0U #if CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER > 0U
/* use garbage-collection to leave the entry for at least /* use garbage-collection to leave the entry for at least
* GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER in the reassembly buffer by * CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER in the reassembly buffer by
* setting the arrival time to * setting the arrival time to
* (GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US - GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER) * (CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US - CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER)
* microseconds in the past */ * microseconds in the past */
rbuf->super.arrival = xtimer_now_usec() - rbuf->super.arrival = xtimer_now_usec() -
(GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US - (CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US -
GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER); CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER);
/* reset current size to prevent late duplicates to trigger another /* reset current size to prevent late duplicates to trigger another
* dispatch */ * dispatch */
rbuf->super.current_size = 0; rbuf->super.current_size = 0;
#else /* GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER == 0U */ #else /* CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER == 0U */
gnrc_sixlowpan_frag_rb_remove(rbuf); gnrc_sixlowpan_frag_rb_remove(rbuf);
#endif /* GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER */ #endif /* CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_DEL_TIMER */
} }
int gnrc_sixlowpan_frag_rb_dispatch_when_complete(gnrc_sixlowpan_frag_rb_t *rbuf, int gnrc_sixlowpan_frag_rb_dispatch_when_complete(gnrc_sixlowpan_frag_rb_t *rbuf,

View File

@ -0,0 +1,26 @@
# Copyright (c) 2020 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
menuconfig KCONFIG_MODULE_GNRC_SIXLOWPAN_FRAG_VRB
bool "Configure GNRC 6LoWPAN Virtual reassembly buffer"
depends on MODULE_GNRC_SIXLOWPAN_FRAG_VRB
help
Configure GNRC 6LoWPAN Virtual reassembly buffer module using Kconfig.
if KCONFIG_MODULE_GNRC_SIXLOWPAN_FRAG_VRB
config GNRC_SIXLOWPAN_FRAG_VRB_SIZE
int "Size of the virtual reassembly buffer"
default 16
help
Has a direct influence on the number of available
gnrc_sixlowpan_frag_rb_int_t entries.
config GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US
int "Timeout for a virtual reassembly buffer entry in microseconds"
default 3000000
endif # KCONFIG_MODULE_GNRC_SIXLOWPAN_FRAG_VRB

View File

@ -30,7 +30,7 @@
#define ENABLE_DEBUG (0) #define ENABLE_DEBUG (0)
#include "debug.h" #include "debug.h"
static gnrc_sixlowpan_frag_vrb_t _vrb[GNRC_SIXLOWPAN_FRAG_VRB_SIZE]; static gnrc_sixlowpan_frag_vrb_t _vrb[CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_SIZE];
#ifdef MODULE_GNRC_IPV6_NIB #ifdef MODULE_GNRC_IPV6_NIB
static char addr_str[IPV6_ADDR_MAX_STR_LEN]; static char addr_str[IPV6_ADDR_MAX_STR_LEN];
#else /* MODULE_GNRC_IPV6_NIB */ #else /* MODULE_GNRC_IPV6_NIB */
@ -57,7 +57,7 @@ gnrc_sixlowpan_frag_vrb_t *gnrc_sixlowpan_frag_vrb_add(
assert(out_netif != NULL); assert(out_netif != NULL);
assert(out_dst != NULL); assert(out_dst != NULL);
assert(out_dst_len > 0); assert(out_dst_len > 0);
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_VRB_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_SIZE; i++) {
gnrc_sixlowpan_frag_vrb_t *ptr = &_vrb[i]; gnrc_sixlowpan_frag_vrb_t *ptr = &_vrb[i];
if (gnrc_sixlowpan_frag_vrb_entry_empty(ptr) || if (gnrc_sixlowpan_frag_vrb_entry_empty(ptr) ||
@ -171,7 +171,7 @@ gnrc_sixlowpan_frag_vrb_t *gnrc_sixlowpan_frag_vrb_get(
{ {
DEBUG("6lo vrb: trying to get entry for (%s, %u)\n", DEBUG("6lo vrb: trying to get entry for (%s, %u)\n",
gnrc_netif_addr_to_str(src, src_len, addr_str), src_tag); gnrc_netif_addr_to_str(src, src_len, addr_str), src_tag);
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_VRB_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_SIZE; i++) {
gnrc_sixlowpan_frag_vrb_t *vrbe = &_vrb[i]; gnrc_sixlowpan_frag_vrb_t *vrbe = &_vrb[i];
if (_equal_index(vrbe, src, src_len, src_tag)) { if (_equal_index(vrbe, src, src_len, src_tag)) {
@ -190,9 +190,9 @@ void gnrc_sixlowpan_frag_vrb_gc(void)
{ {
uint32_t now_usec = xtimer_now_usec(); uint32_t now_usec = xtimer_now_usec();
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_VRB_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_SIZE; i++) {
if (!gnrc_sixlowpan_frag_vrb_entry_empty(&_vrb[i]) && if (!gnrc_sixlowpan_frag_vrb_entry_empty(&_vrb[i]) &&
(now_usec - _vrb[i].super.arrival) > GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US) { (now_usec - _vrb[i].super.arrival) > CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US) {
DEBUG("6lo vrb: entry (%s, ", DEBUG("6lo vrb: entry (%s, ",
gnrc_netif_addr_to_str(_vrb[i].super.src, gnrc_netif_addr_to_str(_vrb[i].super.src,
_vrb[i].super.src_len, _vrb[i].super.src_len,

View File

@ -308,12 +308,12 @@ static void _send(gnrc_pktsnip_t *pkt)
static void *_event_loop(void *args) static void *_event_loop(void *args)
{ {
msg_t msg, reply, msg_q[GNRC_SIXLOWPAN_MSG_QUEUE_SIZE]; msg_t msg, reply, msg_q[CONFIG_GNRC_SIXLOWPAN_MSG_QUEUE_SIZE];
gnrc_netreg_entry_t me_reg = GNRC_NETREG_ENTRY_INIT_PID(GNRC_NETREG_DEMUX_CTX_ALL, gnrc_netreg_entry_t me_reg = GNRC_NETREG_ENTRY_INIT_PID(GNRC_NETREG_DEMUX_CTX_ALL,
sched_active_pid); sched_active_pid);
(void)args; (void)args;
msg_init_queue(msg_q, GNRC_SIXLOWPAN_MSG_QUEUE_SIZE); msg_init_queue(msg_q, CONFIG_GNRC_SIXLOWPAN_MSG_QUEUE_SIZE);
/* register interest in all 6LoWPAN packets */ /* register interest in all 6LoWPAN packets */
gnrc_netreg_register(GNRC_NETTYPE_SIXLOWPAN, &me_reg); gnrc_netreg_register(GNRC_NETTYPE_SIXLOWPAN, &me_reg);

View File

@ -0,0 +1,24 @@
# Copyright (c) 2020 HAW Hamburg
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
menuconfig KCONFIG_MODULE_GNRC_SIXLOWPAN_ND
bool "Configure GNRC 6LoWPAN Neighbor Discovery"
depends on MODULE_GNRC_SIXLOWPAN_ND
help
Configure GNRC 6LoWPAN Neighbor Discovery module using Kconfig.
if KCONFIG_MODULE_GNRC_SIXLOWPAN_ND
config GNRC_SIXLOWPAN_ND_AR_LTIME
int "Registration lifetime for the address registration option in minutes"
depends on MODULE_GNRC_IPV6_NIB
default 15
help
This value should be adapted to the devices power-lifecycle so that it is
greater than the time the device spends sleeping. See RFC 6775, section
5.8.1.
endif # KCONFIG_MODULE_GNRC_SIXLOWPAN_ND

View File

@ -35,7 +35,7 @@
#define TEST_TAG (0x690e) #define TEST_TAG (0x690e)
#define TEST_PAGE (0) #define TEST_PAGE (0)
#define TEST_RECEIVE_TIMEOUT (100U) #define TEST_RECEIVE_TIMEOUT (100U)
#define TEST_GC_TIMEOUT (GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US + TEST_RECEIVE_TIMEOUT) #define TEST_GC_TIMEOUT (CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US + TEST_RECEIVE_TIMEOUT)
/* test date taken from an experimental run (uncompressed ICMPv6 echo reply with /* test date taken from an experimental run (uncompressed ICMPv6 echo reply with
* 300 byte payload)*/ * 300 byte payload)*/
@ -210,7 +210,7 @@ static const gnrc_sixlowpan_frag_rb_t *_first_non_empty_rbuf(void)
{ {
const gnrc_sixlowpan_frag_rb_t *rbuf = gnrc_sixlowpan_frag_rb_array(); const gnrc_sixlowpan_frag_rb_t *rbuf = gnrc_sixlowpan_frag_rb_array();
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
if (!gnrc_sixlowpan_frag_rb_entry_empty(&rbuf[i])) { if (!gnrc_sixlowpan_frag_rb_entry_empty(&rbuf[i])) {
return rbuf; return rbuf;
} }
@ -390,7 +390,7 @@ static void test_rbuf_add__full_rbuf(void)
gnrc_pktsnip_t *pkt; gnrc_pktsnip_t *pkt;
const gnrc_sixlowpan_frag_rb_t *rbuf; const gnrc_sixlowpan_frag_rb_t *rbuf;
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
pkt = gnrc_pktbuf_add(NULL, _fragment1, sizeof(_fragment1), pkt = gnrc_pktbuf_add(NULL, _fragment1, sizeof(_fragment1),
GNRC_NETTYPE_SIXLOWPAN); GNRC_NETTYPE_SIXLOWPAN);
TEST_ASSERT_NOT_NULL(pkt); TEST_ASSERT_NOT_NULL(pkt);
@ -407,7 +407,7 @@ static void test_rbuf_add__full_rbuf(void)
&_test_netif_hdr.hdr, pkt, TEST_FRAGMENT1_OFFSET, TEST_PAGE &_test_netif_hdr.hdr, pkt, TEST_FRAGMENT1_OFFSET, TEST_PAGE
)); ));
rbuf = gnrc_sixlowpan_frag_rb_array(); rbuf = gnrc_sixlowpan_frag_rb_array();
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
const gnrc_sixlowpan_frag_rb_t *entry = &rbuf[i]; const gnrc_sixlowpan_frag_rb_t *entry = &rbuf[i];
TEST_ASSERT_MESSAGE(!gnrc_sixlowpan_frag_rb_entry_empty(entry), TEST_ASSERT_MESSAGE(!gnrc_sixlowpan_frag_rb_entry_empty(entry),
@ -467,7 +467,7 @@ static void test_rbuf_add__overlap_lhs(void)
&_test_netif_hdr.hdr, pkt2, pkt2_offset, TEST_PAGE &_test_netif_hdr.hdr, pkt2, pkt2_offset, TEST_PAGE
)); ));
rbuf = gnrc_sixlowpan_frag_rb_array(); rbuf = gnrc_sixlowpan_frag_rb_array();
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
const gnrc_sixlowpan_frag_rb_t *entry = &rbuf[i]; const gnrc_sixlowpan_frag_rb_t *entry = &rbuf[i];
if (!gnrc_sixlowpan_frag_rb_entry_empty(entry)) { if (!gnrc_sixlowpan_frag_rb_entry_empty(entry)) {
static const size_t pkt3_offset = TEST_FRAGMENT3_OFFSET - 8U - 1; static const size_t pkt3_offset = TEST_FRAGMENT3_OFFSET - 8U - 1;
@ -516,7 +516,7 @@ static void test_rbuf_add__overlap_rhs(void)
&_test_netif_hdr.hdr, pkt2, pkt2_offset, TEST_PAGE &_test_netif_hdr.hdr, pkt2, pkt2_offset, TEST_PAGE
)); ));
rbuf = gnrc_sixlowpan_frag_rb_array(); rbuf = gnrc_sixlowpan_frag_rb_array();
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
const gnrc_sixlowpan_frag_rb_t *entry = &rbuf[i]; const gnrc_sixlowpan_frag_rb_t *entry = &rbuf[i];
if (!gnrc_sixlowpan_frag_rb_entry_empty(entry)) { if (!gnrc_sixlowpan_frag_rb_entry_empty(entry)) {
static const size_t pkt3_offset = TEST_FRAGMENT3_OFFSET + 8U - 1U; static const size_t pkt3_offset = TEST_FRAGMENT3_OFFSET + 8U - 1U;
@ -591,8 +591,8 @@ static void test_rbuf_gc__manually(void)
&_test_netif_hdr.hdr, pkt, TEST_FRAGMENT1_OFFSET, TEST_PAGE &_test_netif_hdr.hdr, pkt, TEST_FRAGMENT1_OFFSET, TEST_PAGE
))); )));
TEST_ASSERT_NOT_NULL(entry); TEST_ASSERT_NOT_NULL(entry);
/* set arrival GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US into the past */ /* set arrival CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US into the past */
entry->super.arrival -= GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US; entry->super.arrival -= CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US;
gnrc_sixlowpan_frag_rb_gc(); gnrc_sixlowpan_frag_rb_gc();
/* reassembly buffer is now empty */ /* reassembly buffer is now empty */
TEST_ASSERT_NULL(_first_non_empty_rbuf()); TEST_ASSERT_NULL(_first_non_empty_rbuf());

View File

@ -142,7 +142,7 @@ static bool _rb_is_empty(void)
const gnrc_sixlowpan_frag_rb_t *rb = gnrc_sixlowpan_frag_rb_array(); const gnrc_sixlowpan_frag_rb_t *rb = gnrc_sixlowpan_frag_rb_array();
unsigned res = 0; unsigned res = 0;
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
res += gnrc_sixlowpan_frag_rb_entry_empty(&rb[i]); res += gnrc_sixlowpan_frag_rb_entry_empty(&rb[i]);
} }
return res; return res;
@ -158,7 +158,7 @@ static void _test_no_vrbe_but_rbe_exists(void)
sizeof(_test_src), sizeof(_test_src),
TEST_TAG)); TEST_TAG));
/* and one reassembly buffer entry exists with the source and tag exists */ /* and one reassembly buffer entry exists with the source and tag exists */
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_RBUF_SIZE; i++) {
if (!gnrc_sixlowpan_frag_rb_entry_empty(&rb[i])) { if (!gnrc_sixlowpan_frag_rb_entry_empty(&rb[i])) {
rbs++; rbs++;
TEST_ASSERT_EQUAL_INT(sizeof(_test_src), rb[i].super.src_len); TEST_ASSERT_EQUAL_INT(sizeof(_test_src), rb[i].super.src_len);
@ -208,7 +208,7 @@ static void test_recv__vrb_full(void)
TEST_ASSERT_NOT_NULL(pkt); TEST_ASSERT_NOT_NULL(pkt);
/* Fill up VRB */ /* Fill up VRB */
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_VRB_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_SIZE; i++) {
base.tag++; base.tag++;
base.arrival = xtimer_now_usec(); base.arrival = xtimer_now_usec();
TEST_ASSERT_NOT_NULL(gnrc_sixlowpan_frag_vrb_add(&base, _mock_netif, TEST_ASSERT_NOT_NULL(gnrc_sixlowpan_frag_vrb_add(&base, _mock_netif,

View File

@ -108,7 +108,7 @@ static void test_vrb_add__full(void)
gnrc_sixlowpan_frag_rb_base_t base = _base; gnrc_sixlowpan_frag_rb_base_t base = _base;
/* fill up VRB */ /* fill up VRB */
for (unsigned i = 0; i < GNRC_SIXLOWPAN_FRAG_VRB_SIZE; i++) { for (unsigned i = 0; i < CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_SIZE; i++) {
TEST_ASSERT_NOT_NULL(gnrc_sixlowpan_frag_vrb_add(&base, TEST_ASSERT_NOT_NULL(gnrc_sixlowpan_frag_vrb_add(&base,
&_dummy_netif, &_dummy_netif,
_out_dst, _out_dst,
@ -161,7 +161,7 @@ static void test_vrb_gc(void)
gnrc_sixlowpan_frag_rb_base_t base = _base; gnrc_sixlowpan_frag_rb_base_t base = _base;
gnrc_sixlowpan_frag_vrb_t *res; gnrc_sixlowpan_frag_vrb_t *res;
base.arrival = xtimer_now_usec() - GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US - 1000; base.arrival = xtimer_now_usec() - CONFIG_GNRC_SIXLOWPAN_FRAG_VRB_TIMEOUT_US - 1000;
TEST_ASSERT_NOT_NULL((res = gnrc_sixlowpan_frag_vrb_add(&base, TEST_ASSERT_NOT_NULL((res = gnrc_sixlowpan_frag_vrb_add(&base,
&_dummy_netif, &_dummy_netif,
_out_dst, _out_dst,