| lwIP
    2.1.2
    Lightweight IP stack | 
#include "lwip/opt.h"#include "lwip/ip4_frag.h"#include "lwip/def.h"#include "lwip/inet_chksum.h"#include "lwip/netif.h"#include "lwip/stats.h"#include "lwip/icmp.h"#include <string.h>#include "arch/bpstruct.h"#include "arch/epstruct.h"| Data Structures | |
| struct | ip_reass_helper | 
| Macros | |
| #define | IP_REASS_CHECK_OVERLAP 1 | 
| #define | IP_REASS_FREE_OLDEST 1 | 
| Functions | |
| void | ip_reass_tmr (void) | 
| struct pbuf * | ip4_reass (struct pbuf *p) | 
| err_t | ip4_frag (struct pbuf *p, struct netif *netif, const ip4_addr_t *dest) | 
This is the IPv4 packet segmentation and reassembly implementation.
| #define IP_REASS_CHECK_OVERLAP 1 | 
The IP reassembly code currently has the following limitations:
Setting this to 0, you can turn off checking the fragments for overlapping regions. The code gets a little smaller. Only use this if you know that overlapping won't occur on your network!
| #define IP_REASS_FREE_OLDEST 1 | 
Set to 0 to prevent freeing the oldest datagram when the reassembly buffer is full (IP_REASS_MAX_PBUFS pbufs are enqueued). The code gets a little smaller. Datagrams will be freed by timeout only. Especially useful when MEMP_NUM_REASSDATA is set to 1, so one datagram can be reassembled at a time, only.
| err_t ip4_frag | ( | struct pbuf * | p, | 
| struct netif * | netif, | ||
| const ip4_addr_t * | dest | ||
| ) | 
Fragment an IP datagram if too large for the netif.
Chop the datagram in MTU sized chunks and send them in order by pointing PBUF_REFs into p.
| p | ip packet to send | 
| netif | the netif on which to send | 
| dest | destination ip address to which to send | 
Reassembles incoming IP fragments into an IP datagram.
| p | points to a pbuf chain of the fragment | 
| void ip_reass_tmr | ( | void | ) | 
Reassembly timer base function for both NO_SYS == 0 and 1 (!).
Should be called every 1000 msec (defined by IP_TMR_INTERVAL).