libosmo-netif
1.4.0.40-1042.202403152026
Osmocom network interface library
|
#include <stdbool.h>
#include <stdint.h>
#include <unistd.h>
#include <osmocom/core/msgb.h>
Go to the source code of this file.
Macros | |
#define | OSMO_STREAM_SCTP_MSG_FLAGS_NOTIFICATION 0x80 /* sctp_recvmsg() flags=MSG_NOTIFICATION, msgb_data() contains "union sctp_notification*" */ |
Access SCTP flags from the msgb control buffer. | |
#define | msgb_sctp_msg_flags(msg) (msg)->cb[2] |
#define | msgb_sctp_ppid(msg) (msg)->cb[3] |
Access the SCTP PPID from the msgb control buffer. | |
#define | msgb_sctp_stream(msg) (msg)->cb[4] |
Access the SCTP Stream ID from the msgb control buffer. | |
Functions | |
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_destroy (struct osmo_stream_srv_link *link) |
Destroy the stream server link. 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... | |
const char * | osmo_stream_srv_link_get_name (const struct osmo_stream_srv_link *link) |
Retrieve name previously set on the srv_link object (see osmo_stream_srv_link_set_name()) 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. 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_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_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. 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... | |
int | osmo_stream_srv_link_get_fd (const struct osmo_stream_srv_link *link) |
Get File Descriptor of the stream server link. More... | |
bool | osmo_stream_srv_link_is_opened (const struct osmo_stream_srv_link *link) |
Check whether the stream server link is opened. More... | |
int | osmo_stream_srv_link_open (struct osmo_stream_srv_link *link) |
Open the stream server link. 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) |
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... | |
const char * | osmo_stream_srv_get_name (const struct osmo_stream_srv *conn) |
Retrieve name previously set on the srv object (see osmo_stream_srv_set_name()) 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_get_data (struct osmo_stream_srv *conn) |
Get application private data 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... | |
const char * | osmo_stream_srv_get_sockname (const struct osmo_stream_srv *conn) |
Get the stream server socket description. More... | |
struct osmo_fd * | osmo_stream_srv_get_ofd (struct osmo_stream_srv *conn) |
Get Osmocom File Descriptor of the stream server. More... | |
int | osmo_stream_srv_get_fd (const struct osmo_stream_srv *conn) |
Get File Descriptor of the 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_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(). 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. 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) |
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... | |
const char * | osmo_stream_cli_get_name (const struct osmo_stream_cli *cli) |
Retrieve name previously set on the cli object (see osmo_stream_cli_set_name()) 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. 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. 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... | |
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_proto (struct osmo_stream_cli *cli, uint16_t proto) |
Set the protocol for the stream client socket. 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. 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_data (struct osmo_stream_cli *cli, void *data) |
Set application private data of the stream client socket. 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_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... | |
int | osmo_stream_cli_get_fd (const struct osmo_stream_cli *cli) |
Get 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_set_segmentation_cb (struct osmo_stream_cli *cli, int(*segmentation_cb)(struct msgb *msg)) |
Set the segmentation callback for the 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... | |
struct osmo_stream_cli * | osmo_stream_cli_create (void *ctx) |
Create an Osmocom stream client. More... | |
void | osmo_stream_cli_destroy (struct osmo_stream_cli *cli) |
Destroy a Osmocom stream client (includes close) 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. 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_close (struct osmo_stream_cli *cli) |
Close an Osmocom Stream Client. 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) |