libosmo-netif  0.0.7.20171026
Osmocom network interface library
Osmocom Datagram Socket

Files

file  datagram.c
 Osmocom datagram socket helpers.
 

Data Structures

struct  osmo_dgram_tx
 
struct  osmo_dgram_rx
 
struct  osmo_dgram
 

Macros

#define OSMO_DGRAM_CLI_F_RECONF   (1 << 0)
 
#define OSMO_DGRAM_RX_F_RECONF   (1 << 0)
 

Functions

void osmo_dgram_tx_close (struct osmo_dgram_tx *conn)
 Close an Osmocom Datagram Transmitter. More...
 
static int osmo_dgram_tx_write (struct osmo_dgram_tx *conn)
 
static int osmo_dgram_tx_fd_cb (struct osmo_fd *ofd, unsigned int what)
 
struct osmo_dgram_txosmo_dgram_tx_create (void *ctx)
 Create an Osmocom datagram transmitter. More...
 
void osmo_dgram_tx_set_addr (struct osmo_dgram_tx *conn, const char *addr)
 Set the remote address to which we transmit. More...
 
void osmo_dgram_tx_set_port (struct osmo_dgram_tx *conn, uint16_t port)
 Set the remote port to which we transmit. More...
 
void osmo_dgram_tx_set_local_addr (struct osmo_dgram_tx *conn, const char *addr)
 Set the local address from which we transmit. More...
 
void osmo_dgram_tx_set_local_port (struct osmo_dgram_tx *conn, uint16_t port)
 Set the local port from which we transmit. More...
 
void osmo_dgram_tx_set_data (struct osmo_dgram_tx *conn, void *data)
 Set application private data of the datagram transmitter. More...
 
void osmo_dgram_tx_destroy (struct osmo_dgram_tx *conn)
 Destroy a Osmocom datagram transmitter. More...
 
int osmo_dgram_tx_open (struct osmo_dgram_tx *conn)
 Open connection of an Osmocom datagram transmitter. More...
 
void osmo_dgram_tx_send (struct osmo_dgram_tx *conn, struct msgb *msg)
 Enqueue data to be sent via an Osmocom datagram transmitter. More...
 
int osmo_dgram_rx_recv (struct osmo_dgram_rx *conn, struct msgb *msg)
 Receive data via Osmocom datagram receiver. More...
 
static void osmo_dgram_rx_read (struct osmo_dgram_rx *conn)
 
static int osmo_dgram_rx_cb (struct osmo_fd *ofd, unsigned int what)
 
struct osmo_dgram_rxosmo_dgram_rx_create (void *ctx)
 Create an Osmocom datagram receiver. More...
 
void osmo_dgram_rx_set_addr (struct osmo_dgram_rx *conn, const char *addr)
 Set the local address to which we bind. More...
 
void osmo_dgram_rx_set_port (struct osmo_dgram_rx *conn, uint16_t port)
 Set the local port to which we bind. More...
 
void osmo_dgram_rx_set_read_cb (struct osmo_dgram_rx *conn, int(*read_cb)(struct osmo_dgram_rx *conn))
 Set the read() call-back of the datagram receiver. More...
 
void osmo_dgram_rx_destroy (struct osmo_dgram_rx *conn)
 Destroy the datagram receiver. Releases Memory. More...
 
int osmo_dgram_rx_open (struct osmo_dgram_rx *conn)
 Open the datagram receiver. This actually initializes the underlying socket and binds it to the configured ip/port. More...
 
void osmo_dgram_rx_close (struct osmo_dgram_rx *conn)
 Close the datagram receiver and unregister from select loop Does not destroy the datagram receiver, merely closes it! More...
 
static int dgram_rx_cb (struct osmo_dgram_rx *rx)
 
struct osmo_dgramosmo_dgram_create (void *ctx)
 Create an Osmocom datagram transceiver (bidirectional) More...
 
void osmo_dgram_destroy (struct osmo_dgram *conn)
 Destroy a Osmocom datagram transceiver. More...
 
void osmo_dgram_set_local_addr (struct osmo_dgram *conn, const char *addr)
 Set the local address to which we bind. More...
 
void osmo_dgram_set_remote_addr (struct osmo_dgram *conn, const char *addr)
 Set the remote address to which we transmit/connect. More...
 
void osmo_dgram_set_local_port (struct osmo_dgram *conn, uint16_t port)
 Set the local port to which we bind. More...
 
void osmo_dgram_set_remote_port (struct osmo_dgram *conn, uint16_t port)
 Set the remote port to which we transmit. More...
 
void osmo_dgram_set_read_cb (struct osmo_dgram *conn, int(*read_cb)(struct osmo_dgram *conn))
 Set the read() call-back of the datagram receiver. More...
 
void osmo_dgram_set_data (struct osmo_dgram *conn, void *data)
 Set application private data of the datagram transmitter. More...
 
void * osmo_dgram_get_data (struct osmo_dgram *conn)
 Get application private data of the datagram transceiver. More...
 
int osmo_dgram_open (struct osmo_dgram *conn)
 Open the datagram transceiver. This actually initializes the underlying sockets and binds/connects them to the configured ips/ports. More...
 
void osmo_dgram_close (struct osmo_dgram *conn)
 Close an Osmocom Datagram Transceiver. More...
 
void osmo_dgram_send (struct osmo_dgram *conn, struct msgb *msg)
 Enqueue data to be sent via an Osmocom datagram transceiver. More...
 
int osmo_dgram_recv (struct osmo_dgram *conn, struct msgb *msg)
 Receive data via Osmocom datagram transceiver. More...
 

Variables

struct osmo_dgram_tx __attribute__
 

Detailed Description

Function Documentation

◆ osmo_dgram_close()

void osmo_dgram_close ( struct osmo_dgram conn)

Close an Osmocom Datagram Transceiver.

Parameters
[in]connOsmocom Datagram Transceiver to be closed We unregister the socket fds from the osmocom select() loop and close them.

References osmo_dgram_rx_close(), and osmo_dgram_tx_close().

◆ osmo_dgram_create()

struct osmo_dgram* osmo_dgram_create ( void *  ctx)

Create an Osmocom datagram transceiver (bidirectional)

Parameters
[in]ctxtalloc context from which to allocate memory This function allocates a new osmo_dgram and initializes it with default values. Internally, the Transceiver is based on a tuple of transmitter (osmo_dgram_tx) and receiver (osmo_dgram_rx)
Returns
Osmocom Datagram Transceiver; NULL on error

References osmo_dgram_rx_create(), and osmo_dgram_rx_set_read_cb().

◆ osmo_dgram_destroy()

void osmo_dgram_destroy ( struct osmo_dgram conn)

Destroy a Osmocom datagram transceiver.

Parameters
[in]connDatagram Transceiver to destroy

References osmo_dgram_rx_destroy(), and osmo_dgram_tx_destroy().

◆ osmo_dgram_get_data()

void* osmo_dgram_get_data ( struct osmo_dgram conn)

Get application private data of the datagram transceiver.

Parameters
[in]connDatagram Transceiver
Returns
Application private data, as set by osmo_dgram_set_data()

◆ osmo_dgram_open()

int osmo_dgram_open ( struct osmo_dgram conn)

Open the datagram transceiver. This actually initializes the underlying sockets and binds/connects them to the configured ips/ports.

Parameters
[in]connDatagram Transceiver to open

References osmo_dgram_rx_close(), osmo_dgram_rx_open(), and osmo_dgram_tx_open().

◆ osmo_dgram_recv()

int osmo_dgram_recv ( struct osmo_dgram conn,
struct msgb *  msg 
)

Receive data via Osmocom datagram transceiver.

Parameters
[in]connDatagram Transceiver from which to receive
msgpre-allocate message buffer to which received data is appended
Returns
number of bytes read, negative on error.

References osmo_dgram_rx_recv().

◆ osmo_dgram_rx_close()

void osmo_dgram_rx_close ( struct osmo_dgram_rx conn)

Close the datagram receiver and unregister from select loop Does not destroy the datagram receiver, merely closes it!

Parameters
[in]connStream Server Link to close

Referenced by osmo_dgram_close(), osmo_dgram_open(), and osmo_dgram_rx_destroy().

◆ osmo_dgram_rx_create()

struct osmo_dgram_rx* osmo_dgram_rx_create ( void *  ctx)

Create an Osmocom datagram receiver.

Parameters
[in]ctxtalloc context from which to allocate memory This function allocates a new osmo_dgram_rx and initializes it with default values
Returns
Datagram Receiver; NULL on error

Referenced by osmo_dgram_create().

◆ osmo_dgram_rx_destroy()

void osmo_dgram_rx_destroy ( struct osmo_dgram_rx conn)

Destroy the datagram receiver. Releases Memory.

Parameters
[in]connDatagram Receiver

References osmo_dgram_rx_close().

Referenced by osmo_dgram_destroy().

◆ osmo_dgram_rx_open()

int osmo_dgram_rx_open ( struct osmo_dgram_rx conn)

Open the datagram receiver. This actually initializes the underlying socket and binds it to the configured ip/port.

Parameters
[in]connDatagram Receiver to open

Referenced by osmo_dgram_open().

◆ osmo_dgram_rx_recv()

int osmo_dgram_rx_recv ( struct osmo_dgram_rx conn,
struct msgb *  msg 
)

Receive data via Osmocom datagram receiver.

Parameters
[in]connDatagram Receiver from which to receive
msgpre-allocate message buffer to which received data is appended
Returns
number of bytes read (might be 0 for empty UDP packet), negative on error.

Referenced by osmo_dgram_recv().

◆ osmo_dgram_rx_set_addr()

void osmo_dgram_rx_set_addr ( struct osmo_dgram_rx conn,
const char *  addr 
)

Set the local address to which we bind.

Parameters
[in]connDatagram Receiver to modify
[in]addrLocal IP address

Referenced by osmo_dgram_set_local_addr().

◆ osmo_dgram_rx_set_port()

void osmo_dgram_rx_set_port ( struct osmo_dgram_rx conn,
uint16_t  port 
)

Set the local port to which we bind.

Parameters
[in]connDatagram Receiver to modify
[in]portLocal port number

Referenced by osmo_dgram_set_local_port().

◆ osmo_dgram_rx_set_read_cb()

void osmo_dgram_rx_set_read_cb ( struct osmo_dgram_rx conn,
int(*)(struct osmo_dgram_rx *conn)  read_cb 
)

Set the read() call-back of the datagram receiver.

Parameters
[in]connDatagram Receiver to modify
[in]read_cbCall-back function executed after read()

Referenced by osmo_dgram_create().

◆ osmo_dgram_send()

void osmo_dgram_send ( struct osmo_dgram conn,
struct msgb *  msg 
)

Enqueue data to be sent via an Osmocom datagram transceiver.

Parameters
[in]connDatagram Transceiver through which we want to send
[in]msgMessage buffer to enqueue in transmit queue

References osmo_dgram_tx_send().

◆ osmo_dgram_set_data()

void osmo_dgram_set_data ( struct osmo_dgram conn,
void *  data 
)

Set application private data of the datagram transmitter.

Parameters
[in]connDatagram Transmitter to modify
[in]dataUser-specific data (available in call-back functions)

◆ osmo_dgram_set_local_addr()

void osmo_dgram_set_local_addr ( struct osmo_dgram conn,
const char *  addr 
)

Set the local address to which we bind.

Parameters
[in]connDatagram Transceiver to modify
[in]addrLocal IP address

References osmo_dgram_rx_set_addr().

◆ osmo_dgram_set_local_port()

void osmo_dgram_set_local_port ( struct osmo_dgram conn,
uint16_t  port 
)

Set the local port to which we bind.

Parameters
[in]connDatagram Transceiver to modify
[in]portLocal Port Number

References osmo_dgram_rx_set_port().

◆ osmo_dgram_set_read_cb()

void osmo_dgram_set_read_cb ( struct osmo_dgram conn,
int(*)(struct osmo_dgram *conn)  read_cb 
)

Set the read() call-back of the datagram receiver.

Parameters
[in]connDatagram Receiver to modify
[in]read_cbCall-back function executed after read()

◆ osmo_dgram_set_remote_addr()

void osmo_dgram_set_remote_addr ( struct osmo_dgram conn,
const char *  addr 
)

Set the remote address to which we transmit/connect.

Parameters
[in]connDatagram Transceiver to modify
[in]addrRemote IP address

References osmo_dgram_tx_set_addr().

◆ osmo_dgram_set_remote_port()

void osmo_dgram_set_remote_port ( struct osmo_dgram conn,
uint16_t  port 
)

Set the remote port to which we transmit.

Parameters
[in]connDatagram Transceiver to modify
[in]portRemote Port Number

References osmo_dgram_tx_set_port().

◆ osmo_dgram_tx_close()

void osmo_dgram_tx_close ( struct osmo_dgram_tx conn)

Close an Osmocom Datagram Transmitter.

Parameters
[in]connOsmocom Datagram Transmitter to be closed We unregister the socket fd from the osmocom select() loop abstraction and close the socket

Referenced by osmo_dgram_close(), and osmo_dgram_tx_destroy().

◆ osmo_dgram_tx_create()

struct osmo_dgram_tx* osmo_dgram_tx_create ( void *  ctx)

Create an Osmocom datagram transmitter.

Parameters
[in]ctxtalloc context from which to allocate memory This function allocates a new osmo_dgram_tx and initializes it with default values
Returns
Osmocom Datagram Transmitter; NULL on error

◆ osmo_dgram_tx_destroy()

void osmo_dgram_tx_destroy ( struct osmo_dgram_tx conn)

Destroy a Osmocom datagram transmitter.

Parameters
[in]connDatagram Transmitter to destroy

References osmo_dgram_tx_close().

Referenced by osmo_dgram_destroy().

◆ osmo_dgram_tx_open()

int osmo_dgram_tx_open ( struct osmo_dgram_tx conn)

Open connection of an Osmocom datagram transmitter.

Parameters
[in]connStream Client to connect
Returns
0 on success; negative in case of error

Referenced by osmo_dgram_open().

◆ osmo_dgram_tx_send()

void osmo_dgram_tx_send ( struct osmo_dgram_tx conn,
struct msgb *  msg 
)

Enqueue data to be sent via an Osmocom datagram transmitter.

Parameters
[in]connDatagram Transmitter through which we want to send
[in]msgMessage buffer to enqueue in transmit queue

Referenced by osmo_dgram_send().

◆ osmo_dgram_tx_set_addr()

void osmo_dgram_tx_set_addr ( struct osmo_dgram_tx conn,
const char *  addr 
)

Set the remote address to which we transmit.

Parameters
[in]connDatagram Transmitter to modify
[in]addrRemote IP address

Referenced by osmo_dgram_set_remote_addr().

◆ osmo_dgram_tx_set_data()

void osmo_dgram_tx_set_data ( struct osmo_dgram_tx conn,
void *  data 
)

Set application private data of the datagram transmitter.

Parameters
[in]connDatagram Transmitter to modify
[in]dataUser-specific data (available in call-back functions)

◆ osmo_dgram_tx_set_local_addr()

void osmo_dgram_tx_set_local_addr ( struct osmo_dgram_tx conn,
const char *  addr 
)

Set the local address from which we transmit.

Parameters
[in]connDatagram Transmitter to modify
[in]addrLocal IP address

◆ osmo_dgram_tx_set_local_port()

void osmo_dgram_tx_set_local_port ( struct osmo_dgram_tx conn,
uint16_t  port 
)

Set the local port from which we transmit.

Parameters
[in]connDatagram Transmitter to modify
[in]portLocal Port Number

◆ osmo_dgram_tx_set_port()

void osmo_dgram_tx_set_port ( struct osmo_dgram_tx conn,
uint16_t  port 
)

Set the remote port to which we transmit.

Parameters
[in]connDatagram Transmitter to modify
[in]portRemote Port Number

Referenced by osmo_dgram_set_remote_port().