6LoWPAN reassembly buffer
More...
6LoWPAN reassembly buffer
|
file | rb.h |
| Reassembly buffer definitions.
|
|
◆ GNRC_SIXLOWPAN_FRAG_RB_GC_MSG
#define GNRC_SIXLOWPAN_FRAG_RB_GC_MSG (0x0226) |
Message type for triggering garbage collection reassembly buffer.
Definition at line 42 of file rb.h.
◆ gnrc_sixlowpan_frag_rb_int_t
Fragment intervals to identify limits of fragments and duplicates.
- Note
- Fragments MUST NOT overlap and overlapping fragments are to be discarded
- See also
- RFC 4944, section 5.3
◆ gnrc_sixlowpan_frag_rb_add()
Adds a new fragment to the reassembly buffer.
If the packet is complete, dispatch the packet with the transmit information of the last fragment.
- Parameters
-
[in] | netif_hdr | The interface header of the fragment, with gnrc_netif_hdr_t::if_pid and its source and destination address set. |
[in] | frag | The fragment to add. Will be released by the function. |
[in] | offset | The fragment's offset. |
[in] | page | Current 6Lo dispatch parsing page. |
- Returns
- The reassembly buffer entry the fragment was added to on success.
-
NULL on error.
◆ gnrc_sixlowpan_frag_rb_array()
Returns a pointer to the array representing the reassembly buffer.
- Note
- Only available when TEST_SUITES is defined
- Returns
- The first element of the reassembly buffer.
const
, so that write access is immediately spotted at compile time of tests. The const
qualifier may however be discarded if required by the tests.
◆ gnrc_sixlowpan_frag_rb_base_rm()
Remove base entry.
- Parameters
-
[in,out] | entry | Entry to remove |
◆ gnrc_sixlowpan_frag_rb_dispatch_when_complete()
Checks if a reassembly buffer entry is complete and dispatches it to the next layer if that is the case.
- Precondition
rbuf != NULL
-
netif != NULL
- Parameters
-
[in] | rbuf | A reassembly buffer entry. Must not be NULL. |
[in] | netif | Original gnrc_netif_hdr_t of the last received frame. Used to construct the gnrc_netif_hdr_t of the completed datagram. Must not be NULL. |
- Returns
- >0, when the datagram in
rbuf
was complete and dispatched.
-
0, when the datagram in
rbuf
is not complete.
-
-1, if the the reassembled datagram was not dispatched.
rbuf
is destroyed either way.
◆ gnrc_sixlowpan_frag_rb_entry_empty()
Checks if a reassembly buffer entry is unset.
- Parameters
-
[in] | rbuf | A reassembly buffer entry |
- Returns
- true, if
rbuf
is empty (i.e. rbuf->super.pkt is NULL).
-
false, if
rbuf
is in use.
Definition at line 208 of file rb.h.
◆ gnrc_sixlowpan_frag_rb_exists()
bool gnrc_sixlowpan_frag_rb_exists |
( |
const gnrc_netif_hdr_t * |
netif_hdr, |
|
|
uint16_t |
tag |
|
) |
| |
Checks if a reassembly buffer entry with a given link-layer address pair and tag exists.
- Precondition
netif_hdr != NULL
- Parameters
-
[in] | netif_hdr | An interface header to provide the (source, destination) link-layer address pair. Must not be NULL. |
[in] | tag | Tag to search for. |
- Note
- datagram_size is not a search parameter as the primary use case for this function is [Selective Fragment Recovery] (https://tools.ietf.org/html/rfc8931) where this information only exists in the first fragment.
- Returns
- true, if an entry with the given tuple exist.
-
false, if no entry with the given tuple exist.
◆ gnrc_sixlowpan_frag_rb_get_by_datagram()
Gets a reassembly buffer entry with a given link-layer address pair and tag.
- Precondition
netif_hdr != NULL
- Parameters
-
[in] | netif_hdr | An interface header to provide the (source, destination) link-layer address pair. Must not be NULL. |
[in] | tag | Tag to search for. |
- Note
- datagram_size is not a search parameter as the primary use case for this function is [Selective Fragment Recovery] (https://tools.ietf.org/html/rfc8931) where this information only exists in the first fragment.
- Returns
- The reassembly buffer entry identified by the source and destination address in the
netif_hdr
and tag
, if any such entry exist.
-
NULL, if no entry with the given identifying tuple exist.
◆ gnrc_sixlowpan_frag_rb_ints_empty()
bool gnrc_sixlowpan_frag_rb_ints_empty |
( |
void |
| ) |
|
Check if pool of fragment intervals is empty.
- See also
- gnrc_sixlowpan_frag_rb_int_t
- Note
- Returns only non-true values if TEST_SUITES is defined.
- Returns
- true, if pool of fragment intervals is empty
-
false, if pool of fragment intervals is not empty
◆ gnrc_sixlowpan_frag_rb_remove()
Unsets a reassembly buffer entry (but does not free rbuf_t::super::pkt)
- Precondition
rbuf != NULL
This functions sets rbuf_t::super::pkt to NULL and removes all rbuf::ints.
- Note
- Does nothing if module
gnrc_sixlowpan_frag_rb
is not included.
- Parameters
-
[in] | rbuf | A reassembly buffer entry. Must not be NULL. |
Definition at line 278 of file rb.h.
◆ gnrc_sixlowpan_frag_rb_reset()
void gnrc_sixlowpan_frag_rb_reset |
( |
void |
| ) |
|
Resets the packet buffer to a clean state.
- Note
- Only available when TEST_SUITES is defined
◆ gnrc_sixlowpan_frag_rb_rm_by_datagram()
void gnrc_sixlowpan_frag_rb_rm_by_datagram |
( |
const gnrc_netif_hdr_t * |
netif_hdr, |
|
|
uint16_t |
tag |
|
) |
| |
Removes a reassembly buffer entry with a given link-layer address pair and tag.
- Precondition
netif_hdr != NULL
- Parameters
-
[in] | netif_hdr | An interface header to provide the (source, destination) link-layer address pair. Must not be NULL. |
[in] | tag | Tag to search for. |
- Note
- datagram_size is not a search parameter as the primary use case for this function is [Selective Fragment Recovery] (https://tools.ietf.org/html/rfc8931) where this information only exists in the first fragment.