Mbed OS Reference
Loading...
Searching...
No Matches
net_sockets.h File Reference

Network sockets abstraction layer to integrate Mbed TLS into a BSD-style sockets API. More...

#include "mbedtls/config.h"
#include "mbedtls/ssl.h"
#include <stddef.h>
#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  mbedtls_net_context
 Wrapper type for sockets. More...
 

Macros

#define MBEDTLS_ERR_NET_SOCKET_FAILED   -0x0042
 Failed to open a socket. More...
 
#define MBEDTLS_ERR_NET_CONNECT_FAILED   -0x0044
 The connection to the given server / port failed. More...
 
#define MBEDTLS_ERR_NET_BIND_FAILED   -0x0046
 Binding of the socket failed. More...
 
#define MBEDTLS_ERR_NET_LISTEN_FAILED   -0x0048
 Could not listen on the socket. More...
 
#define MBEDTLS_ERR_NET_ACCEPT_FAILED   -0x004A
 Could not accept the incoming connection. More...
 
#define MBEDTLS_ERR_NET_RECV_FAILED   -0x004C
 Reading information from the socket failed. More...
 
#define MBEDTLS_ERR_NET_SEND_FAILED   -0x004E
 Sending information through the socket failed. More...
 
#define MBEDTLS_ERR_NET_CONN_RESET   -0x0050
 Connection was reset by peer. More...
 
#define MBEDTLS_ERR_NET_UNKNOWN_HOST   -0x0052
 Failed to get an IP address for the given hostname. More...
 
#define MBEDTLS_ERR_NET_BUFFER_TOO_SMALL   -0x0043
 Buffer is too small to hold the data. More...
 
#define MBEDTLS_ERR_NET_INVALID_CONTEXT   -0x0045
 The context is invalid, eg because it was free()ed. More...
 
#define MBEDTLS_ERR_NET_POLL_FAILED   -0x0047
 Polling the net context failed. More...
 
#define MBEDTLS_ERR_NET_BAD_INPUT_DATA   -0x0049
 Input invalid. More...
 
#define MBEDTLS_NET_LISTEN_BACKLOG   10
 The backlog that listen() should use. More...
 
#define MBEDTLS_NET_PROTO_TCP   0
 The TCP transport protocol. More...
 
#define MBEDTLS_NET_PROTO_UDP   1
 The UDP transport protocol. More...
 
#define MBEDTLS_NET_POLL_READ   1
 Used in mbedtls_net_poll to check for pending data
More...
 
#define MBEDTLS_NET_POLL_WRITE   2
 Used in mbedtls_net_poll to check if write possible. More...
 

Typedefs

typedef struct mbedtls_net_context mbedtls_net_context
 Wrapper type for sockets. More...
 

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. 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_poll (mbedtls_net_context *ctx, uint32_t rw, uint32_t timeout)
 Check and wait for the context to be ready for read/write. 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. More...
 
int mbedtls_net_send (void *ctx, const unsigned char *buf, size_t len)
 Write at most 'len' characters. 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. More...
 
void mbedtls_net_close (mbedtls_net_context *ctx)
 Closes down the connection and free associated data. More...
 
void mbedtls_net_free (mbedtls_net_context *ctx)
 Gracefully shutdown the connection and free associated data. More...
 

Detailed Description

Network sockets abstraction layer to integrate Mbed TLS into a BSD-style sockets API.

The network sockets module provides an example integration of the Mbed TLS library into a BSD sockets implementation. The module is intended to be an example of how Mbed TLS can be integrated into a networking stack, as well as to be Mbed TLS's network integration for its supported platforms.

The module is intended only to be used with the Mbed TLS library and is not intended to be used by third party application software directly.

The supported platforms are as follows:

  • Microsoft Windows and Windows CE
  • POSIX/Unix platforms including Linux, OS X

Definition in file net_sockets.h.