RTRlib
|
The RTR transport sockets implement the communication channel (e.g., SSH, TCP, TCP-AO) between an RTR server and client. More...
Modules | |
SSH transport socket | |
An implementation of the SSH protocol for the RTR transport. | |
TCP transport socket | |
An implementation of the TCP protocol for the RTR transport. | |
Data Structures | |
struct | tr_socket |
A transport socket datastructure. More... | |
Macros | |
#define | RTRLIB_TRANSPORT_CONNECT_TIMEOUT_DEFAULT 30 |
Default connect timeout. | |
Typedefs | |
typedef void(* | tr_close_fp) (void *socket) |
A function pointer to a technology specific close function. | |
typedef int(* | tr_open_fp) (void *socket) |
A function pointer to a technology specific open function. | |
typedef void(* | tr_free_fp) (struct tr_socket *tr_sock) |
A function pointer to a technology specific free function. | |
typedef int(* | tr_recv_fp) (const void *socket, void *pdu, const size_t len, const time_t timeout) |
A function pointer to a technology specific recv function. | |
typedef int(* | tr_send_fp) (const void *socket, const void *pdu, const size_t len, const time_t timeout) |
A function pointer to a technology specific send function. | |
typedef const char *(* | tr_ident_fp) (void *socket) |
A function pointer to a technology specific info function. | |
Enumerations | |
enum | tr_rtvals { TR_SUCCESS = 0 , TR_ERROR = -1 , TR_WOULDBLOCK = -2 , TR_INTR = -3 , TR_CLOSED = -4 } |
The return values for tr_ functions. More... | |
Functions | |
int | tr_open (struct tr_socket *socket) |
Establish the connection. | |
void | tr_close (struct tr_socket *socket) |
Close the socket connection. | |
void | tr_free (struct tr_socket *socket) |
Deallocates all memory that the passed socket uses. | |
int | tr_recv (const struct tr_socket *socket, void *buf, const size_t len, const time_t timeout) |
Receives <= len Bytes data from the socket. | |
int | tr_send (const struct tr_socket *socket, const void *pdu, const size_t len, const time_t timeout) |
Send <= len Bytes data over the socket. | |
int | tr_send_all (const struct tr_socket *socket, const void *pdu, const size_t len, const time_t timeout) |
Repeatedly calls tr_send(..) till len Bytes were sent, the timeout expired or an error occurred. | |
int | tr_recv_all (const struct tr_socket *socket, const void *buf, const size_t len, const time_t timeout) |
Repeatedly calls tr_recv(..) till len Bytes were received, the timeout expired or an error occurred. | |
const char * | tr_ident (struct tr_socket *socket) |
Returns an identifier for the socket endpoint, eg host:port. | |
The RTR transport sockets implement the communication channel (e.g., SSH, TCP, TCP-AO) between an RTR server and client.
Before using the transport socket, a tr_socket must be initialized based on a protocol-dependent init function (e.g., tr_tcp_init()).
The tr_* functions call the corresponding function pointers, which are passed in the tr_socket struct, and forward the remaining arguments.
#define RTRLIB_TRANSPORT_CONNECT_TIMEOUT_DEFAULT 30 |
#include <rtrlib/transport/transport.h>
Default connect timeout.
typedef void(* tr_close_fp) (void *socket) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific close function.
typedef void(* tr_free_fp) (struct tr_socket *tr_sock) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific free function.
All memory associated with the tr_socket will be freed.
typedef const char *(* tr_ident_fp) (void *socket) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific info function.
typedef int(* tr_open_fp) (void *socket) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific open function.
typedef int(* tr_recv_fp) (const void *socket, void *pdu, const size_t len, const time_t timeout) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific recv function.
typedef int(* tr_send_fp) (const void *socket, const void *pdu, const size_t len, const time_t timeout) |
#include <rtrlib/transport/transport.h>
A function pointer to a technology specific send function.
enum tr_rtvals |
#include <rtrlib/transport/transport.h>
The return values for tr_ functions.
Enumerator | |
---|---|
TR_SUCCESS | Operation was successful. |
TR_ERROR | Error occurred. |
TR_WOULDBLOCK | No data is available on the socket. |
TR_INTR | Call was interrupted from a signal. |
TR_CLOSED | Connection closed. |
void tr_close | ( | struct tr_socket * | socket | ) |
#include <rtrlib/transport/transport_private.h>
Close the socket connection.
[in] | socket | Socket that will be closed. |
void tr_free | ( | struct tr_socket * | socket | ) |
#include <rtrlib/transport/transport_private.h>
Deallocates all memory that the passed socket uses.
Socket have to be closed before.
[in] | socket | which will be freed. |
const char * tr_ident | ( | struct tr_socket * | socket | ) |
#include <rtrlib/transport/transport_private.h>
Returns an identifier for the socket endpoint, eg host:port.
[in] | socket | return Pointer to a \0 terminated String return NULL on error |
int tr_open | ( | struct tr_socket * | socket | ) |
#include <rtrlib/transport/transport_private.h>
Establish the connection.
[in] | socket | Socket that will be used. |
int tr_recv | ( | const struct tr_socket * | socket, |
void * | buf, | ||
const size_t | len, | ||
const time_t | timeout | ||
) |
#include <rtrlib/transport/transport_private.h>
Receives <= len Bytes data from the socket.
[in] | socket | Socket that will be used. |
[out] | buf | Received data, must be an allocated memory area of >=pdu_len bytes. |
[in] | len | Size of pdu in Bytes. |
[in] | timeout | Max. seconds the function will block till len data was received. |
int tr_recv_all | ( | const struct tr_socket * | socket, |
const void * | buf, | ||
const size_t | len, | ||
const time_t | timeout | ||
) |
#include <rtrlib/transport/transport_private.h>
Repeatedly calls tr_recv(..) till len Bytes were received, the timeout expired or an error occurred.
[in] | socket | Socket that will be used. |
[out] | buf | Received data, must be an allocated memory area of >=len bytes. |
[in] | len | Size of pdu in Bytes. |
[in] | timeout | Max. seconds the functions should try to receive len data till it returns. |
int tr_send | ( | const struct tr_socket * | socket, |
const void * | pdu, | ||
const size_t | len, | ||
const time_t | timeout | ||
) |
#include <rtrlib/transport/transport_private.h>
Send <= len Bytes data over the socket.
[in] | socket | Socket that will be used. |
[out] | pdu | Data that will be be sent. |
[in] | len | Size of pdu in Bytes. |
[in] | timeout | Max. seconds the function should try to send the data till it returns. |
int tr_send_all | ( | const struct tr_socket * | socket, |
const void * | pdu, | ||
const size_t | len, | ||
const time_t | timeout | ||
) |
#include <rtrlib/transport/transport_private.h>
Repeatedly calls tr_send(..) till len Bytes were sent, the timeout expired or an error occurred.
[in] | socket | Socket that will be used. |
[out] | pdu | Data that will be be sent. |
[in] | len | Size of pdu in Bytes. |
[in] | timeout | Max. seconds the functions should try to send pdu till it returns. |