6LoWPAN selective fragment recovery implementation for GNRC
More...
6LoWPAN selective fragment recovery implementation for GNRC
6LoWPAN selective fragment recovery is an alternative fragmentation specification to classic 6LoWPAN fragmentation. It can be run in parallel to classic fragmentation, but is incompatible with its message formats.
How nodes can exchange that they are able to communicate using selective fragment recovery is currently not specified, so this feature should only be used if the operator of a network can ensure that all 6LoWPAN nodes within that network can communicate using selective fragment recovery.
- See also
- RFC 8931
- Warning
- This feature is experimental!
|
file | sfr.h |
| 6LoWPAN selective fragment recovery definitions for GNRC
|
|
file | sfr_types.h |
| 6LoWPAN selective fragment recovery type definitions for GNRC
|
|
◆ GNRC_SIXLOWPAN_FRAG_SFR_ARQ_TIMEOUT_MSG
#define GNRC_SIXLOWPAN_FRAG_SFR_ARQ_TIMEOUT_MSG (0x0227) |
Message type to signal an acknowledgement request timeout.
Definition at line 54 of file sfr.h.
◆ GNRC_SIXLOWPAN_FRAG_SFR_INTER_FRAG_GAP_MSG
#define GNRC_SIXLOWPAN_FRAG_SFR_INTER_FRAG_GAP_MSG (0x0228) |
Message type to signal the sending of the next frame.
Definition at line 59 of file sfr.h.
◆ gnrc_sixlowpan_frag_sfr_arq_timeout()
Handles an Acknowledgment request timeout.
- Parameters
-
[in] | fbuf | The fragmentation buffer representing the datagram for which fragments the Acknowledgment request timed out. |
◆ gnrc_sixlowpan_frag_sfr_forward()
Forward a fragment via selective fragment recovery.
- Parameters
-
[in] | pkt | The fragment to forward (without RFRAG header). Is consumed by this function. |
[in] | rfrag | The originally received RFRAG header. |
[in] | vrbe | Virtual reassembly buffer containing the forwarding information. |
[in] | page | Current 6Lo dispatch parsing page. |
- Returns
- 0, on success.
-
-ENOMEM, when packet buffer is too full to prepare packet for forwarding.
pkt
is released in that case.
◆ gnrc_sixlowpan_frag_sfr_init_iface()
static void gnrc_sixlowpan_frag_sfr_init_iface |
( |
gnrc_netif_t * |
netif | ) |
|
|
inlinestatic |
Initialize a network interface for selective fragment recovery.
- Note
- This is a NOP without module
gnrc_sixlowpan_frag_sfr
- Parameters
-
[in] | netif | A network interface |
Definition at line 95 of file sfr.h.
◆ gnrc_sixlowpan_frag_sfr_inter_frame_gap()
Handles inter frame gap.
- Parameters
-
[in] | fbuf | The fragmentation buffer representing the datagram for which the next frame should uphold the inter frame gap |
◆ gnrc_sixlowpan_frag_sfr_netif()
static bool gnrc_sixlowpan_frag_sfr_netif |
( |
gnrc_netif_t * |
netif | ) |
|
|
inlinestatic |
Checks if a network interface is configured for selective fragment recovery.
- Parameters
-
[in] | netif | A network interface. |
- Returns
- true, if
netif
supports selective fragment recovery and has it enabled.
-
false, if
netif
does not support selective fragment recovery or does not have it enabled.
Definition at line 121 of file sfr.h.
◆ gnrc_sixlowpan_frag_sfr_recv()
void gnrc_sixlowpan_frag_sfr_recv |
( |
gnrc_pktsnip_t * |
pkt, |
|
|
void * |
ctx, |
|
|
unsigned |
page |
|
) |
| |
Handles a packet containing a selective fragment recovery header.
- Parameters
-
[in] | pkt | The packet to handle. |
[in] | ctx | Context for the packet. May be NULL. |
[in] | page | Current 6Lo dispatch parsing page. |
◆ gnrc_sixlowpan_frag_sfr_send()
void gnrc_sixlowpan_frag_sfr_send |
( |
gnrc_pktsnip_t * |
pkt, |
|
|
void * |
ctx, |
|
|
unsigned |
page |
|
) |
| |
Sends a packet via selective fragment recovery.
- Precondition
ctx != NULL
-
gnrc_sixlowpan_frag_fb_t::pkt of
ctx
is equal to pkt
or pkt == NULL
.
- Parameters
-