libosmo-netif  0.2.0-dirty
Osmocom network interface library
src/datagram.c File Reference

Osmocom datagram socket helpers. More...

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <time.h>
#include <sys/fcntl.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/select.h>
#include <osmocom/core/utils.h>
#include <osmocom/gsm/tlv.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/logging.h>
#include <osmocom/core/talloc.h>
#include <osmocom/core/socket.h>
#include <osmocom/netif/datagram.h>

Data Structures

struct  osmo_dgram_tx
struct  osmo_dgram_rx
struct  osmo_dgram

Defines

#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.
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.
void osmo_dgram_tx_set_addr (struct osmo_dgram_tx *conn, const char *addr)
 Set the remote address to which we transmit.
void osmo_dgram_tx_set_port (struct osmo_dgram_tx *conn, uint16_t port)
 Set the remote port to which we transmit.
void osmo_dgram_tx_set_local_addr (struct osmo_dgram_tx *conn, const char *addr)
 Set the local address from which we transmit.
void osmo_dgram_tx_set_local_port (struct osmo_dgram_tx *conn, uint16_t port)
 Set the local port from which we transmit.
void osmo_dgram_tx_set_data (struct osmo_dgram_tx *conn, void *data)
 Set application private data of the datagram transmitter.
void osmo_dgram_tx_destroy (struct osmo_dgram_tx *conn)
 Destroy a Osmocom datagram transmitter.
int osmo_dgram_tx_open (struct osmo_dgram_tx *conn)
 Open connection of an Osmocom datagram transmitter.
void osmo_dgram_tx_send (struct osmo_dgram_tx *conn, struct msgb *msg)
 Enqueue data to be sent via an Osmocom datagram transmitter.
int osmo_dgram_rx_recv (struct osmo_dgram_rx *conn, struct msgb *msg)
 Receive data via Osmocom datagram receiver.
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.
void osmo_dgram_rx_set_addr (struct osmo_dgram_rx *conn, const char *addr)
 Set the local address to which we bind.
void osmo_dgram_rx_set_port (struct osmo_dgram_rx *conn, uint16_t port)
 Set the local port to which we bind.
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.
void osmo_dgram_rx_destroy (struct osmo_dgram_rx *conn)
 Destroy the datagram receiver. Releases Memory.
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.
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!
static int dgram_rx_cb (struct osmo_dgram_rx *rx)
struct osmo_dgramosmo_dgram_create (void *ctx)
 Create an Osmocom datagram transceiver (bidirectional)
void osmo_dgram_destroy (struct osmo_dgram *conn)
 Destroy a Osmocom datagram transceiver.
void osmo_dgram_set_local_addr (struct osmo_dgram *conn, const char *addr)
 Set the local address to which we bind.
void osmo_dgram_set_remote_addr (struct osmo_dgram *conn, const char *addr)
 Set the remote address to which we transmit/connect.
void osmo_dgram_set_local_port (struct osmo_dgram *conn, uint16_t port)
 Set the local port to which we bind.
void osmo_dgram_set_remote_port (struct osmo_dgram *conn, uint16_t port)
 Set the remote port to which we transmit.
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.
void osmo_dgram_set_data (struct osmo_dgram *conn, void *data)
 Set application private data of the datagram transmitter.
void * osmo_dgram_get_data (struct osmo_dgram *conn)
 Get application private data of the datagram transceiver.
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.
void osmo_dgram_close (struct osmo_dgram *conn)
 Close an Osmocom Datagram Transceiver.
void osmo_dgram_send (struct osmo_dgram *conn, struct msgb *msg)
 Enqueue data to be sent via an Osmocom datagram transceiver.
int osmo_dgram_recv (struct osmo_dgram *conn, struct msgb *msg)
 Receive data via Osmocom datagram transceiver.

Variables

struct osmo_dgram_tx __attribute__

Detailed Description

Osmocom datagram socket helpers.

 All Data Structures Files Functions