html/ 0000755 0001750 0001750 00000000000 14642372355 011015 5 ustar build build html/jibuf_8h.html 0000644 0001750 0001750 00000027640 14642372355 013412 0 ustar build build
libosmo-netif 1.4.0
Osmocom network interface library
|
Osmocom Jitter Buffer helpers. More...
#include <stdint.h>
#include <stdbool.h>
#include <time.h>
#include <osmocom/core/timer.h>
Go to the source code of this file.
Data Structures | |
struct | osmo_jibuf |
A structure representing a single instance of a jitter buffer. More... | |
Typedefs | |
typedef void(* | osmo_jibuf_dequeue_cb) (struct msgb *msg, void *data) |
Functions | |
struct osmo_jibuf * | osmo_jibuf_alloc (void *talloc_ctx) |
Allocate a new jitter buffer instance. More... | |
void | osmo_jibuf_delete (struct osmo_jibuf *jb) |
Destroy a previously allocated jitter buffer instance. More... | |
int | osmo_jibuf_enqueue (struct osmo_jibuf *jb, struct msgb *msg) |
Try to enqueue a packet into the jitter buffer. More... | |
bool | osmo_jibuf_empty (struct osmo_jibuf *jb) |
Check whether the jitter buffer instance has packets queued or not. More... | |
void | osmo_jibuf_set_min_delay (struct osmo_jibuf *jb, uint32_t min_delay) |
Set minimum buffer size for the jitter buffer. More... | |
void | osmo_jibuf_set_max_delay (struct osmo_jibuf *jb, uint32_t max_delay) |
Set maximum buffer size for the jitter buffer. More... | |
void | osmo_jibuf_enable_skew_compensation (struct osmo_jibuf *jb, bool enable) |
Toggle use of skew detection and compensation mechanism. More... | |
void | osmo_jibuf_set_dequeue_cb (struct osmo_jibuf *jb, osmo_jibuf_dequeue_cb dequeue_cb, void *cb_data) |
Set dequeue callback for the jitter buffer. More... | |
Osmocom Jitter Buffer helpers.
libosmo-netif 1.4.0
Osmocom network interface library
|
Files | |
file | osmux.h |
file | osmux.c |
Osmocom multiplex protocol helpers. | |
file | osmux_input.c |
Osmocom multiplex protocol helpers (input) | |
file | osmux_output.c |
Osmocom multiplex protocol helpers (output) | |
Data Structures | |
struct | osmux_hdr |
struct | osmux_in_handle |
struct | osmux_out_handle |
struct | osmux_link |
struct | osmux_circuit |
struct | osmux_in_req |
struct | osmux_input_state |
struct | osmux_tx_handle |
Macros | |
#define | OSMUX_DEFAULT_PORT 1984 |
#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 | SNPRINTF_BUFFER_SIZE(ret, remain, offset) |
#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 ...) |
#define | DELTA_RTP_MSG 20000 |
#define | DELTA_RTP_TIMESTAMP 160 |
Typedefs | |
typedef struct msgb *(* | rtp_msgb_alloc_cb_t) (void *rtp_msgb_alloc_priv_data, unsigned int msg_len) |
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) |
struct osmux_in_handle * | osmux_xfrm_input_alloc (void *ctx) |
void | osmux_xfrm_input_init (struct osmux_in_handle *h) OSMO_DEPRECATED("Use osmux_xfrm_input_alloc() instead") |
void | osmux_xfrm_input_fini (struct osmux_in_handle *h) OSMO_DEPRECATED("Use talloc_free() instead") |
void | osmux_xfrm_input_set_name (struct osmux_in_handle *h, const char *name) |
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) |
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) |
struct osmux_out_handle * | osmux_xfrm_output_alloc (void *ctx) |
Allocate a new osmux out handle. More... | |
void | osmux_xfrm_output_init (struct osmux_out_handle *h, uint32_t rtp_ssrc) OSMO_DEPRECATED("Use osmux_xfrm_output_alloc() and osmux_xfrm_output_set_rtp_*() instead") |
void | osmux_xfrm_output_init2 (struct osmux_out_handle *h, uint32_t rtp_ssrc, uint8_t rtp_payload_type) OSMO_DEPRECATED("Use osmux_xfrm_output_alloc() and osmux_xfrm_output_set_rtp_*() instead") |
void | osmux_xfrm_output_set_rtp_ssrc (struct osmux_out_handle *h, uint32_t rtp_ssrc) |
Set SSRC of generated RTP packets from Osmux frames. More... | |
void | osmux_xfrm_output_set_rtp_pl_type (struct osmux_out_handle *h, uint32_t rtp_payload_type) |
Set Payload Type of generated RTP packets from Osmux frames. More... | |
void | osmux_xfrm_output_set_tx_cb (struct osmux_out_handle *h, void(*tx_cb)(struct msgb *msg, void *data), void *data) |
Set transmission callback to call when a generated RTP packet is to be transmitted. More... | |
void | osmux_xfrm_output_set_rtp_msgb_alloc_cb (struct osmux_out_handle *h, rtp_msgb_alloc_cb_t cb, void *cb_data) |
Set callback to call when an RTP packet to be generated is to be allocated. More... | |
int | osmux_xfrm_output_sched (struct osmux_out_handle *h, struct osmux_hdr *osmuxh) |
Generate RTP packets from osmux frame AMR payload set and schedule them for transmission at appropriate time. More... | |
void | osmux_xfrm_output_flush (struct osmux_out_handle *h) |
Flush all scheduled RTP packets still pending to be transmitted. More... | |
struct osmux_hdr * | osmux_xfrm_output_pull (struct msgb *msg) |
static uint32_t | osmux_get_payload_len (struct osmux_hdr *osmuxh) |
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) |
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) |
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_circuit * | osmux_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) |
static int | osmux_xfrm_input_talloc_destructor (struct osmux_in_handle *h) |
static struct msgb * | osmux_rebuild_rtp (struct osmux_out_handle *h, struct osmux_hdr *osmuxh, void *payload, int payload_len, bool first_pkt) |
static void | osmux_xfrm_output_trigger (void *data) |
static int | osmux_xfrm_output_talloc_destructor (struct osmux_out_handle *h) |
static void | _osmux_xfrm_output_init (struct osmux_out_handle *h, uint32_t rtp_ssrc, uint8_t rtp_payload_type) |
Variables | |
struct osmux_in_handle | __attribute__ |
static void * | osmux_ctx |
static unsigned int | next_default_name_idx = 0 |
Allocate a new osmux in handle (osmux source, tx side) More... | |
This code implements a variety of utility functions related to the OSMUX user-plane multiplexing protocol, an efficient alternative to plain UDP/RTP streams for voice transport in back-haul of cellular networks.
For information about the OSMUX protocol design, please see the OSMUX reference manual at http://ftp.osmocom.org/docs/latest/osmux-reference.pdf
#define LOGMUXCID | ( | link, | |
circuit, | |||
lvl, | |||
fmt, | |||
args ... | |||
) |
#define LOGMUXLK_ | ( | link, | |
lvl, | |||
fmt, | |||
args ... | |||
) |
#define SNPRINTF_BUFFER_SIZE | ( | ret, | |
remain, | |||
offset | |||
) |
int osmux_snprintf | ( | char * | buf, |
size_t | size, | ||
struct msgb * | msg | ||
) |
Print osmux header fields and payload from msg into buffer buf.
[out] | buf | buffer to store the output into |
[in] | len | length of buf in bytes |
[in] | msgb | message buffer containing one or more osmux frames |
If the output was truncated due to this limit, then the return value is the number of characters (excluding the terminating null byte) which would have been written to the final string if enough space had been available.
int osmux_xfrm_input | ( | struct osmux_in_handle * | h, |
struct msgb * | msg, | ||
int | ccid | ||
) |
osmux_xfrm_input - add RTP message to OSmux batch
msg | RTP message that you want to batch into one OSmux message |
If 0 is returned, this indicates that the message has been batched and the msgb is now owned by the osmux layer. If negative value is returned, an error occurred and the message has been dropped (and freed). 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.
struct osmux_out_handle * osmux_xfrm_output_alloc | ( | void * | ctx | ) |
Allocate a new osmux out handle.
[in] | ctx | talloc context to use when allocating the returned struct |
This object contains configuration and state to handle a specific CID in incoming network Osmux messages, repackaging the frames for that CID as RTP packets and pushing them up the protocol stack. Returned pointer can be freed with regular talloc_free, queue will be flushed and all internal data will be freed.
void osmux_xfrm_output_flush | ( | struct osmux_out_handle * | h | ) |
Flush all scheduled RTP packets still pending to be transmitted.
[in] | h | the osmux out handle to flush |
This function will immediately call the transmit callback for all queued RTP packets, making sure the list ends up empty. It will also stop all internal timers to make sure the osmux_out_handle can be dropped or re-used by calling osmux_xfrm_output on it.
int osmux_xfrm_output_sched | ( | struct osmux_out_handle * | h, |
struct osmux_hdr * | osmuxh | ||
) |
Generate RTP packets from osmux frame AMR payload set and schedule them for transmission at appropriate time.
[in] | h | the osmux out handle handling a specific CID |
[in] | osmuxh | Buffer pointing to osmux frame header structure and AMR payload |
The osmux frame passed to this function must be of the type OSMUX_FT_VOICE_AMR. The generated RTP packets are kept into h's internal list and sent to the callback configured through osmux_xfrm_output_set_tx_cb when are ready to be transmitted according to schedule.
void osmux_xfrm_output_set_rtp_msgb_alloc_cb | ( | struct osmux_out_handle * | h, |
rtp_msgb_alloc_cb_t | cb, | ||
void * | cb_data | ||
) |
Set callback to call when an RTP packet to be generated is to be allocated.
[in] | h | the osmux out handle handling a specific CID |
[in] | cb | User defined msgb alloc function for generated RTP pkts |
[in] | cb_data | Opaque data pointer set by user and passed in cb |
void osmux_xfrm_output_set_rtp_pl_type | ( | struct osmux_out_handle * | h, |
uint32_t | rtp_payload_type | ||
) |
Set Payload Type of generated RTP packets from Osmux frames.
[in] | h | the osmux out handle handling a specific CID |
[in] | rtp_payload_type | the RTP Payload Type to set |
void osmux_xfrm_output_set_rtp_ssrc | ( | struct osmux_out_handle * | h, |
uint32_t | rtp_ssrc | ||
) |
Set SSRC of generated RTP packets from Osmux frames.
[in] | h | the osmux out handle handling a specific CID |
[in] | rtp_ssrc | the RTP SSRC to set |
void osmux_xfrm_output_set_tx_cb | ( | struct osmux_out_handle * | h, |
void(*)(struct msgb *msg, void *data) | tx_cb, | ||
void * | data | ||
) |
Set transmission callback to call when a generated RTP packet is to be transmitted.
[in] | h | the osmux out handle handling a specific CID |
[in] | osmuxh | Buffer pointing to osmux frame header structure and AMR payload |
This Function sets the callback called by the interal timer set by osmux_xfrm_out_sched function.
|
static |
Allocate a new osmux in handle (osmux source, tx side)
[in] | ctx | talloc context to use when allocating the returned struct |
This object contains configuration and state to handle a group of circuits (trunk), receiving RTP packets from the upper layer (API user) and sending batched & trunked Osmux messages containing all the data of those circuits down the stack outgoing network Osmux messages. Returned pointer can be freed with regular talloc_free, all pending messages in queue and all internal data will be freed.
libosmo-netif 1.4.0
Osmocom network interface library
|
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_circuit * | osmux_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_handle * | osmux_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... | |
Osmocom multiplex protocol helpers (input)
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
Data Fields | |
struct osmo_fd | ofd |
char * | name |
char | sockname [OSMO_SOCK_NAME_MAXLEN] |
char * | addr [OSMO_STREAM_MAX_ADDRS] |
uint8_t | addrcnt |
uint16_t | port |
int | sk_domain |
int | sk_type |
uint16_t | proto |
int(* | accept_cb )(struct osmo_stream_srv_link *srv, int fd) |
void * | data |
int | flags |
struct osmo_sock_init2_multiaddr_pars | ma_pars |
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
Osmocom Jitter Buffer helpers. More...
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/timer.h>
#include <osmocom/core/talloc.h>
#include <osmocom/core/logging.h>
#include <osmocom/core/utils.h>
#include <osmocom/netif/amr.h>
#include <osmocom/netif/rtp.h>
#include <osmocom/netif/jibuf.h>
#include <arpa/inet.h>
Data Structures | |
struct | osmo_jibuf_msgb_cb |
Macros | |
#define | SAMPLES_PER_PKT 160 |
#define | SAMPLE_RATE 8000 |
#define | JIBUF_DEFAULT_MIN_DELAY_MS 60 |
#define | JIBUF_DEFAULT_MAX_DELAY_MS 200 |
#define | JIBUF_REFERENCE_TS_FREQ 60 |
#define | JIBUF_BUFFER_RECALC_FREQ 40 |
#define | JIBUF_ALLOWED_PKT_DROP 3 |
#define | JIBUF_ALLOWED_PKT_CONSECUTIVE_DROP 1 |
#define | JIBUF_BUFFER_INC_STEP 20 |
#define | JIBUF_BUFFER_DEC_STEP 5 |
#define | JIBUF_SKEW_WEIGHT ((double)1/32) |
#define | JIBUF_MSGB_CB(__msgb) ((struct osmo_jibuf_msgb_cb *)&((__msgb)->cb[0])) |
Functions | |
static void | ms2timeval (struct timeval *ts, uint32_t ms) |
static uint32_t | timeval2ms (const struct timeval *ts) |
static int | clock_gettime_timeval (clockid_t clk_id, struct timeval *tp) |
static struct timeval * | msgb_scheduled_ts (const struct msgb *msg) |
static void | llist_add_sorted (struct msgb *msg, struct llist_head *msg_list) |
static void | enqueue_pkt (struct osmo_jibuf *jb, struct msgb *msg, bool is_syncpoint) |
static bool | msg_get_marker (struct msgb *msg) |
static uint16_t | msg_get_sequence (struct msgb *msg) |
static uint32_t | msg_get_timestamp (struct msgb *msg) |
static int32_t | samples2ms (int32_t samples) |
static int | calc_pkt_rel_delay (struct osmo_jibuf *jb, struct msgb *msg) |
static bool | msg_is_in_sequence (struct osmo_jibuf *jb, struct msgb *msg) |
static bool | msg_is_syncpoint (struct osmo_jibuf *jb, struct msgb *msg) |
static void | msg_set_as_reference (struct osmo_jibuf *jb, struct msgb *msg) |
static void | dequeue_msg (struct osmo_jibuf *jb, struct msgb *msg) |
static void | timer_expired (void *data) |
static void | recalc_clock_skew (struct osmo_jibuf *jb, int32_t rel_delay) |
static void | recalc_threshold_delay (struct osmo_jibuf *jb) |
struct osmo_jibuf * | osmo_jibuf_alloc (void *talloc_ctx) |
Allocate a new jitter buffer instance. More... | |
void | osmo_jibuf_delete (struct osmo_jibuf *jb) |
Destroy a previously allocated jitter buffer instance. More... | |
int | osmo_jibuf_enqueue (struct osmo_jibuf *jb, struct msgb *msg) |
Try to enqueue a packet into the jitter buffer. More... | |
bool | osmo_jibuf_empty (struct osmo_jibuf *jb) |
Check whether the jitter buffer instance has packets queued or not. More... | |
void | osmo_jibuf_set_min_delay (struct osmo_jibuf *jb, uint32_t min_delay) |
Set minimum buffer size for the jitter buffer. More... | |
void | osmo_jibuf_set_max_delay (struct osmo_jibuf *jb, uint32_t max_delay) |
Set maximum buffer size for the jitter buffer. More... | |
void | osmo_jibuf_enable_skew_compensation (struct osmo_jibuf *jb, bool enable) |
Toggle use of skew detection and compensation mechanism. More... | |
void | osmo_jibuf_set_dequeue_cb (struct osmo_jibuf *jb, osmo_jibuf_dequeue_cb dequeue_cb, void *cb_data) |
Set dequeue callback for the jitter buffer. More... | |
Osmocom Jitter Buffer helpers.
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
Data Fields | |
struct llist_head | head |
int | ccid |
struct llist_head | msg_list |
int | nmsgs |
int | dummy |
uint8_t | seq |
int32_t | last_transmitted_rtp_seq |
uint32_t | last_transmitted_rtp_ts |
libosmo-netif 1.4.0
Osmocom network interface library
|
Data Fields | |
void * | priv |
struct osmo_prim_srv_link * | link |
struct osmo_stream_srv * | stream |
libosmo-netif 1.4.0
Osmocom network interface library
|
Osmocom multiplex protocol helpers. More...
#include <stdio.h>
#include <string.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>
Macros | |
#define | SNPRINTF_BUFFER_SIZE(ret, remain, offset) |
Functions | |
static uint32_t | osmux_get_payload_len (struct osmux_hdr *osmuxh) |
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) |
int | osmux_snprintf (char *buf, size_t size, struct msgb *msg) |
Osmocom multiplex protocol helpers.
libosmo-netif 1.4.0
Osmocom network interface library
|
Osmocom stream socket helpers (client side) 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 <netinet/tcp.h>
#include <osmocom/core/timer.h>
#include <osmocom/core/select.h>
#include <osmocom/core/utils.h>
#include <osmocom/gsm/tlv.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/osmo_io.h>
#include <osmocom/core/panic.h>
#include <osmocom/core/logging.h>
#include <osmocom/core/talloc.h>
#include <osmocom/core/socket.h>
#include <osmocom/netif/stream.h>
#include <osmocom/netif/stream_private.h>
#include "config.h"
#include <osmocom/netif/sctp.h>
Data Structures | |
struct | osmo_stream_cli |
Macros | |
#define | LOGSCLI(cli, level, fmt, args...) |
#define | OSMO_STREAM_CLI_F_RECONF (1 << 0) |
#define | OSMO_STREAM_CLI_F_NODELAY (1 << 1) |
Enumerations | |
enum | osmo_stream_cli_state { STREAM_CLI_STATE_CLOSED , STREAM_CLI_STATE_WAIT_RECONNECT , STREAM_CLI_STATE_CONNECTING , STREAM_CLI_STATE_CONNECTED , STREAM_CLI_STATE_MAX } |
Functions | |
void | osmo_stream_cli_close (struct osmo_stream_cli *cli) |
Close an Osmocom Stream Client. More... | |
void | osmo_stream_cli_reconnect (struct osmo_stream_cli *cli) |
Re-connect an Osmocom Stream Client If re-connection is enabled for this client (which is the case unless negative timeout was explicitly set via osmo_stream_cli_set_reconnect_timeout() call), we close any existing connection (if any) and schedule a re-connect timer. | |
bool | osmo_stream_cli_is_connected (struct osmo_stream_cli *cli) |
Check if Osmocom Stream Client is in connected state. More... | |
static void | osmo_stream_cli_close_iofd (struct osmo_stream_cli *cli) |
static void | osmo_stream_cli_close_ofd (struct osmo_stream_cli *cli) |
static int | osmo_stream_cli_fd (const struct osmo_stream_cli *cli) |
static void | osmo_stream_cli_read (struct osmo_stream_cli *cli) |
static int | osmo_stream_cli_write (struct osmo_stream_cli *cli) |
static int | _setsockopt_nosigpipe (struct osmo_stream_cli *cli) |
static void | stream_cli_handle_connecting (struct osmo_stream_cli *cli, int res) |
static int | osmo_stream_cli_fd_cb (struct osmo_fd *ofd, unsigned int what) |
static void | cli_timer_cb (void *data) |
struct osmo_stream_cli * | osmo_stream_cli_create (void *ctx) |
Create an Osmocom stream client. More... | |
static void | stream_cli_iofd_read_cb (struct osmo_io_fd *iofd, int res, struct msgb *msg) |
static void | stream_cli_iofd_write_cb (struct osmo_io_fd *iofd, int res, struct msgb *msg) |
void | osmo_stream_cli_set_name (struct osmo_stream_cli *cli, const char *name) |
Set a name on the cli object (used during logging) More... | |
void | osmo_stream_cli_set_addr (struct osmo_stream_cli *cli, const char *addr) |
Set the remote address to which we connect. More... | |
int | osmo_stream_cli_set_addrs (struct osmo_stream_cli *cli, const char **addr, size_t addrcnt) |
Set the remote address set to which we connect. Useful for protocols allowing connecting to more than one address (such as SCTP) More... | |
void | osmo_stream_cli_set_port (struct osmo_stream_cli *cli, uint16_t port) |
Set the remote port number to which we connect. More... | |
void | osmo_stream_cli_set_local_port (struct osmo_stream_cli *cli, uint16_t port) |
Set the local port number for the socket (to be bound to) More... | |
void | osmo_stream_cli_set_local_addr (struct osmo_stream_cli *cli, const char *addr) |
Set the local address for the socket (to be bound to) More... | |
int | osmo_stream_cli_set_local_addrs (struct osmo_stream_cli *cli, const char **addr, size_t addrcnt) |
Set the local address set to which we connect. Useful for protocols allowing bind to more than one address (such as SCTP) More... | |
void | osmo_stream_cli_set_proto (struct osmo_stream_cli *cli, uint16_t proto) |
Set the protocol for the stream client socket. More... | |
int | osmo_stream_cli_set_type (struct osmo_stream_cli *cli, int type) |
Set the socket type for the stream server link. More... | |
int | osmo_stream_cli_set_domain (struct osmo_stream_cli *cli, int domain) |
Set the socket type for the stream server link. More... | |
void | osmo_stream_cli_set_reconnect_timeout (struct osmo_stream_cli *cli, int timeout) |
Set the reconnect time of the stream client socket. More... | |
void | osmo_stream_cli_set_data (struct osmo_stream_cli *cli, void *data) |
Set application private data of the stream client socket. More... | |
void * | osmo_stream_cli_get_data (struct osmo_stream_cli *cli) |
Get application private data of the stream client socket. More... | |
char * | osmo_stream_cli_get_sockname (const struct osmo_stream_cli *cli) |
Get the stream client socket description. More... | |
struct osmo_fd * | osmo_stream_cli_get_ofd (struct osmo_stream_cli *cli) |
Get Osmocom File Descriptor of the stream client socket. More... | |
void | osmo_stream_cli_set_connect_cb (struct osmo_stream_cli *cli, int(*connect_cb)(struct osmo_stream_cli *cli)) |
Set the call-back function called on connect of the stream client socket. More... | |
void | osmo_stream_cli_set_disconnect_cb (struct osmo_stream_cli *cli, int(*disconnect_cb)(struct osmo_stream_cli *cli)) |
Set the call-back function called on disconnect of the stream client socket. More... | |
void | osmo_stream_cli_set_read_cb (struct osmo_stream_cli *cli, int(*read_cb)(struct osmo_stream_cli *cli)) |
Set the call-back function called to read from the stream client socket This function will configure osmo_stream_cli to use osmo_ofd internally. More... | |
void | osmo_stream_cli_set_read_cb2 (struct osmo_stream_cli *cli, int(*read_cb)(struct osmo_stream_cli *cli, struct msgb *msg)) |
Set the call-back function called to read from the stream client socket This function will configure osmo_stream_cli to use osmo_iofd internally. More... | |
void | osmo_stream_cli_destroy (struct osmo_stream_cli *cli) |
Destroy a Osmocom stream client (includes close) More... | |
int | osmo_stream_cli_open2 (struct osmo_stream_cli *cli, int reconnect) |
DEPRECATED: use osmo_stream_cli_set_reconnect_timeout() or osmo_stream_cli_reconnect() instead! Open connection of an Osmocom stream client. More... | |
void | osmo_stream_cli_set_nodelay (struct osmo_stream_cli *cli, bool nodelay) |
Set the NODELAY socket option to avoid Nagle-like behavior Setting this to nodelay=true will automatically set the NODELAY socket option on any socket established via osmo_stream_cli_open or any re-connect. You have to set this before opening the socket. More... | |
int | osmo_stream_cli_open (struct osmo_stream_cli *cli) |
Open connection of an Osmocom stream client By default the client will automatically reconnect after default timeout. To disable this, use osmo_stream_cli_set_reconnect_timeout() before calling this function. More... | |
void | osmo_stream_cli_send (struct osmo_stream_cli *cli, struct msgb *msg) |
Enqueue data to be sent via an Osmocom stream client. More... | |
int | osmo_stream_cli_recv (struct osmo_stream_cli *cli, struct msgb *msg) |
Receive data via an Osmocom stream client. More... | |
void | osmo_stream_cli_clear_tx_queue (struct osmo_stream_cli *cli) |
int | osmo_stream_cli_set_param (struct osmo_stream_cli *cli, enum osmo_stream_cli_param par, void *val, size_t val_len) |
Variables | |
static const struct value_string | stream_cli_state_names [] |
static struct osmo_io_ops | osmo_stream_cli_ioops |
Osmocom stream socket helpers (client side)
libosmo-netif 1.4.0
Osmocom network interface library
|
Data Fields | |
void * | priv |
char * | addr |
int | log_cat |
struct osmo_stream_srv_link * | stream |
osmo_prim_srv_conn_cb | opened_conn_cb |
osmo_prim_srv_conn_cb | closed_conn_cb |
osmo_prim_srv_rx_sapi_version | rx_sapi_version_cb |
osmo_prim_srv_rx_cb | rx_cb |
size_t | rx_msgb_alloc_len |
libosmo-netif 1.4.0
Osmocom network interface library
|
Data Fields | |
struct timeval | ts |
unsigned long * | old_cb |
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
Data Fields | |
uint16_t | sequence |
uint32_t | timestamp |
uint32_t | ssrc |
uint8_t | data [0] |
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
Osmocom stream socket helpers (server side) 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 <netinet/tcp.h>
#include <osmocom/core/timer.h>
#include <osmocom/core/select.h>
#include <osmocom/core/utils.h>
#include <osmocom/gsm/tlv.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/osmo_io.h>
#include <osmocom/core/panic.h>
#include <osmocom/core/logging.h>
#include <osmocom/core/talloc.h>
#include <osmocom/core/socket.h>
#include <osmocom/netif/stream.h>
#include <osmocom/netif/stream_private.h>
#include "config.h"
#include <osmocom/netif/sctp.h>
Data Structures | |
struct | osmo_stream_srv_link |
struct | osmo_stream_srv |
Macros | |
#define | LOGSLNK(link, level, fmt, args...) |
#define | LOGSSRV(srv, level, fmt, args...) |
#define | OSMO_STREAM_SRV_F_RECONF (1 << 0) |
#define | OSMO_STREAM_SRV_F_NODELAY (1 << 1) |
#define | OSMO_STREAM_SRV_F_FLUSH_DESTROY (1 << 0) |
Functions | |
static int | _setsockopt_nosigpipe (struct osmo_stream_srv_link *link, int new_fd) |
static int | osmo_stream_srv_link_ofd_cb (struct osmo_fd *ofd, unsigned int what) |
struct osmo_stream_srv_link * | osmo_stream_srv_link_create (void *ctx) |
Create an Osmocom Stream Server Link A Stream Server Link is the listen()+accept() "parent" to individual Stream Servers. More... | |
void | osmo_stream_srv_link_set_name (struct osmo_stream_srv_link *link, const char *name) |
Set a name on the srv_link object (used during logging) More... | |
void | osmo_stream_srv_link_set_nodelay (struct osmo_stream_srv_link *link, bool nodelay) |
Set the NODELAY socket option to avoid Nagle-like behavior Setting this to nodelay=true will automatically set the NODELAY socket option on any socket established via this server link, before calling the accept_cb() More... | |
void | osmo_stream_srv_link_set_addr (struct osmo_stream_srv_link *link, const char *addr) |
Set the local address to which we bind. More... | |
int | osmo_stream_srv_link_set_addrs (struct osmo_stream_srv_link *link, const char **addr, size_t addrcnt) |
Set the local address set to which we bind. Useful for protocols allowing bind on more than one address (such as SCTP) More... | |
void | osmo_stream_srv_link_set_port (struct osmo_stream_srv_link *link, uint16_t port) |
Set the local port number to which we bind. More... | |
void | osmo_stream_srv_link_set_proto (struct osmo_stream_srv_link *link, uint16_t proto) |
Set the protocol for the stream server link. More... | |
int | osmo_stream_srv_link_set_type (struct osmo_stream_srv_link *link, int type) |
Set the socket type for the stream server link. More... | |
int | osmo_stream_srv_link_set_domain (struct osmo_stream_srv_link *link, int domain) |
Set the socket type for the stream server link. More... | |
void | osmo_stream_srv_link_set_data (struct osmo_stream_srv_link *link, void *data) |
Set application private data of the stream server link. More... | |
void * | osmo_stream_srv_link_get_data (struct osmo_stream_srv_link *link) |
Get application private data of the stream server link. More... | |
char * | osmo_stream_srv_link_get_sockname (const struct osmo_stream_srv_link *link) |
Get description of the stream server link e. g. 127.0.0.1:1234. More... | |
struct osmo_fd * | osmo_stream_srv_link_get_ofd (struct osmo_stream_srv_link *link) |
Get Osmocom File Descriptor of the stream server link. More... | |
void | osmo_stream_srv_link_set_accept_cb (struct osmo_stream_srv_link *link, int(*accept_cb)(struct osmo_stream_srv_link *link, int fd)) |
Set the accept() call-back of the stream server link. More... | |
void | osmo_stream_srv_link_destroy (struct osmo_stream_srv_link *link) |
Destroy the stream server link. Closes + Releases Memory. More... | |
int | osmo_stream_srv_link_open (struct osmo_stream_srv_link *link) |
Open the stream server link. This actually initializes the underlying socket and binds it to the configured ip/port. More... | |
bool | osmo_stream_srv_link_is_opened (const struct osmo_stream_srv_link *link) |
Check whether the stream server link is opened. More... | |
void | osmo_stream_srv_link_close (struct osmo_stream_srv_link *link) |
Close the stream server link and unregister from select loop Does not destroy the server link, merely closes it! More... | |
int | osmo_stream_srv_link_set_param (struct osmo_stream_srv_link *link, enum osmo_stream_srv_link_param par, void *val, size_t val_len) |
static void | stream_srv_iofd_read_cb (struct osmo_io_fd *iofd, int res, struct msgb *msg) |
static void | stream_srv_iofd_write_cb (struct osmo_io_fd *iofd, int res, struct msgb *msg) |
static int | osmo_stream_srv_read (struct osmo_stream_srv *conn) |
static void | osmo_stream_srv_write (struct osmo_stream_srv *conn) |
static int | osmo_stream_srv_cb (struct osmo_fd *ofd, unsigned int what) |
struct osmo_stream_srv * | osmo_stream_srv_create (void *ctx, struct osmo_stream_srv_link *link, int fd, int(*read_cb)(struct osmo_stream_srv *conn), int(*closed_cb)(struct osmo_stream_srv *conn), void *data) |
Create a Stream Server inside the specified link. More... | |
struct osmo_stream_srv * | osmo_stream_srv_create2 (void *ctx, struct osmo_stream_srv_link *link, int fd, void *data) |
Create a Stream Server inside the specified link. More... | |
void | osmo_stream_srv_set_name (struct osmo_stream_srv *conn, const char *name) |
Set a name on the srv object (used during logging) More... | |
void | osmo_stream_srv_set_read_cb (struct osmo_stream_srv *conn, int(*read_cb)(struct osmo_stream_srv *conn, struct msgb *msg)) |
Set the call-back function when data was read from the stream server socket Only for osmo_stream_srv created with osmo_stream_srv_create2() More... | |
void | osmo_stream_srv_set_closed_cb (struct osmo_stream_srv *conn, int(*closed_cb)(struct osmo_stream_srv *conn)) |
Set the call-back function called when the stream server socket was closed. More... | |
void | osmo_stream_srv_set_flush_and_destroy (struct osmo_stream_srv *conn) |
Prepare to send out all pending messages on the connection's Tx queue and then automatically destroy the stream with osmo_stream_srv_destroy(). This function disables queuing of new messages on the connection and also disables reception of new messages on the connection. More... | |
void | osmo_stream_srv_set_data (struct osmo_stream_srv *conn, void *data) |
Set application private data of the stream server. More... | |
void | osmo_stream_srv_set_segmentation_cb (struct osmo_stream_srv *conn, int(*segmentation_cb)(struct msgb *msg)) |
Set the segmentation callback for target osmo_stream_srv structure. The connection has to have been established prior to calling this function. More... | |
void * | osmo_stream_srv_get_data (struct osmo_stream_srv *conn) |
Get application private data of the stream server. More... | |
struct osmo_fd * | osmo_stream_srv_get_ofd (struct osmo_stream_srv *conn) |
Get Osmocom File Descriptor of the stream server. More... | |
struct osmo_stream_srv_link * | osmo_stream_srv_get_master (struct osmo_stream_srv *conn) |
Get the master (Link) from a Stream Server. More... | |
void | osmo_stream_srv_destroy (struct osmo_stream_srv *conn) |
Destroy given Stream Server This function closes the Stream Server socket, unregisters from select loop, invokes the connection's closed_cb() callback to allow API users to clean up any associated state they have for this connection, and then de-allocates associated memory. More... | |
void | osmo_stream_srv_send (struct osmo_stream_srv *conn, struct msgb *msg) |
Enqueue data to be sent via an Osmocom stream server. More... | |
int | osmo_stream_srv_recv (struct osmo_stream_srv *conn, struct msgb *msg) |
Receive data via Osmocom stream server. More... | |
void | osmo_stream_srv_clear_tx_queue (struct osmo_stream_srv *conn) |
Variables | |
static struct osmo_io_ops | srv_ioops |
Osmocom stream socket helpers (server side)
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
libosmo-netif 1.4.0
Osmocom network interface library
|
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 |
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_tx * | osmo_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_rx * | osmo_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_dgram * | osmo_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... | |
Osmocom datagram socket helpers.
libosmo-netif 1.4.0
Osmocom network interface library
|