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

Defines

#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.
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.
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.
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.
int mbedtls_net_set_block (mbedtls_net_context *ctx)
 Set the socket blocking.
int mbedtls_net_set_nonblock (mbedtls_net_context *ctx)
 Set the socket non-blocking.
void mbedtls_net_usleep (unsigned long usec)
 Portable usleep helper.
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.
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.
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.
void mbedtls_net_free (mbedtls_net_context *ctx)
 Gracefully shutdown the connection and free associated data.

Detailed Description

Network communication functions.

Definition in file net_sockets.h.


Define Documentation

#define MBEDTLS_ERR_NET_ACCEPT_FAILED   -0x004A

Could not accept the incoming connection.

Definition at line 69 of file net_sockets.h.

#define MBEDTLS_ERR_NET_BIND_FAILED   -0x0046

Binding of the socket failed.

Definition at line 67 of file net_sockets.h.

#define MBEDTLS_ERR_NET_BUFFER_TOO_SMALL   -0x0043

Buffer is too small to hold the data.

Definition at line 74 of file net_sockets.h.

#define MBEDTLS_ERR_NET_CONN_RESET   -0x0050

Connection was reset by peer.

Definition at line 72 of file net_sockets.h.

#define MBEDTLS_ERR_NET_CONNECT_FAILED   -0x0044

The connection to the given server / port failed.

Definition at line 66 of file net_sockets.h.

#define MBEDTLS_ERR_NET_INVALID_CONTEXT   -0x0045

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

Definition at line 75 of file net_sockets.h.

#define MBEDTLS_ERR_NET_LISTEN_FAILED   -0x0048

Could not listen on the socket.

Definition at line 68 of file net_sockets.h.

#define MBEDTLS_ERR_NET_RECV_FAILED   -0x004C

Reading information from the socket failed.

Definition at line 70 of file net_sockets.h.

#define MBEDTLS_ERR_NET_SEND_FAILED   -0x004E

Sending information through the socket failed.

Definition at line 71 of file net_sockets.h.

#define MBEDTLS_ERR_NET_SOCKET_FAILED   -0x0042

Failed to open a socket.

Definition at line 65 of file net_sockets.h.

#define MBEDTLS_ERR_NET_UNKNOWN_HOST   -0x0052

Failed to get an IP address for the given hostname.

Definition at line 73 of file net_sockets.h.

#define MBEDTLS_NET_LISTEN_BACKLOG   10

The backlog that listen() should use.

Definition at line 77 of file net_sockets.h.

#define MBEDTLS_NET_PROTO_TCP   0

The TCP transport protocol

Definition at line 79 of file net_sockets.h.

#define MBEDTLS_NET_PROTO_UDP   1

The UDP transport protocol

Definition at line 80 of file net_sockets.h.


Function Documentation

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, can be NULL
buf_size Size of the client_ip buffer
ip_len Will receive the size of the client IP written, can be NULL if client_ip is null
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.
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.
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.
void mbedtls_net_free ( mbedtls_net_context ctx  ) 

Gracefully shutdown the connection and free associated data.

Parameters:
ctx The context to free
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
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.
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.
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.
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
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
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).

Generated on 10 Aug 2020 for mbed TLS v2.7.16 by  doxygen 1.6.1