mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-26 06:53:52 +01:00
gnrc_sixlowpan_frag_rb: use existing name scheme for private functions
This commit is contained in:
parent
49bd8678ed
commit
972e4938bc
@ -67,12 +67,13 @@
|
||||
*
|
||||
* 1. If @ref net_gnrc_sixlowpan_frag is included and @ref sixlowpan_frag_is() is true for the
|
||||
* packet, the fragmentation header will be removed and its remaining data will be added to
|
||||
* the reassembly buffer (using @ref rbuf_add()) in accordance to the fragmentation header.
|
||||
* The packet containing the fragment will be discarded. When the fragmented datagram is
|
||||
* complete, its payload will be marked with @ref GNRC_NETTYPE_IPV6 and issued via a
|
||||
* @ref GNRC_NETAPI_MSG_TYPE_RCV to all subscribers registered to @ref GNRC_NETTYPE_IPV6 with
|
||||
* demultiplex context @ref GNRC_NETREG_DEMUX_CTX_ALL in the @ref net_gnrc_netreg. If
|
||||
* reassembly times out or if fragments overlap the datagram will be silently discarded.
|
||||
* the reassembly buffer (using @ref gnrc_sixlowpan_frag_rbuf_add()) in accordance to the
|
||||
* fragmentation header. The packet containing the fragment will be discarded. When the
|
||||
* fragmented datagram is complete, its payload will be marked with @ref GNRC_NETTYPE_IPV6 and
|
||||
* issued via a @ref GNRC_NETAPI_MSG_TYPE_RCV to all subscribers registered to @ref
|
||||
* GNRC_NETTYPE_IPV6 with demultiplex context @ref GNRC_NETREG_DEMUX_CTX_ALL in the @ref
|
||||
* net_gnrc_netreg. If reassembly times out or if fragments overlap the datagram will be
|
||||
* silently discarded.
|
||||
* 2. If @ref net_gnrc_sixlowpan_iphc is included the packet will not be send to the subscribers
|
||||
* to @ref GNRC_NETTYPE_IPV6 with demultiplex context @ref GNRC_NETREG_DEMUX_CTX_ALL
|
||||
* immediately, but it will be checked first if @ref sixlowpan_iphc_is() is true for its
|
||||
|
||||
@ -113,11 +113,10 @@ typedef struct {
|
||||
* @param[in] frag The fragment to add.
|
||||
* @param[in] offset The fragment's offset.
|
||||
* @param[in] page Current 6Lo dispatch parsing page.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
void rbuf_add(gnrc_netif_hdr_t *netif_hdr, gnrc_pktsnip_t *frag,
|
||||
size_t offset, unsigned page);
|
||||
void gnrc_sixlowpan_frag_rbuf_add(gnrc_netif_hdr_t *netif_hdr,
|
||||
gnrc_pktsnip_t *frag, size_t offset,
|
||||
unsigned page);
|
||||
|
||||
/**
|
||||
* @brief Checks if a reassembly buffer entry is unset
|
||||
@ -126,10 +125,8 @@ void rbuf_add(gnrc_netif_hdr_t *netif_hdr, gnrc_pktsnip_t *frag,
|
||||
*
|
||||
* @return true, if @p rbuf is empty (i.e. rbuf->super.pkt is NULL).
|
||||
* @return false, if @p rbuf is in use.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
static inline bool rbuf_entry_empty(const gnrc_sixlowpan_rbuf_t *rbuf) {
|
||||
static inline bool gnrc_sixlowpan_frag_rbuf_entry_empty(const gnrc_sixlowpan_rbuf_t *rbuf) {
|
||||
return (rbuf->pkt == NULL);
|
||||
}
|
||||
|
||||
@ -139,7 +136,7 @@ static inline bool rbuf_entry_empty(const gnrc_sixlowpan_rbuf_t *rbuf) {
|
||||
*
|
||||
* @note Only available when @ref TEST_SUITES is defined
|
||||
*/
|
||||
void rbuf_reset(void);
|
||||
void gnrc_sixlowpan_frag_rbuf_reset(void);
|
||||
|
||||
/**
|
||||
* @brief Returns a pointer to the array representing the reassembly buffer.
|
||||
@ -150,7 +147,7 @@ void rbuf_reset(void);
|
||||
* access is immediately spotted at compile time of tests. The `const`
|
||||
* qualifier may however be discarded if required by the tests.
|
||||
*/
|
||||
const gnrc_sixlowpan_rbuf_t *rbuf_array(void);
|
||||
const gnrc_sixlowpan_rbuf_t *gnrc_sixlowpan_frag_rbuf_array(void);
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
||||
@ -359,7 +359,7 @@ void gnrc_sixlowpan_frag_recv(gnrc_pktsnip_t *pkt, void *ctx, unsigned page)
|
||||
return;
|
||||
}
|
||||
|
||||
rbuf_add(hdr, pkt, offset, page);
|
||||
gnrc_sixlowpan_frag_rbuf_add(hdr, pkt, offset, page);
|
||||
}
|
||||
|
||||
uint16_t gnrc_sixlowpan_frag_next_tag(void)
|
||||
|
||||
@ -119,8 +119,9 @@ static int _check_fragments(gnrc_sixlowpan_rbuf_base_t *entry,
|
||||
return RBUF_ADD_SUCCESS;
|
||||
}
|
||||
|
||||
void rbuf_add(gnrc_netif_hdr_t *netif_hdr, gnrc_pktsnip_t *pkt,
|
||||
size_t offset, unsigned page)
|
||||
void gnrc_sixlowpan_frag_rbuf_add(gnrc_netif_hdr_t *netif_hdr,
|
||||
gnrc_pktsnip_t *pkt, size_t offset,
|
||||
unsigned page)
|
||||
{
|
||||
if (_rbuf_add(netif_hdr, pkt, offset, page) == RBUF_ADD_REPEAT) {
|
||||
_rbuf_add(netif_hdr, pkt, offset, page);
|
||||
@ -272,7 +273,7 @@ void gnrc_sixlowpan_frag_rbuf_gc(void)
|
||||
|
||||
for (i = 0; i < RBUF_SIZE; i++) {
|
||||
/* since pkt occupies pktbuf, aggressivly collect garbage */
|
||||
if (!rbuf_entry_empty(&rbuf[i]) &&
|
||||
if (!gnrc_sixlowpan_frag_rbuf_entry_empty(&rbuf[i]) &&
|
||||
((now_usec - rbuf[i].super.arrival) > RBUF_TIMEOUT)) {
|
||||
DEBUG("6lo rfrag: entry (%s, ",
|
||||
gnrc_netif_addr_to_str(rbuf[i].super.src,
|
||||
@ -328,7 +329,7 @@ static gnrc_sixlowpan_rbuf_t *_rbuf_get(const void *src, size_t src_len,
|
||||
}
|
||||
|
||||
/* if there is a free spot: remember it */
|
||||
if ((res == NULL) && rbuf_entry_empty(&rbuf[i])) {
|
||||
if ((res == NULL) && gnrc_sixlowpan_frag_rbuf_entry_empty(&rbuf[i])) {
|
||||
res = &(rbuf[i]);
|
||||
}
|
||||
|
||||
@ -345,7 +346,7 @@ static gnrc_sixlowpan_rbuf_t *_rbuf_get(const void *src, size_t src_len,
|
||||
assert(oldest != NULL);
|
||||
/* if oldest is not empty, res must not be NULL (because otherwise
|
||||
* oldest could have been picked as res) */
|
||||
assert(!rbuf_entry_empty(oldest));
|
||||
assert(!gnrc_sixlowpan_frag_rbuf_entry_empty(oldest));
|
||||
if (GNRC_SIXLOWPAN_FRAG_RBUF_AGGRESSIVE_OVERRIDE ||
|
||||
((now_usec - oldest->super.arrival) >
|
||||
GNRC_SIXLOWPAN_FRAG_RBUF_TIMEOUT_US)) {
|
||||
@ -410,7 +411,7 @@ static gnrc_sixlowpan_rbuf_t *_rbuf_get(const void *src, size_t src_len,
|
||||
}
|
||||
|
||||
#ifdef TEST_SUITES
|
||||
void rbuf_reset(void)
|
||||
void gnrc_sixlowpan_frag_rbuf_reset(void)
|
||||
{
|
||||
xtimer_remove(&_gc_timer);
|
||||
memset(rbuf_int, 0, sizeof(rbuf_int));
|
||||
@ -423,7 +424,7 @@ void rbuf_reset(void)
|
||||
memset(rbuf, 0, sizeof(rbuf));
|
||||
}
|
||||
|
||||
const gnrc_sixlowpan_rbuf_t *rbuf_array(void)
|
||||
const gnrc_sixlowpan_rbuf_t *gnrc_sixlowpan_frag_rbuf_array(void)
|
||||
{
|
||||
return &rbuf[0];
|
||||
}
|
||||
|
||||
@ -184,7 +184,7 @@ static inline void _set_fragment_offset(void *frag, uint16_t offset)
|
||||
|
||||
static void _set_up(void)
|
||||
{
|
||||
rbuf_reset();
|
||||
gnrc_sixlowpan_frag_rbuf_reset();
|
||||
gnrc_pktbuf_init();
|
||||
gnrc_netif_hdr_init(&_test_netif_hdr.hdr,
|
||||
GNRC_NETIF_HDR_L2ADDR_MAX_LEN,
|
||||
@ -207,10 +207,10 @@ static void _set_up(void)
|
||||
|
||||
static const gnrc_sixlowpan_rbuf_t *_first_non_empty_rbuf(void)
|
||||
{
|
||||
const gnrc_sixlowpan_rbuf_t *rbuf = rbuf_array();
|
||||
const gnrc_sixlowpan_rbuf_t *rbuf = gnrc_sixlowpan_frag_rbuf_array();
|
||||
|
||||
for (unsigned i = 0; i < RBUF_SIZE; i++) {
|
||||
if (!rbuf_entry_empty(&rbuf[i])) {
|
||||
if (!gnrc_sixlowpan_frag_rbuf_entry_empty(&rbuf[i])) {
|
||||
return rbuf;
|
||||
}
|
||||
}
|
||||
@ -257,7 +257,8 @@ static void test_rbuf_add__success_first_fragment(void)
|
||||
const gnrc_sixlowpan_rbuf_t *entry;
|
||||
|
||||
TEST_ASSERT_NOT_NULL(pkt);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt, TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt,
|
||||
TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
entry = _first_non_empty_rbuf();
|
||||
/* current_size must be the offset of fragment 2, not the size of
|
||||
* fragment 1 (fragment dispatch was removed, IPHC was applied etc.). */
|
||||
@ -273,7 +274,8 @@ static void test_rbuf_add__success_subsequent_fragment(void)
|
||||
const gnrc_sixlowpan_rbuf_t *entry;
|
||||
|
||||
TEST_ASSERT_NOT_NULL(pkt);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt, TEST_FRAGMENT2_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt,
|
||||
TEST_FRAGMENT2_OFFSET, TEST_PAGE);
|
||||
entry = _first_non_empty_rbuf();
|
||||
/* current_size must be the offset of fragment 3, not the size of
|
||||
* fragment 2 (fragment dispatch was removed, IPHC was applied etc.). */
|
||||
@ -291,9 +293,11 @@ static void test_rbuf_add__success_duplicate_fragments(void)
|
||||
const gnrc_sixlowpan_rbuf_t *entry;
|
||||
|
||||
TEST_ASSERT_NOT_NULL(pkt1);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt1, TEST_FRAGMENT3_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt1,
|
||||
TEST_FRAGMENT3_OFFSET, TEST_PAGE);
|
||||
TEST_ASSERT_NOT_NULL(pkt2);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt2, TEST_FRAGMENT3_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt2,
|
||||
TEST_FRAGMENT3_OFFSET, TEST_PAGE);
|
||||
entry = _first_non_empty_rbuf();
|
||||
/* current_size must be the offset of fragment 4, not the size of
|
||||
* fragment 3 (fragment dispatch was removed, IPHC was applied etc.). */
|
||||
@ -322,13 +326,17 @@ static void test_rbuf_add__success_complete(void)
|
||||
gnrc_netreg_register(TEST_DATAGRAM_NETTYPE, ®);
|
||||
/* Mixing up things. Order decided by fair dice-rolls ;-) */
|
||||
TEST_ASSERT_NOT_NULL(pkt2);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt2, TEST_FRAGMENT2_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt2,
|
||||
TEST_FRAGMENT2_OFFSET, TEST_PAGE);
|
||||
TEST_ASSERT_NOT_NULL(pkt4);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt4, TEST_FRAGMENT4_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt4,
|
||||
TEST_FRAGMENT4_OFFSET, TEST_PAGE);
|
||||
TEST_ASSERT_NOT_NULL(pkt1);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt1, TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt1,
|
||||
TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
TEST_ASSERT_NOT_NULL(pkt3);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt3, TEST_FRAGMENT3_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt3,
|
||||
TEST_FRAGMENT3_OFFSET, TEST_PAGE);
|
||||
TEST_ASSERT_MESSAGE(
|
||||
xtimer_msg_receive_timeout(&msg, TEST_RECEIVE_TIMEOUT) >= 0,
|
||||
"Receiving reassembled datagram timed out"
|
||||
@ -355,21 +363,21 @@ static void test_rbuf_add__full_rbuf(void)
|
||||
pkt = gnrc_pktbuf_add(NULL, _fragment1, sizeof(_fragment1),
|
||||
GNRC_NETTYPE_SIXLOWPAN);
|
||||
TEST_ASSERT_NOT_NULL(pkt);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt, TEST_FRAGMENT1_OFFSET,
|
||||
TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt,
|
||||
TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
_set_fragment_tag(_fragment1, TEST_TAG + i + 1);
|
||||
/* pkt is released in rbuf_add() */
|
||||
/* pkt is released in gnrc_sixlowpan_frag_rbuf_add() */
|
||||
}
|
||||
pkt = gnrc_pktbuf_add(NULL, _fragment1, sizeof(_fragment1),
|
||||
GNRC_NETTYPE_SIXLOWPAN);
|
||||
TEST_ASSERT_NOT_NULL(pkt);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt, TEST_FRAGMENT1_OFFSET,
|
||||
TEST_PAGE);
|
||||
rbuf = rbuf_array();
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt,
|
||||
TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
rbuf = gnrc_sixlowpan_frag_rbuf_array();
|
||||
for (unsigned i = 0; i < RBUF_SIZE; i++) {
|
||||
const gnrc_sixlowpan_rbuf_t *entry = &rbuf[i];
|
||||
|
||||
TEST_ASSERT_MESSAGE(!rbuf_entry_empty(entry),
|
||||
TEST_ASSERT_MESSAGE(!gnrc_sixlowpan_frag_rbuf_entry_empty(entry),
|
||||
"Reassembly buffer entry unexpectedly empty");
|
||||
TEST_ASSERT((sizeof(_fragment1) - sizeof(sixlowpan_frag_t)) <
|
||||
entry->pkt->size);
|
||||
@ -397,8 +405,8 @@ static void test_rbuf_add__too_big_fragment(void)
|
||||
GNRC_NETTYPE_SIXLOWPAN);
|
||||
|
||||
TEST_ASSERT_NOT_NULL(pkt);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt, TEST_FRAGMENT1_OFFSET,
|
||||
TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt,
|
||||
TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
/* packet buffer is empty*/
|
||||
TEST_ASSERT_NULL(_first_non_empty_rbuf());
|
||||
_check_pktbuf(NULL);
|
||||
@ -417,14 +425,15 @@ static void test_rbuf_add__overlap_lhs(void)
|
||||
pkt2 = gnrc_pktbuf_add(NULL, _fragment2, sizeof(_fragment2),
|
||||
GNRC_NETTYPE_SIXLOWPAN);
|
||||
TEST_ASSERT_NOT_NULL(pkt1);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt1, TEST_FRAGMENT1_OFFSET,
|
||||
TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt1,
|
||||
TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
TEST_ASSERT_NOT_NULL(pkt2);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt2, pkt2_offset, TEST_PAGE);
|
||||
rbuf = rbuf_array();
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt2, pkt2_offset,
|
||||
TEST_PAGE);
|
||||
rbuf = gnrc_sixlowpan_frag_rbuf_array();
|
||||
for (unsigned i = 0; i < RBUF_SIZE; i++) {
|
||||
const gnrc_sixlowpan_rbuf_t *entry = &rbuf[i];
|
||||
if (!rbuf_entry_empty(entry)) {
|
||||
if (!gnrc_sixlowpan_frag_rbuf_entry_empty(entry)) {
|
||||
static const size_t pkt3_offset = TEST_FRAGMENT3_OFFSET - 8U - 1;
|
||||
|
||||
rbuf_entries++;
|
||||
@ -459,16 +468,18 @@ static void test_rbuf_add__overlap_rhs(void)
|
||||
pkt2 = gnrc_pktbuf_add(NULL, _fragment2, sizeof(_fragment2),
|
||||
GNRC_NETTYPE_SIXLOWPAN);
|
||||
TEST_ASSERT_NOT_NULL(pkt1);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt1, TEST_FRAGMENT1_OFFSET,
|
||||
TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt1,
|
||||
TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
TEST_ASSERT_NOT_NULL(pkt3);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt3, TEST_FRAGMENT3_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt3,
|
||||
TEST_FRAGMENT3_OFFSET, TEST_PAGE);
|
||||
TEST_ASSERT_NOT_NULL(pkt2);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt2, pkt2_offset, TEST_PAGE);
|
||||
rbuf = rbuf_array();
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt2, pkt2_offset,
|
||||
TEST_PAGE);
|
||||
rbuf = gnrc_sixlowpan_frag_rbuf_array();
|
||||
for (unsigned i = 0; i < RBUF_SIZE; i++) {
|
||||
const gnrc_sixlowpan_rbuf_t *entry = &rbuf[i];
|
||||
if (!rbuf_entry_empty(entry)) {
|
||||
if (!gnrc_sixlowpan_frag_rbuf_entry_empty(entry)) {
|
||||
static const size_t pkt3_offset = TEST_FRAGMENT3_OFFSET + 8U - 1U;
|
||||
|
||||
rbuf_entries++;
|
||||
@ -511,7 +522,8 @@ static void test_rbuf_gc__manually(void)
|
||||
gnrc_sixlowpan_rbuf_t *entry;
|
||||
|
||||
TEST_ASSERT_NOT_NULL(pkt);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt, TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt,
|
||||
TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
/* discarding const qualifier intentionally to override `arrival` */
|
||||
entry = (gnrc_sixlowpan_rbuf_t *)_first_non_empty_rbuf();
|
||||
TEST_ASSERT_NOT_NULL(entry);
|
||||
@ -531,7 +543,8 @@ static void test_rbuf_gc__timed(void)
|
||||
gnrc_sixlowpan_rbuf_t *entry;
|
||||
|
||||
TEST_ASSERT_NOT_NULL(pkt);
|
||||
rbuf_add(&_test_netif_hdr.hdr, pkt, TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
gnrc_sixlowpan_frag_rbuf_add(&_test_netif_hdr.hdr, pkt,
|
||||
TEST_FRAGMENT1_OFFSET, TEST_PAGE);
|
||||
/* discarding const qualifier intentionally to override `arrival` */
|
||||
entry = (gnrc_sixlowpan_rbuf_t *)_first_non_empty_rbuf();
|
||||
TEST_ASSERT_NOT_NULL(entry);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user