libosmo-netif  1.4.0.19-26cd.202401052026
Osmocom network interface library
osmux_input.c File Reference

Osmocom multiplex protocol helpers (input) More...

#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/timer.h>
#include <osmocom/core/timer_compat.h>
#include <osmocom/core/select.h>
#include <osmocom/core/talloc.h>
#include <osmocom/core/logging.h>
#include <osmocom/netif/amr.h>
#include <osmocom/netif/rtp.h>
#include <osmocom/netif/osmux.h>
#include <arpa/inet.h>

Data Structures

struct  osmux_link
 
struct  osmux_circuit
 
struct  osmux_in_req
 
struct  osmux_input_state
 

Macros

#define DELTA_RTP_MSG   20000
 
#define DELTA_RTP_TIMESTAMP   160
 
#define LOGMUXLK_(link, lvl, fmt, args ...)
 
#define LOGMUXLK(link, lvl, fmt, args ...)    LOGMUXLK_(link, lvl, " " fmt, ## args)
 
#define LOGMUXCID(link, circuit, lvl, fmt, args ...)
 

Functions

static uint32_t osmux_ft_dummy_size (uint8_t amr_ft, uint8_t batch_factor)
 
static int osmux_circuit_enqueue (struct osmux_link *link, struct osmux_circuit *circuit, struct msgb *msg)
 
static void osmux_circuit_dequeue (struct osmux_circuit *circuit, struct msgb *msg)
 
static void osmux_circuit_del_msgs (struct osmux_link *link, struct osmux_circuit *circuit)
 
static int osmux_link_put (struct osmux_link *link, struct osmux_input_state *state)
 
static void osmux_encode_dummy (struct osmux_link *link, struct osmux_input_state *state)
 
static struct msgb * osmux_build_batch (struct osmux_link *link)
 
void osmux_xfrm_input_deliver (struct osmux_in_handle *h)
 
static void osmux_link_timer_expired (void *data)
 
static int osmux_rtp_amr_payload_len (struct amr_hdr *amrh, uint32_t amr_len)
 
static int osmux_circuit_get_last_stored_amr_ft (struct osmux_circuit *circuit)
 
static struct osmux_circuitosmux_link_find_circuit (struct osmux_link *link, int ccid)
 
static void osmux_link_del_circuit (struct osmux_link *link, struct osmux_circuit *circuit)
 
static int osmux_link_add (struct osmux_link *link, const struct osmux_in_req *req)
 
static int osmux_replay_lost_packets (struct osmux_link *link, const struct osmux_in_req *req)
 
static int osmux_link_handle_rtp_req (struct osmux_link *link, struct osmux_in_req *req)
 
int osmux_xfrm_input (struct osmux_in_handle *h, struct msgb *msg, int ccid)
 
static int osmux_xfrm_input_talloc_destructor (struct osmux_in_handle *h)
 
struct osmux_in_handleosmux_xfrm_input_alloc (void *ctx)
 
void osmux_xfrm_input_init (struct osmux_in_handle *h) OSMO_DEPRECATED("Use osmux_xfrm_input_alloc() instead")
 
int osmux_xfrm_input_set_batch_factor (struct osmux_in_handle *h, uint8_t batch_factor)
 
void osmux_xfrm_input_set_batch_size (struct osmux_in_handle *h, uint16_t batch_size)
 
void osmux_xfrm_input_set_initial_seqnum (struct osmux_in_handle *h, uint8_t osmux_seqnum)
 
void osmux_xfrm_input_set_deliver_cb (struct osmux_in_handle *h, void(*deliver_cb)(struct msgb *msg, void *data), void *data)
 
void * osmux_xfrm_input_get_deliver_cb_data (struct osmux_in_handle *h)
 
void osmux_xfrm_input_set_name (struct osmux_in_handle *h, const char *name)
 
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)
 
void osmux_xfrm_input_fini (struct osmux_in_handle *h) OSMO_DEPRECATED("Use talloc_free() instead")
 

Variables

static void * osmux_ctx
 
static unsigned int next_default_name_idx = 0
 Allocate a new osmux in handle (osmux source, tx side) More...
 

Detailed Description

Osmocom multiplex protocol helpers (input)