net.c File Reference

#include "polarssl/config.h"
#include "polarssl/net.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/time.h>
#include <unistd.h>
#include <signal.h>
#include <fcntl.h>
#include <netdb.h>
#include <errno.h>
#include <endian.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <inttypes.h>
Include dependency graph for net.c:

Go to the source code of this file.

Defines

#define POLARSSL_HTONS(n)
#define POLARSSL_HTONL(n)
#define net_htons(n)   POLARSSL_HTONS(n)
#define net_htonl(n)   POLARSSL_HTONL(n)

Functions

unsigned short net_htons (unsigned short n)
unsigned long net_htonl (unsigned long n)
int net_connect (int *fd, const char *host, int port)
 Initiate a TCP connection with host:port.
int net_bind (int *fd, const char *bind_ip, int port)
 Create a listening socket on bind_ip:port.
static int net_is_blocking (void)
int net_accept (int bind_fd, int *client_fd, void *client_ip)
 Accept a connection from a remote client.
int net_set_block (int fd)
 Set the socket blocking.
int net_set_nonblock (int fd)
 Set the socket non-blocking.
void net_usleep (unsigned long usec)
 Portable usleep helper.
int net_recv (void *ctx, unsigned char *buf, size_t len)
 Read at most 'len' characters.
int net_send (void *ctx, const unsigned char *buf, size_t len)
 Write at most 'len' characters.
void net_close (int fd)
 Gracefully shutdown the connection.

Define Documentation

#define net_htonl (  )     POLARSSL_HTONL(n)

Definition at line 115 of file net.c.

Referenced by net_bind().

#define net_htons (  )     POLARSSL_HTONS(n)

Definition at line 114 of file net.c.

Referenced by net_bind(), and net_connect().

#define POLARSSL_HTONL (  ) 
Value:
((((unsigned long )(n) & 0xFF      ) << 24) | \
                           (((unsigned long )(n) & 0xFF00    ) << 8 ) | \
                           (((unsigned long )(n) & 0xFF0000  ) >> 8 ) | \
                           (((unsigned long )(n) & 0xFF000000) >> 24))

Definition at line 106 of file net.c.

#define POLARSSL_HTONS (  ) 
Value:
((((unsigned short)(n) & 0xFF      ) << 8 ) | \
                           (((unsigned short)(n) & 0xFF00    ) >> 8 ))

Definition at line 104 of file net.c.


Function Documentation

int net_accept ( int  bind_fd,
int *  client_fd,
void *  client_ip 
)

Accept a connection from a remote client.

Parameters:
bind_fd Relevant socket
client_fd Will contain the connected client socket
client_ip Will contain the client IP address
Returns:
0 if successful, POLARSSL_ERR_NET_ACCEPT_FAILED, or POLARSSL_ERR_NET_WOULD_BLOCK is bind_fd was set to non-blocking and accept() is blocking.

Definition at line 261 of file net.c.

References net_is_blocking(), POLARSSL_ERR_NET_ACCEPT_FAILED, and POLARSSL_ERR_NET_WANT_READ.

int net_bind ( int *  fd,
const char *  bind_ip,
int  port 
)

Create a listening socket on bind_ip:port.

If bind_ip == NULL, all interfaces are binded.

Parameters:
fd Socket to use
bind_ip IP to bind to, can be NULL
port Port number to use
Returns:
0 if successful, or one of: POLARSSL_ERR_NET_SOCKET_FAILED, POLARSSL_ERR_NET_BIND_FAILED, POLARSSL_ERR_NET_LISTEN_FAILED

Definition at line 169 of file net.c.

References net_htonl, net_htons, POLARSSL_ERR_NET_BIND_FAILED, POLARSSL_ERR_NET_LISTEN_FAILED, POLARSSL_ERR_NET_SOCKET_FAILED, and POLARSSL_NET_LISTEN_BACKLOG.

void net_close ( int  fd  ) 

Gracefully shutdown the connection.

Parameters:
fd The socket to close

Definition at line 391 of file net.c.

int net_connect ( int *  fd,
const char *  host,
int  port 
)

Initiate a TCP connection with host:port.

Parameters:
fd Socket to use
host Host to connect to
port Port to connect to
Returns:
0 if successful, or one of: POLARSSL_ERR_NET_SOCKET_FAILED, POLARSSL_ERR_NET_UNKNOWN_HOST, POLARSSL_ERR_NET_CONNECT_FAILED

Definition at line 120 of file net.c.

References net_htons, POLARSSL_ERR_NET_CONNECT_FAILED, POLARSSL_ERR_NET_SOCKET_FAILED, and POLARSSL_ERR_NET_UNKNOWN_HOST.

unsigned long net_htonl ( unsigned long  n  ) 
unsigned short net_htons ( unsigned short  n  ) 
static int net_is_blocking ( void   )  [static]

Definition at line 238 of file net.c.

Referenced by net_accept(), net_recv(), and net_send().

int 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:
This function returns the number of bytes received, or a non-zero error code; POLARSSL_ERR_NET_WANT_READ indicates read() is blocking.

Definition at line 331 of file net.c.

References net_is_blocking(), POLARSSL_ERR_NET_CONN_RESET, POLARSSL_ERR_NET_RECV_FAILED, and POLARSSL_ERR_NET_WANT_READ.

int 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:
This function returns the number of bytes sent, or a non-zero error code; POLARSSL_ERR_NET_WANT_WRITE indicates write() is blocking.

Definition at line 361 of file net.c.

References net_is_blocking(), POLARSSL_ERR_NET_CONN_RESET, POLARSSL_ERR_NET_SEND_FAILED, and POLARSSL_ERR_NET_WANT_WRITE.

int net_set_block ( int  fd  ) 

Set the socket blocking.

Parameters:
fd Socket to set
Returns:
0 if successful, or a non-zero error code

Definition at line 293 of file net.c.

int net_set_nonblock ( int  fd  ) 

Set the socket non-blocking.

Parameters:
fd Socket to set
Returns:
0 if successful, or a non-zero error code

Definition at line 304 of file net.c.

void 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).

Definition at line 319 of file net.c.


Generated on 20 Jan 2015 for PolarSSL v1.3.2 by  doxygen 1.6.1