GNRC fragmentation extension definitions. More...

Detailed Description

GNRC fragmentation extension definitions.

Martine Lenders

Definition in file frag.h.

#include <stdbool.h>
#include <stdint.h>
#include "clist.h"
#include "net/gnrc/pkt.h"
#include "net/gnrc/pktbuf.h"
#include "net/ipv6/hdr.h"
+ Include dependency graph for frag.h:

Go to the source code of this file.

Data Structures

struct  gnrc_ipv6_ext_frag_limits
 Data type to describe limits of a single fragment in the reassembly buffer. More...
struct  gnrc_ipv6_ext_frag_send_t
 Fragmentation send buffer type. More...
struct  gnrc_ipv6_ext_frag_rbuf_t
 A reassembly buffer entry. More...
struct  gnrc_ipv6_ext_frag_stats_t
 Statistics on reassembly and reassembly. More...


#define GNRC_IPV6_EXT_FRAG_RBUF_GC   (0xfe00U)
 Message type to time reassembly buffer garbage collection.
#define GNRC_IPV6_EXT_FRAG_CONTINUE   (0xfe01U)
 Message type to continue fragmenting a datagram from a given fragmentation send buffer. More...
#define GNRC_IPV6_EXT_FRAG_SEND   (0xfe02U)
 Message type to send a fragment of an IPv6 datagram. More...


typedef struct gnrc_ipv6_ext_frag_limits gnrc_ipv6_ext_frag_limits_t
 Data type to describe limits of a single fragment in the reassembly buffer.


void gnrc_ipv6_ext_frag_init (void)
 Initializes IPv6 fragmentation and reassembly.
void gnrc_ipv6_ext_frag_send_pkt (gnrc_pktsnip_t *pkt, unsigned path_mtu)
 Send an IPv6 packet fragmented. More...
void gnrc_ipv6_ext_frag_send (gnrc_ipv6_ext_frag_send_t *snd_buf)
 (Continue to) fragment packet already in fragmentation send buffer More...
gnrc_pktsnip_tgnrc_ipv6_ext_frag_reass (gnrc_pktsnip_t *pkt)
 Reassemble fragmented IPv6 packet. More...
gnrc_ipv6_ext_frag_stats_tgnrc_ipv6_ext_frag_stats (void)
 Get the current statistics on reassembly and fragmentation. More...

Reassembly buffer operations

gnrc_ipv6_ext_frag_rbuf_tgnrc_ipv6_ext_frag_rbuf_get (ipv6_hdr_t *ipv6, uint32_t id)
 Get a reassembly buffer by the identifying parameters.
void gnrc_ipv6_ext_frag_rbuf_free (gnrc_ipv6_ext_frag_rbuf_t *rbuf)
 Frees a reassembly buffer entry (but does not release its gnrc_ipv6_ext_frag_rbuf_t::pkt) More...
static void gnrc_ipv6_ext_frag_rbuf_del (gnrc_ipv6_ext_frag_rbuf_t *rbuf)
 Delete a reassembly buffer entry (and release its gnrc_ipv6_ext_frag_rbuf_t::pkt) More...
void gnrc_ipv6_ext_frag_rbuf_gc (void)
 Garbage-collect reassembly buffer. More...