Atmel Software Framework

net.h File Reference

Copyright (C) 2006-2010, Brainspark B.V.

This file is part of PolarSSL (http://www.polarssl.org) Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>

All rights reserved.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Macros

#define POLARSSL_ERR_NET_ACCEPT_FAILED   -0x0F50
 
#define POLARSSL_ERR_NET_BIND_FAILED   -0x0F30
 
#define POLARSSL_ERR_NET_CONN_RESET   -0x0F80
 
#define POLARSSL_ERR_NET_CONNECT_FAILED   -0x0F20
 
#define POLARSSL_ERR_NET_LISTEN_FAILED   -0x0F40
 
#define POLARSSL_ERR_NET_RECV_FAILED   -0x0F60
 
#define POLARSSL_ERR_NET_SEND_FAILED   -0x0F70
 
#define POLARSSL_ERR_NET_SOCKET_FAILED   -0x0F10
 
#define POLARSSL_ERR_NET_TRY_AGAIN   -0x0F90
 
#define POLARSSL_ERR_NET_UNKNOWN_HOST   -0x0F00
 

Functions

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

#define POLARSSL_ERR_NET_ACCEPT_FAILED   -0x0F50
#define POLARSSL_ERR_NET_BIND_FAILED   -0x0F30
#define POLARSSL_ERR_NET_CONN_RESET   -0x0F80
#define POLARSSL_ERR_NET_CONNECT_FAILED   -0x0F20
#define POLARSSL_ERR_NET_LISTEN_FAILED   -0x0F40
#define POLARSSL_ERR_NET_RECV_FAILED   -0x0F60
#define POLARSSL_ERR_NET_SEND_FAILED   -0x0F70
#define POLARSSL_ERR_NET_SOCKET_FAILED   -0x0F10
#define POLARSSL_ERR_NET_TRY_AGAIN   -0x0F90
#define POLARSSL_ERR_NET_UNKNOWN_HOST   -0x0F00

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

Accept a connection from a remote client.

Parameters
bind_fdRelevant socket
client_fdWill contain the connected client socket
client_ipWill 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.
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
fdSocket to use
bind_ipIP to bind to, can be NULL
portPort 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
void net_close ( int  fd)

Gracefully shutdown the connection.

Parameters
fdThe socket to close
int net_connect ( int *  fd,
const char *  host,
int  port 
)

Initiate a TCP connection with host:port.

Parameters
fdSocket to use
hostHost to connect to
portPort 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
int net_recv ( void *  ctx,
unsigned char *  buf,
int  len 
)

Read at most 'len' characters.

If no error occurs, the actual amount read is returned.

Parameters
ctxSocket
bufThe buffer to write to
lenMaximum length of the buffer
Returns
This function returns the number of bytes received, or a non-zero error code; POLARSSL_ERR_NET_TRY_AGAIN indicates read() is blocking.
int net_send ( void *  ctx,
unsigned char *  buf,
int  len 
)

Write at most 'len' characters.

If no error occurs, the actual amount read is returned.

Parameters
ctxSocket
bufThe buffer to read from
lenThe length of the buffer
Returns
This function returns the number of bytes sent, or a non-zero error code; POLARSSL_ERR_NET_TRY_AGAIN indicates write() is blocking.
int net_set_block ( int  fd)

Set the socket blocking.

Parameters
fdSocket to set
Returns
0 if successful, or a non-zero error code
int net_set_nonblock ( int  fd)

Set the socket non-blocking.

Parameters
fdSocket to set
Returns
0 if successful, or a non-zero error code
void net_usleep ( unsigned long  usec)

Portable usleep helper.

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