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 9 Apr 2014 for PolarSSL v1.3.2 by  doxygen 1.6.1