Network buffers
APIs » Sequential-style APIs » Netconn API

## Functions

struct netbuf * | netbuf_new (void)
void | netbuf_delete (struct netbuf *buf)
void * | netbuf_alloc (struct netbuf *buf, u16_t size)
void | netbuf_free (struct netbuf *buf)
err_t | netbuf_ref (struct netbuf *buf, const void *dataptr, u16_t size)
void | netbuf_chain (struct netbuf *head, struct netbuf *tail)
err_t | netbuf_data (struct netbuf *buf, void **dataptr, u16_t *len)
s8_t | netbuf_next (struct netbuf *buf)
void | netbuf_first (struct netbuf *buf)

## Detailed Description

Network buffer descriptor for Netconn API. Based on Packet buffers (PBUF) internally to avoid copying data around.
Buffers must not be shared across multiple threads, all functions except netbuf_new() and netbuf_delete() are not thread-safe.

## Function Documentation

## netbuf_alloc()

void* netbuf_alloc | ( | struct netbuf * | buf,
|  | u16_t | size
| ) |  |

Allocate memory for a packet buffer for a given netbuf.

Parameters

  buf | the netbuf for which to allocate a packet buffer
  size | the size of the packet buffer to allocate

Returns
  pointer to the allocated memory NULL if no memory could be allocated

## netbuf_chain()

void netbuf_chain | ( | struct netbuf * | head,
|  | struct netbuf * | tail
| ) |  |

Chain one netbuf to another (

See also
  pbuf_chain)

Parameters

  head | the first netbuf
  tail | netbuf to chain after head, freed by this function, may not be reference after returning

## netbuf_data()

err_t netbuf_data | ( | struct netbuf * | buf,
|  | void ** | dataptr,
|  | u16_t * | len
| ) |  |

Get the data pointer and length of the data inside a netbuf.

Parameters

  buf | netbuf to get the data from
  dataptr | pointer to a void pointer where to store the data pointer
  len | pointer to an u16_t where the length of the data is stored

Returns
  ERR_OK if the information was retrieved, ERR_BUF on error.

## netbuf_delete()

void netbuf_delete | ( | struct netbuf * | buf | ) |

Deallocate a netbuf allocated by netbuf_new().

Parameters

  buf | pointer to a netbuf allocated by netbuf_new()

## netbuf_first()

void netbuf_first | ( | struct netbuf * | buf | ) |

Move the current data pointer of a packet buffer contained in a netbuf to the beginning of the packet. The packet buffer itself is not modified.

Parameters

  buf | the netbuf to modify

## netbuf_free()

void netbuf_free | ( | struct netbuf * | buf | ) |

Free the packet buffer included in a netbuf

Parameters

  buf | pointer to the netbuf which contains the packet buffer to free

## netbuf_new()

struct netbuf* netbuf_new | ( | void |  | ) |

Create (allocate) and initialize a new netbuf. The netbuf doesn't yet contain a packet buffer!

Returns
  a pointer to a new netbuf NULL on lack of memory

## netbuf_next()

s8_t netbuf_next | ( | struct netbuf * | buf | ) |

Move the current data pointer of a packet buffer contained in a netbuf to the next part. The packet buffer itself is not modified.

Parameters

  buf | the netbuf to modify

Returns
  -1 if there is no next part 1 if moved to the next part but now there is no next part 0 if moved to the next part and there are still more parts

## netbuf_ref()

err_t netbuf_ref | ( | struct netbuf * | buf,
|  | const void * | dataptr,
|  | u16_t | size
| ) |  |

Let a netbuf reference existing (non-volatile) data.

Parameters

  buf | netbuf which should reference the data
  dataptr | pointer to the data to reference
  size | size of the data

Returns
  ERR_OK if data is referenced ERR_MEM if data couldn't be referenced due to lack of memory