| lwIP
    2.0.3
    Lightweight IP stack | 
#include <pbuf.h>
| Data Fields | |
| struct pbuf * | next | 
| void * | payload | 
| u16_t | tot_len | 
| u16_t | len | 
| u8_t | type | 
| u8_t | flags | 
| u16_t | ref | 
Main packet buffer struct
| u8_t pbuf::flags | 
misc flags
| u16_t pbuf::len | 
length of this buffer
| struct pbuf* pbuf::next | 
next pbuf in singly linked pbuf chain
| void* pbuf::payload | 
pointer to the actual data in the buffer
| u16_t pbuf::ref | 
the reference count always equals the number of pointers that refer to this pbuf. This can be pointers from an application, the stack itself, or pbuf->next pointers from a chain.
| u16_t pbuf::tot_len | 
total length of this buffer and all next buffers in chain belonging to the same packet.
For non-queue packet chains this is the invariant: p->tot_len == p->len + (p->next? p->next->tot_len: 0)
| u8_t pbuf::type | 
pbuf_type as u8_t instead of enum to save space