libosmo-netif  0.0.6.70-31b1
Osmocom network interface library
 All Data Structures Files Functions Modules
Osmocom Multiplex Protocol

Files

file  osmux.h
 
file  osmux.c
 Osmocom multiplex protocol helpers.
 

Data Structures

struct  osmux_hdr
 
struct  osmux_in_handle
 
struct  osmux_out_handle
 
struct  osmux_batch
 
struct  osmux_circuit
 
struct  osmux_input_state
 
struct  osmux_tx_handle
 

Macros

#define OSMUX_FT_SIGNAL   0
 
#define OSMUX_FT_VOICE_AMR   1
 
#define OSMUX_FT_DUMMY   2
 
#define OSMUX_MAX_CONCURRENT_CALLS   8
 
#define OSMUX_BATCH_DEFAULT_MAX   1472
 
#define DELTA_RTP_MSG   20000
 
#define DELTA_RTP_TIMESTAMP   160
 
#define SNPRINTF_BUFFER_SIZE(ret, size, len, offset)
 

Functions

struct osmux_hdr __attribute__ ((packed))
 
static uint8_t * osmux_get_payload (struct osmux_hdr *osmuxh)
 
int osmux_snprintf (char *buf, size_t size, struct msgb *msg)
 
void osmux_xfrm_input_init (struct osmux_in_handle *h)
 
void osmux_xfrm_input_fini (struct osmux_in_handle *h)
 
int osmux_xfrm_input_open_circuit (struct osmux_in_handle *h, int ccid, int dummy)
 
void osmux_xfrm_input_close_circuit (struct osmux_in_handle *h, int ccid)
 
int osmux_xfrm_input (struct osmux_in_handle *h, struct msgb *msg, int ccid)
 
void osmux_xfrm_input_deliver (struct osmux_in_handle *h)
 
void osmux_xfrm_output_init (struct osmux_out_handle *h, uint32_t rtp_ssrc)
 
int osmux_xfrm_output (struct osmux_hdr *osmuxh, struct osmux_out_handle *h, struct llist_head *list)
 
struct osmux_hdrosmux_xfrm_output_pull (struct msgb *msg)
 
void osmux_tx_sched (struct llist_head *list, void(*tx_cb)(struct msgb *msg, void *data), void *data)
 
static uint32_t osmux_get_payload_len (struct osmux_hdr *osmuxh)
 
static uint32_t osmux_ft_dummy_size (uint8_t amr_ft, uint8_t batch_factor)
 
static struct msgb * osmux_rebuild_rtp (struct osmux_out_handle *h, struct osmux_hdr *osmuxh, void *payload, int payload_len, bool first_pkt)
 
static int osmux_batch_enqueue (struct msgb *msg, struct osmux_circuit *circuit, uint8_t batch_factor)
 
static void osmux_batch_dequeue (struct msgb *msg, struct osmux_circuit *circuit)
 
static void osmux_circuit_del_msgs (struct osmux_batch *batch, struct osmux_circuit *circuit)
 
static int osmux_batch_put (struct osmux_batch *batch, struct osmux_input_state *state)
 
static int osmux_xfrm_encode_amr (struct osmux_batch *batch, struct osmux_input_state *state)
 
static void osmux_encode_dummy (struct osmux_batch *batch, uint8_t batch_factor, struct osmux_input_state *state)
 
static struct msgb * osmux_build_batch (struct osmux_batch *batch, uint32_t batch_size, uint8_t batch_factor)
 
static void osmux_batch_timer_expired (void *data)
 
static int osmux_rtp_amr_payload_len (struct msgb *msg, struct rtp_hdr *rtph)
 
static void osmux_replay_lost_packets (struct osmux_circuit *circuit, struct rtp_hdr *cur_rtph, int batch_factor)
 
static struct osmux_circuitosmux_batch_find_circuit (struct osmux_batch *batch, int ccid)
 
static struct osmux_circuitosmux_batch_add_circuit (struct osmux_batch *batch, int ccid, int dummy, uint8_t batch_factor)
 
static void osmux_batch_del_circuit (struct osmux_batch *batch, struct osmux_circuit *circuit)
 
static int osmux_batch_add (struct osmux_batch *batch, uint32_t batch_factor, struct msgb *msg, struct rtp_hdr *rtph, int ccid)
 
static void osmux_tx_cb (void *data)
 
static void osmux_tx (struct msgb *msg, struct timeval *when, void(*tx_cb)(struct msgb *msg, void *data), void *data)
 
static int osmux_snprintf_header (char *buf, size_t size, struct osmux_hdr *osmuxh)
 
static int osmux_snprintf_payload (char *buf, size_t size, const uint8_t *payload, int payload_len)
 

Variables

struct osmux_in_handle __attribute__
 
static void * osmux_ctx
 

Detailed Description

Macro Definition Documentation

#define SNPRINTF_BUFFER_SIZE (   ret,
  size,
  len,
  offset 
)
Value:
size += ret; \
if (ret > len) \
ret = len; \
offset += ret; \
len -= ret;

Function Documentation

int osmux_xfrm_input ( struct osmux_in_handle h,
struct msgb *  msg,
int  ccid 
)

osmux_xfrm_input - add RTP message to OSmux batch

Parameters
msgRTP message that you want to batch into one OSmux message

If 0 is returned, this indicates that the message has been batched or that an error occured and we have skipped the message. If 1 is returned, you have to invoke osmux_xfrm_input_deliver and try again.

The function takes care of releasing the messages in case of error and when building the batch.