libosmo-netif
1.2.0.67-9ee4
Osmocom network interface library
|
Files | |
file | stream.c |
Osmocom stream socket helpers. | |
Data Structures | |
struct | osmo_stream_cli |
struct | osmo_stream_srv_link |
struct | osmo_stream_srv |
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. | |
#define | MSG_NOSIGNAL 0 |
#define | OSMO_STREAM_CLI_F_RECONF (1 << 0) |
#define | OSMO_STREAM_CLI_F_NODELAY (1 << 1) |
#define | OSMO_STREAM_MAX_ADDRS OSMO_SOCK_MAX_ADDRS |
#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) |
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 | |
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. Closes + Releases Memory. 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_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. 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... | |
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... | |
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... | |
struct osmo_stream_srv * | osmo_stream_srv_create (void *ctx, struct osmo_stream_srv_link *link, int fd, int(*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... | |
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... | |
struct osmo_fd * | osmo_stream_srv_get_ofd (struct osmo_stream_srv *conn) |
Get Osmocom 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(). 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_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_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... | |
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... | |
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. Useful for protocols allowing bind to more than one address (such as SCTP) 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... | |
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. 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. To disable this, use osmo_stream_cli_set_reconnect_timeout() before calling this function. 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) |
static int | byte_nonzero (const uint8_t *u8, unsigned int offset, unsigned int u8_size) |
static int | determine_sctp_sockopt_event_subscribe_size (void) |
static int | sctp_setsockopt_events_linux_workaround (int fd, const struct sctp_event_subscribe *event) |
static int | sctp_sock_activate_events (int fd) |
static int | setsockopt_nodelay (int fd, int proto, int on) |
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 int | osmo_stream_cli_fd_cb (struct osmo_fd *ofd, unsigned int what) |
static void | cli_timer_cb (void *data) |
static int | osmo_stream_srv_fd_cb (struct osmo_fd *ofd, unsigned int what) |
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) |
static int | _sctp_recvmsg_wrapper (int fd, struct msgb *msg) |
Variables | |
static unsigned int | sctp_sockopt_event_subscribe_size = 0 |
static const struct value_string | stream_cli_state_names [] |
This code is intended to abstract any use of stream-type sockets, such as TCP and SCTP. It offers both server and client side implementations, fully integrated with the libosmocore select loop abstraction.
void osmo_stream_cli_close | ( | struct osmo_stream_cli * | cli | ) |
Close an Osmocom Stream Client.
[in] | cli | Osmocom Stream Client to be closed We unregister the socket fd from the osmocom select() loop abstraction and close the socket |
Referenced by osmo_stream_cli_destroy(), and osmo_stream_cli_reconnect().
struct osmo_stream_cli * osmo_stream_cli_create | ( | void * | ctx | ) |
Create an Osmocom stream client.
[in] | ctx | talloc context from which to allocate memory This function allocates a new osmo_stream_cli and initializes it with default values (5s reconnect timer, TCP protocol) |
void osmo_stream_cli_destroy | ( | struct osmo_stream_cli * | cli | ) |
Destroy a Osmocom stream client (includes close)
[in] | cli | Stream Client to destroy |
References osmo_stream_cli_close().
void * osmo_stream_cli_get_data | ( | struct osmo_stream_cli * | cli | ) |
Get application private data of the stream client socket.
[in] | cli | Stream Client to modify |
struct osmo_fd * osmo_stream_cli_get_ofd | ( | struct osmo_stream_cli * | cli | ) |
Get Osmocom File Descriptor of the stream client socket.
[in] | cli | Stream Client to modify |
char * osmo_stream_cli_get_sockname | ( | const struct osmo_stream_cli * | cli | ) |
Get the stream client socket description.
[in] | cli | Stream Client to examine |
bool osmo_stream_cli_is_connected | ( | struct osmo_stream_cli * | cli | ) |
Check if Osmocom Stream Client is in connected state.
[in] | cli | Osmocom Stream Client |
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.
[in] | cli | Stream Client to connect |
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.
[in] | cli | Stream Client to connect |
[in] | reconect | 1 if we should not automatically reconnect |
int osmo_stream_cli_recv | ( | struct osmo_stream_cli * | cli, |
struct msgb * | msg | ||
) |
Receive data via an Osmocom stream client.
[in] | cli | Stream Client through which we want to send |
msg | pre-allocate message buffer to which received data is appended |
void osmo_stream_cli_send | ( | struct osmo_stream_cli * | cli, |
struct msgb * | msg | ||
) |
Enqueue data to be sent via an Osmocom stream client.
[in] | cli | Stream Client through which we want to send |
[in] | msg | Message buffer to enqueue in transmit queue |
void osmo_stream_cli_set_addr | ( | struct osmo_stream_cli * | cli, |
const char * | addr | ||
) |
Set the remote address to which we connect.
[in] | cli | Stream Client to modify |
[in] | addr | Remote IP address |
References osmo_stream_cli_set_addrs().
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)
[in] | cli | Stream Client to modify |
[in] | addr | Remote IP address set |
Referenced by osmo_stream_cli_set_addr().
void osmo_stream_cli_set_connect_cb | ( | struct osmo_stream_cli * | cli, |
int(*)(struct osmo_stream_cli *cli) | connect_cb | ||
) |
Set the call-back function called on connect of the stream client socket.
[in] | cli | Stream Client to modify |
[in] | connect_cb | Call-back function to be called upon connect |
void osmo_stream_cli_set_data | ( | struct osmo_stream_cli * | cli, |
void * | data | ||
) |
Set application private data of the stream client socket.
[in] | cli | Stream Client to modify |
[in] | data | User-specific data (available in call-back functions) |
void osmo_stream_cli_set_disconnect_cb | ( | struct osmo_stream_cli * | cli, |
int(*)(struct osmo_stream_cli *cli) | disconnect_cb | ||
) |
Set the call-back function called on disconnect of the stream client socket.
[in] | cli | Stream Client to modify |
[in] | disconnect_cb | Call-back function to be called upon disconnect |
int osmo_stream_cli_set_domain | ( | struct osmo_stream_cli * | cli, |
int | domain | ||
) |
Set the socket type for the stream server link.
[in] | cli | Stream Client to modify |
[in] | type | Socket Domain (like AF_UNSPEC (default for IP), AF_UNIX, AF_INET, ...) |
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)
[in] | cli | Stream Client to modify |
[in] | port | Local host name |
References osmo_stream_cli_set_local_addrs().
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)
[in] | cli | Stream Client to modify |
[in] | addr | Local IP address set |
Referenced by osmo_stream_cli_set_local_addr().
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)
[in] | cli | Stream Client to modify |
[in] | port | Local port number |
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.
[in] | cli | Stream client whose sockets are to be configured |
[in] | nodelay | whether to set (true) NODELAY before connect() |
void osmo_stream_cli_set_port | ( | struct osmo_stream_cli * | cli, |
uint16_t | port | ||
) |
Set the remote port number to which we connect.
[in] | cli | Stream Client to modify |
[in] | port | Remote port number |
void osmo_stream_cli_set_proto | ( | struct osmo_stream_cli * | cli, |
uint16_t | proto | ||
) |
Set the protocol for the stream client socket.
[in] | cli | Stream Client to modify |
[in] | proto | Protocol (like IPPROTO_TCP (default), IPPROTO_SCTP, ...) |
void osmo_stream_cli_set_read_cb | ( | struct osmo_stream_cli * | cli, |
int(*)(struct osmo_stream_cli *cli) | read_cb | ||
) |
Set the call-back function called to read from the stream client socket.
[in] | cli | Stream Client to modify |
[in] | read_cb | Call-back function to be called when we want to read |
void osmo_stream_cli_set_reconnect_timeout | ( | struct osmo_stream_cli * | cli, |
int | timeout | ||
) |
Set the reconnect time of the stream client socket.
[in] | cli | Stream Client to modify |
[in] | timeout | Re-connect timeout in seconds or negative value to disable auto-reconnection |
int osmo_stream_cli_set_type | ( | struct osmo_stream_cli * | cli, |
int | type | ||
) |
Set the socket type for the stream server link.
[in] | cli | Stream Client to modify |
[in] | type | Socket Type (like SOCK_STREAM (default), SOCK_SEQPACKET, ...) |
struct osmo_stream_srv * osmo_stream_srv_create | ( | void * | ctx, |
struct osmo_stream_srv_link * | link, | ||
int | fd, | ||
int(*)(struct osmo_stream_srv *conn) | cb, | ||
int(*)(struct osmo_stream_srv *conn) | closed_cb, | ||
void * | data | ||
) |
Create a Stream Server inside the specified link.
[in] | ctx | talloc allocation context from which to allocate |
[in] | link | Stream Server Link to which we belong |
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.
[in] | conn | Stream Server to be destroyed |
void * osmo_stream_srv_get_data | ( | struct osmo_stream_srv * | conn | ) |
Get application private data of the stream server.
[in] | conn | Stream Server |
struct osmo_stream_srv_link * osmo_stream_srv_get_master | ( | struct osmo_stream_srv * | conn | ) |
Get the master (Link) from a Stream Server.
[in] | conn | Stream Server of which we want to know the Link |
struct osmo_fd * osmo_stream_srv_get_ofd | ( | struct osmo_stream_srv * | conn | ) |
Get Osmocom File Descriptor of the stream server.
[in] | conn | Stream Server |
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!
[in] | link | Stream Server Link to close |
Referenced by osmo_stream_srv_link_destroy().
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.
[in] | ctx | talloc allocation context |
void osmo_stream_srv_link_destroy | ( | struct osmo_stream_srv_link * | link | ) |
Destroy the stream server link. Closes + Releases Memory.
[in] | link | Stream Server Link |
References osmo_stream_srv_link_close().
void * osmo_stream_srv_link_get_data | ( | struct osmo_stream_srv_link * | link | ) |
Get application private data of the stream server link.
[in] | link | Stream Server Link to modify |
struct osmo_fd * osmo_stream_srv_link_get_ofd | ( | struct osmo_stream_srv_link * | link | ) |
Get Osmocom File Descriptor of the stream server link.
[in] | link | Stream Server Link |
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.
[in] | link | Stream Server Link to examine |
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.
[in] | link | Stream Server Link to open |
void osmo_stream_srv_link_set_accept_cb | ( | struct osmo_stream_srv_link * | link, |
int(*)(struct osmo_stream_srv_link *link, int fd) | accept_cb | ||
) |
Set the accept() call-back of the stream server link.
[in] | link | Stream Server Link |
[in] | accept_cb | Call-back function executed upon accept() |
void osmo_stream_srv_link_set_addr | ( | struct osmo_stream_srv_link * | link, |
const char * | addr | ||
) |
Set the local address to which we bind.
[in] | link | Stream Server Link to modify |
[in] | addr | Local IP address |
References osmo_stream_srv_link_set_addrs().
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)
[in] | link | Stream Server Link to modify |
[in] | addr | Local IP address |
Referenced by osmo_stream_srv_link_set_addr().
void osmo_stream_srv_link_set_data | ( | struct osmo_stream_srv_link * | link, |
void * | data | ||
) |
Set application private data of the stream server link.
[in] | link | Stream Server Link to modify |
[in] | data | User-specific data (available in call-back functions) |
int osmo_stream_srv_link_set_domain | ( | struct osmo_stream_srv_link * | link, |
int | domain | ||
) |
Set the socket type for the stream server link.
[in] | link | Stream Server Link to modify |
[in] | type | Socket Domain (like AF_UNSPEC (default for IP), AF_UNIX, AF_INET, ...) |
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()
[in] | link | server link whose sockets are to be configured |
[in] | nodelay | whether to set (true) NODELAY after accept |
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.
[in] | link | Stream Server Link to modify |
[in] | port | Local port number |
void osmo_stream_srv_link_set_proto | ( | struct osmo_stream_srv_link * | link, |
uint16_t | proto | ||
) |
Set the protocol for the stream server link.
[in] | link | Stream Server Link to modify |
[in] | proto | Protocol (like IPPROTO_TCP (default), IPPROTO_SCTP, ...) |
int osmo_stream_srv_link_set_type | ( | struct osmo_stream_srv_link * | link, |
int | type | ||
) |
Set the socket type for the stream server link.
[in] | link | Stream Server Link to modify |
[in] | type | Socket Type (like SOCK_STREAM (default), SOCK_SEQPACKET, ...) |
int osmo_stream_srv_recv | ( | struct osmo_stream_srv * | conn, |
struct msgb * | msg | ||
) |
Receive data via Osmocom stream server.
[in] | conn | Stream Server from which to receive |
msg | pre-allocate message buffer to which received data is appended |
If conn is an SCTP connection, additional specific considerations shall be taken:
void osmo_stream_srv_send | ( | struct osmo_stream_srv * | conn, |
struct msgb * | msg | ||
) |
Enqueue data to be sent via an Osmocom stream server.
[in] | conn | Stream Server through which we want to send |
[in] | msg | Message buffer to enqueue in transmit queue |
void osmo_stream_srv_set_data | ( | struct osmo_stream_srv * | conn, |
void * | data | ||
) |
Set application private data of the stream server.
[in] | conn | Stream Server to modify |
[in] | data | User-specific data (available in call-back functions) |
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.
[in] | conn | Stream Server to modify |
|
static |