# net.h File Reference

## Detailed Description

Copyright (C) 2006-2009, Paul Bakker <polarssl_maintainer at polarssl.org> All rights reserved.

Joined copyright on original XySSL code with: Christophe Devine

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.

Definition in file net.h.

Go to the source code of this file.

## Defines
#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.
int | net_bind (int *fd, char *bind_ip, int port)
| Create a listening socket on bind_ip:port.
void | net_close (int fd)
| Gracefully shutdown the connection.
int | net_connect (int *fd, char *host, int port)
| Initiate a TCP connection with host:port.
int | net_recv (void *ctx, unsigned char *buf, int len)
| Read at most 'len' characters.
int | net_send (void *ctx, unsigned char *buf, int len)
| Write at most 'len' characters.
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.

## Define Documentation

#define POLARSSL_ERR_NET_ACCEPT_FAILED -0x0F50

Definition at line 31 of file net.h.

#define POLARSSL_ERR_NET_BIND_FAILED -0x0F30

Definition at line 29 of file net.h.

#define POLARSSL_ERR_NET_CONN_RESET -0x0F80

Definition at line 34 of file net.h.

#define POLARSSL_ERR_NET_CONNECT_FAILED -0x0F20

Definition at line 28 of file net.h.

#define POLARSSL_ERR_NET_LISTEN_FAILED -0x0F40

Definition at line 30 of file net.h.

#define POLARSSL_ERR_NET_RECV_FAILED -0x0F60

Definition at line 32 of file net.h.

#define POLARSSL_ERR_NET_SEND_FAILED -0x0F70

Definition at line 33 of file net.h.

#define POLARSSL_ERR_NET_SOCKET_FAILED -0x0F10

Definition at line 27 of file net.h.

#define POLARSSL_ERR_NET_TRY_AGAIN -0x0F90

Definition at line 35 of file net.h.

#define POLARSSL_ERR_NET_UNKNOWN_HOST -0x0F00

Definition at line 26 of file net.h.

## 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.

int net_bind | ( | int * | fd,
|  | 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

void net_close | ( | int | fd | ) |

Gracefully shutdown the connection.

Parameters:

  | fd | The socket to close

int net_connect | ( | int * | fd,
|  | 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

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:

  | 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_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:

  | ctx | Socket
  | buf | The buffer to write to
  | len | Maximum 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:

  | fd | Socket to set

Returns:
  0 if successful, or a non-zero error code

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

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