Virtual reassembly buffer.
More...
Virtual reassembly buffer.
|
file | vrb.h |
| Virtual reassembly buffer definitions.
|
|
|
gnrc_sixlowpan_frag_vrb_t * | gnrc_sixlowpan_frag_vrb_add (const gnrc_sixlowpan_frag_rb_base_t *base, gnrc_netif_t *out_netif, const uint8_t *out_dst, size_t out_dst_len) |
| Adds a new reassembly buffer entry.
|
|
gnrc_sixlowpan_frag_vrb_t * | gnrc_sixlowpan_frag_vrb_from_route (const gnrc_sixlowpan_frag_rb_base_t *base, gnrc_netif_t *netif, const gnrc_pktsnip_t *hdr) |
| Generate reassembly buffer from a header's forwarding information.
|
|
void | gnrc_sixlowpan_frag_vrb_gc (void) |
| Checks timeouts and removes entries if necessary.
|
|
gnrc_sixlowpan_frag_vrb_t * | gnrc_sixlowpan_frag_vrb_get (const uint8_t *src, size_t src_len, unsigned src_tag) |
| Gets a VRB entry.
|
|
gnrc_sixlowpan_frag_vrb_t * | gnrc_sixlowpan_frag_vrb_reverse (const gnrc_netif_t *netif, const uint8_t *src, size_t src_len, unsigned tag) |
| Reverse VRB lookup.
|
|
static void | gnrc_sixlowpan_frag_vrb_rm (gnrc_sixlowpan_frag_vrb_t *vrb) |
| Removes an entry from the VRB.
|
|
static bool | gnrc_sixlowpan_frag_vrb_entry_empty (gnrc_sixlowpan_frag_vrb_t *vrb) |
| Determines if a VRB entry is empty.
|
|
void | gnrc_sixlowpan_frag_vrb_reset (void) |
| Resets the VRB to a clean state.
|
|
◆ gnrc_sixlowpan_frag_vrb_add()
Adds a new reassembly buffer entry.
- Parameters
-
[in] | base | Base data of the datagram. Must not be NULL . |
[in] | out_netif | Network interface that is out-going to out_dst . |
[in] | out_dst | Link-layer destination address to which to forward fragments identified by base . Must not be NULL . |
[in] | out_dst_len | Length of out_dst . Must be greater than 0. |
- Precondition
base != NULL
-
out_dst != NULL
-
out_dst_len > 0
- Returns
- A new VRB entry.
-
NULL, if VRB is full.
◆ gnrc_sixlowpan_frag_vrb_entry_empty()
Determines if a VRB entry is empty.
- Parameters
-
- Returns
- true, if
vrb
entry is empty.
-
false, if
vrb
entry is not empty.
Definition at line 165 of file vrb.h.
◆ gnrc_sixlowpan_frag_vrb_from_route()
Generate reassembly buffer from a header's forwarding information.
- Parameters
-
[in] | base | Base data of the datagram. Must not be NULL . |
[in] | netif | Restrict route to this interface. May be NULL for any interface. |
[in] | hdr | Header from which to take the forwarding information from (e.g. IPv6 header implies hdr->type == GNRC_NETTYPE_IPV6 ). |
- Precondition
base != NULL
-
(hdr != NULL) && (hdr->data != NULL) && (hdr->size > 0)
- Returns
- The VRB entry pointing to the next hop based on the forwarding information provided in
hdr
and present in the respective forwarding information base for hdr->type
.
-
NULL, if VRB is full or if there is no route to destination in
hdr
.
◆ gnrc_sixlowpan_frag_vrb_get()
Gets a VRB entry.
- Parameters
-
[in] | src | Link-layer source address of the original fragment. |
[in] | src_len | Length of src . |
[in] | src_tag | Tag of the original fragment. |
- Returns
- The VRB entry identified by the given parameters.
-
NULL, if there is no entry in the VRB that could be identified by the given parameters.
◆ gnrc_sixlowpan_frag_vrb_reset()
void gnrc_sixlowpan_frag_vrb_reset |
( |
void |
| ) |
|
Resets the VRB to a clean state.
- Note
- Only available when TEST_SUITES is defined
◆ gnrc_sixlowpan_frag_vrb_reverse()
Reverse VRB lookup.
- Parameters
-
[in] | netif | Network interface the reverse label-switched packet came over |
[in] | src | Link-layer source address of reverse label-switched packet. |
[in] | src_len | Length of src . |
[in] | tag | Tag of the reverse label-switched packet. |
- Returns
- The VRB entry with
vrb->super.dst == src
and vrb->out_tag == tag
.
-
NULL, if there is no entry in the VRB that has these values.
◆ gnrc_sixlowpan_frag_vrb_rm()
Removes an entry from the VRB.
- Parameters
-
Definition at line 149 of file vrb.h.