net_sockets.h File Reference

Network communication functions. More...

`#include "config.h"`
`#include "ssl.h"`
`#include <stddef.h>`
`#include <stdint.h>`
Include dependency graph for net_sockets.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures

struct | mbedtls_net_context

## Macros

#define | MBEDTLS_ERR_NET_SOCKET_FAILED -0x0042
#define | MBEDTLS_ERR_NET_CONNECT_FAILED -0x0044
#define | MBEDTLS_ERR_NET_BIND_FAILED -0x0046
#define | MBEDTLS_ERR_NET_LISTEN_FAILED -0x0048
#define | MBEDTLS_ERR_NET_ACCEPT_FAILED -0x004A
#define | MBEDTLS_ERR_NET_RECV_FAILED -0x004C
#define | MBEDTLS_ERR_NET_SEND_FAILED -0x004E
#define | MBEDTLS_ERR_NET_CONN_RESET -0x0050
#define | MBEDTLS_ERR_NET_UNKNOWN_HOST -0x0052
#define | MBEDTLS_ERR_NET_BUFFER_TOO_SMALL -0x0043
#define | MBEDTLS_ERR_NET_INVALID_CONTEXT -0x0045
#define | MBEDTLS_NET_LISTEN_BACKLOG 10
#define | MBEDTLS_NET_PROTO_TCP 0
#define | MBEDTLS_NET_PROTO_UDP 1

## Functions

void | mbedtls_net_init (mbedtls_net_context *ctx)
| Initialize a context Just makes the context ready to be used or freed safely. More...
int | mbedtls_net_connect (mbedtls_net_context *ctx, const char *host, const char *port, int proto)
| Initiate a connection with host:port in the given protocol. More...
int | mbedtls_net_bind (mbedtls_net_context *ctx, const char *bind_ip, const char *port, int proto)
| Create a receiving socket on bind_ip:port in the chosen protocol. If bind_ip == NULL, all interfaces are bound. More...
int | mbedtls_net_accept (mbedtls_net_context *bind_ctx, mbedtls_net_context *client_ctx, void *client_ip, size_t buf_size, size_t *ip_len)
| Accept a connection from a remote client. More...
int | mbedtls_net_set_block (mbedtls_net_context *ctx)
| Set the socket blocking. More...
int | mbedtls_net_set_nonblock (mbedtls_net_context *ctx)
| Set the socket non-blocking. More...
void | mbedtls_net_usleep (unsigned long usec)
| Portable usleep helper. More...
int | mbedtls_net_recv (void *ctx, unsigned char *buf, size_t len)
| Read at most 'len' characters. If no error occurs, the actual amount read is returned. More...
int | mbedtls_net_send (void *ctx, const unsigned char *buf, size_t len)
| Write at most 'len' characters. If no error occurs, the actual amount read is returned. More...
int | mbedtls_net_recv_timeout (void *ctx, unsigned char *buf, size_t len, uint32_t timeout)
| Read at most 'len' characters, blocking for at most 'timeout' seconds. If no error occurs, the actual amount read is returned. More...
void | mbedtls_net_free (mbedtls_net_context *ctx)
| Gracefully shutdown the connection and free associated data. More...

## Detailed Description

Network communication functions.

Definition in file net_sockets.h.

## Macro Definition Documentation

## MBEDTLS_ERR_NET_ACCEPT_FAILED

#define MBEDTLS_ERR_NET_ACCEPT_FAILED -0x004A

Could not accept the incoming connection.

Definition at line 42 of file net_sockets.h.

## MBEDTLS_ERR_NET_BIND_FAILED

#define MBEDTLS_ERR_NET_BIND_FAILED -0x0046

Binding of the socket failed.

Definition at line 40 of file net_sockets.h.

## MBEDTLS_ERR_NET_BUFFER_TOO_SMALL

#define MBEDTLS_ERR_NET_BUFFER_TOO_SMALL -0x0043

Buffer is too small to hold the data.

Definition at line 47 of file net_sockets.h.

## MBEDTLS_ERR_NET_CONN_RESET

#define MBEDTLS_ERR_NET_CONN_RESET -0x0050

Connection was reset by peer.

Definition at line 45 of file net_sockets.h.

## MBEDTLS_ERR_NET_CONNECT_FAILED

#define MBEDTLS_ERR_NET_CONNECT_FAILED -0x0044

The connection to the given server / port failed.

Definition at line 39 of file net_sockets.h.

## MBEDTLS_ERR_NET_INVALID_CONTEXT

#define MBEDTLS_ERR_NET_INVALID_CONTEXT -0x0045

The context is invalid, eg because it was free()ed.

Definition at line 48 of file net_sockets.h.

## MBEDTLS_ERR_NET_LISTEN_FAILED

#define MBEDTLS_ERR_NET_LISTEN_FAILED -0x0048

Could not listen on the socket.

Definition at line 41 of file net_sockets.h.

## MBEDTLS_ERR_NET_RECV_FAILED

#define MBEDTLS_ERR_NET_RECV_FAILED -0x004C

Reading information from the socket failed.

Definition at line 43 of file net_sockets.h.

## MBEDTLS_ERR_NET_SEND_FAILED

#define MBEDTLS_ERR_NET_SEND_FAILED -0x004E

Sending information through the socket failed.

Definition at line 44 of file net_sockets.h.

## MBEDTLS_ERR_NET_SOCKET_FAILED

#define MBEDTLS_ERR_NET_SOCKET_FAILED -0x0042

Failed to open a socket.

Definition at line 38 of file net_sockets.h.

## MBEDTLS_ERR_NET_UNKNOWN_HOST

#define MBEDTLS_ERR_NET_UNKNOWN_HOST -0x0052

Failed to get an IP address for the given hostname.

Definition at line 46 of file net_sockets.h.

## MBEDTLS_NET_LISTEN_BACKLOG

#define MBEDTLS_NET_LISTEN_BACKLOG 10

The backlog that listen() should use.

Definition at line 50 of file net_sockets.h.

## MBEDTLS_NET_PROTO_TCP

#define MBEDTLS_NET_PROTO_TCP 0

The TCP transport protocol

Definition at line 52 of file net_sockets.h.

## MBEDTLS_NET_PROTO_UDP

#define MBEDTLS_NET_PROTO_UDP 1

The UDP transport protocol

Definition at line 53 of file net_sockets.h.

## Function Documentation

## mbedtls_net_accept()

int mbedtls_net_accept | ( | mbedtls_net_context * | bind_ctx,
|  | mbedtls_net_context * | client_ctx,
|  | void * | client_ip,
|  | size_t | buf_size,
|  | size_t * | ip_len
| ) |  |

Accept a connection from a remote client.

Parameters

  bind_ctx | Relevant socket
  client_ctx | Will contain the connected client socket
  client_ip | Will contain the client IP address
  buf_size | Size of the client_ip buffer
  ip_len | Will receive the size of the client IP written

Returns
  0 if successful, or MBEDTLS_ERR_NET_ACCEPT_FAILED, or MBEDTLS_ERR_NET_BUFFER_TOO_SMALL if buf_size is too small, MBEDTLS_ERR_SSL_WANT_READ if bind_fd was set to non-blocking and accept() would block.

## mbedtls_net_bind()

int mbedtls_net_bind | ( | mbedtls_net_context * | ctx,
|  | const char * | bind_ip,
|  | const char * | port,
|  | int | proto
| ) |  |

Create a receiving socket on bind_ip:port in the chosen protocol. If bind_ip == NULL, all interfaces are bound.

Parameters

  ctx | Socket to use
  bind_ip | IP to bind to, can be NULL
  port | Port number to use
  proto | Protocol: MBEDTLS_NET_PROTO_TCP or MBEDTLS_NET_PROTO_UDP

Returns
  0 if successful, or one of: MBEDTLS_ERR_NET_SOCKET_FAILED, MBEDTLS_ERR_NET_BIND_FAILED, MBEDTLS_ERR_NET_LISTEN_FAILED

Note
  Regardless of the protocol, opens the sockets and binds it. In addition, make the socket listening if protocol is TCP.

## mbedtls_net_connect()

int mbedtls_net_connect | ( | mbedtls_net_context * | ctx,
|  | const char * | host,
|  | const char * | port,
|  | int | proto
| ) |  |

Initiate a connection with host:port in the given protocol.

Parameters

  ctx | Socket to use
  host | Host to connect to
  port | Port to connect to
  proto | Protocol: MBEDTLS_NET_PROTO_TCP or MBEDTLS_NET_PROTO_UDP

Returns
  0 if successful, or one of: MBEDTLS_ERR_NET_SOCKET_FAILED, MBEDTLS_ERR_NET_UNKNOWN_HOST, MBEDTLS_ERR_NET_CONNECT_FAILED

Note
  Sets the socket in connected mode even with UDP.

## mbedtls_net_free()

void mbedtls_net_free | ( | mbedtls_net_context * | ctx | ) |

Gracefully shutdown the connection and free associated data.

Parameters

  ctx | The context to free

## mbedtls_net_init()

void mbedtls_net_init | ( | mbedtls_net_context * | ctx | ) |

Initialize a context Just makes the context ready to be used or freed safely.

Parameters

  ctx | Context to initialize

## mbedtls_net_recv()

int mbedtls_net_recv | ( | void * | ctx,
|  | unsigned char * | buf,
|  | size_t | len
| ) |  |

Read at most 'len' characters. If no error occurs, the actual amount read is returned.

Parameters

  ctx | Socket
  buf | The buffer to write to
  len | Maximum length of the buffer

Returns
  the number of bytes received, or a non-zero error code; with a non-blocking socket, MBEDTLS_ERR_SSL_WANT_READ indicates read() would block.

## mbedtls_net_recv_timeout()

int mbedtls_net_recv_timeout | ( | void * | ctx,
|  | unsigned char * | buf,
|  | size_t | len,
|  | uint32_t | timeout
| ) |  |

Read at most 'len' characters, blocking for at most 'timeout' seconds. If no error occurs, the actual amount read is returned.

Parameters

  ctx | Socket
  buf | The buffer to write to
  len | Maximum length of the buffer
  timeout | Maximum number of milliseconds to wait for data 0 means no timeout (wait forever)

Returns
  the number of bytes received, or a non-zero error code: MBEDTLS_ERR_SSL_TIMEOUT if the operation timed out, MBEDTLS_ERR_SSL_WANT_READ if interrupted by a signal.

Note
  This function will block (until data becomes available or timeout is reached) even if the socket is set to non-blocking. Handling timeouts with non-blocking reads requires a different strategy.

## mbedtls_net_send()

int mbedtls_net_send | ( | void * | ctx,
|  | const unsigned char * | buf,
|  | size_t | len
| ) |  |

Write at most 'len' characters. If no error occurs, the actual amount read is returned.

Parameters

  ctx | Socket
  buf | The buffer to read from
  len | The length of the buffer

Returns
  the number of bytes sent, or a non-zero error code; with a non-blocking socket, MBEDTLS_ERR_SSL_WANT_WRITE indicates write() would block.

## mbedtls_net_set_block()

int mbedtls_net_set_block | ( | mbedtls_net_context * | ctx | ) |

Set the socket blocking.

Parameters

  ctx | Socket to set

Returns
  0 if successful, or a non-zero error code

## mbedtls_net_set_nonblock()

int mbedtls_net_set_nonblock | ( | mbedtls_net_context * | ctx | ) |

Set the socket non-blocking.

Parameters

  ctx | Socket to set

Returns
  0 if successful, or a non-zero error code

## mbedtls_net_usleep()

void mbedtls_net_usleep | ( | unsigned long | usec | ) |

Portable usleep helper.

Parameters

  usec | Amount of microseconds to sleep

Note
  Real amount of time slept will not be less than select()'s timeout granularity (typically, 10ms).