23#include <osmocom/core/prim.h>
24#include <osmocom/core/select.h>
25#include <osmocom/core/linuxlist.h>
27struct osmo_prim_srv_link;
30typedef int (*osmo_prim_srv_conn_cb)(
struct osmo_prim_srv *prim_srv);
32typedef int (*osmo_prim_srv_rx_cb)(
struct osmo_prim_srv *prim_srv,
struct osmo_prim_hdr *oph);
41typedef int (*osmo_prim_srv_rx_sapi_version)(
struct osmo_prim_srv *prim_srv, uint32_t sapi, uint16_t rem_version);
43struct osmo_prim_hdr *osmo_prim_msgb_alloc(
unsigned int sap,
unsigned int primitive,
44 enum osmo_prim_operation operation,
size_t alloc_len);
46struct osmo_prim_srv_link *osmo_prim_srv_link_alloc(
void *ctx);
47void osmo_prim_srv_link_free(
struct osmo_prim_srv_link *prim_link);
48void osmo_prim_srv_link_set_name(
struct osmo_prim_srv_link *prim_link,
const char *name);
49int osmo_prim_srv_link_set_addr(
struct osmo_prim_srv_link *prim_link,
const char *path);
50const char *osmo_prim_srv_link_get_addr(
struct osmo_prim_srv_link *prim_link);
51void osmo_prim_srv_link_set_priv(
struct osmo_prim_srv_link *prim_link,
void *priv);
52void *osmo_prim_srv_link_get_priv(
const struct osmo_prim_srv_link *prim_link);
53void osmo_prim_srv_link_set_log_category(
struct osmo_prim_srv_link *prim_link,
int log_cat);
54void osmo_prim_srv_link_set_opened_conn_cb(
struct osmo_prim_srv_link *prim_link, osmo_prim_srv_conn_cb opened_conn_cb);
55void osmo_prim_srv_link_set_closed_conn_cb(
struct osmo_prim_srv_link *prim_link, osmo_prim_srv_conn_cb closed_conn_cb);
56void osmo_prim_srv_link_set_rx_sapi_version_cb(
struct osmo_prim_srv_link *prim_link, osmo_prim_srv_rx_sapi_version rx_sapi_version_cb);
57void osmo_prim_srv_link_set_rx_cb(
struct osmo_prim_srv_link *prim_link, osmo_prim_srv_rx_cb rx_cb);
58void osmo_prim_srv_link_set_rx_msgb_alloc_len(
struct osmo_prim_srv_link *prim_link,
size_t alloc_len);
59int osmo_prim_srv_link_open(
struct osmo_prim_srv_link *prim_link);
61int osmo_prim_srv_send(
struct osmo_prim_srv *prim_srv,
struct msgb *msg);
62struct osmo_prim_srv_link *osmo_prim_srv_get_link(
struct osmo_prim_srv *prims_srv);
63void osmo_prim_srv_set_name(
struct osmo_prim_srv *prim_srv,
const char *name);
64void osmo_prim_srv_set_priv(
struct osmo_prim_srv *prim_srv,
void *priv);
65void *osmo_prim_srv_get_priv(
const struct osmo_prim_srv *prim_srv);
66void osmo_prim_srv_close(
struct osmo_prim_srv *prim_srv);