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. Theconstqualifier 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 rbufwas complete and dispatched.
- 
0, when the datagram in rbufis not complete.
- 
-1, if the reassembled datagram was not dispatched. rbufis 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 rbufis empty (i.e. rbuf->super.pkt is NULL).
- 
false, if rbufis 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_hdrandtag, 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_rbis 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.