libosmo-netif 1.6.0.16-c51c Osmocom network interface library

Loading...
Searching...
No Matches
stream.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdbool.h>
4#include <stdint.h>
5#include <unistd.h>
6
7#include <osmocom/core/msgb.h>
8
12#define OSMO_STREAM_SCTP_MSG_FLAGS_NOTIFICATION 0x80 /* sctp_recvmsg() flags=MSG_NOTIFICATION, msgb_data() contains "union sctp_notification*" */
13#define msgb_sctp_msg_flags(msg) (msg)->cb[2]
14
16#define msgb_sctp_ppid(msg) (msg)->cb[3]
18#define msgb_sctp_stream(msg) (msg)->cb[4]
19
66 struct osmo_stream_srv_link;
67
68 typedef int (*osmo_stream_srv_link_accept_cb_t)(struct osmo_stream_srv_link *link, int fd);
69
70 struct osmo_stream_srv_link *osmo_stream_srv_link_create(void *ctx);
71 void osmo_stream_srv_link_destroy(struct osmo_stream_srv_link *link);
72
73 void osmo_stream_srv_link_set_name(struct osmo_stream_srv_link *link, const char *name);
74 const char *osmo_stream_srv_link_get_name(const struct osmo_stream_srv_link *link);
75 void osmo_stream_srv_link_set_nodelay(struct osmo_stream_srv_link *link, bool nodelay);
76 int osmo_stream_srv_link_set_priority(struct osmo_stream_srv_link *link, int sk_prio);
77 int osmo_stream_srv_link_set_ip_dscp(struct osmo_stream_srv_link *link, uint8_t ip_dscp);
78 void osmo_stream_srv_link_set_addr(struct osmo_stream_srv_link *link, const char *addr);
79 int osmo_stream_srv_link_set_addrs(struct osmo_stream_srv_link *link, const char **addr, size_t addrcnt);
80 void osmo_stream_srv_link_set_port(struct osmo_stream_srv_link *link, uint16_t port);
81 void osmo_stream_srv_link_set_proto(struct osmo_stream_srv_link *link, uint16_t proto);
82 int osmo_stream_srv_link_set_type(struct osmo_stream_srv_link *link, int type);
83 int osmo_stream_srv_link_set_domain(struct osmo_stream_srv_link *link, int domain);
84 void osmo_stream_srv_link_set_accept_cb(struct osmo_stream_srv_link *link, osmo_stream_srv_link_accept_cb_t accept_cb);
85 void osmo_stream_srv_link_set_data(struct osmo_stream_srv_link *link, void *data);
86 void *osmo_stream_srv_link_get_data(struct osmo_stream_srv_link *link);
87 int osmo_stream_srv_link_set_tx_queue_max_length(struct osmo_stream_srv_link *link, unsigned int size);
88 char *osmo_stream_srv_link_get_sockname(const struct osmo_stream_srv_link *link);
89 struct osmo_fd *osmo_stream_srv_link_get_ofd(struct osmo_stream_srv_link *link);
90 int osmo_stream_srv_link_get_fd(const struct osmo_stream_srv_link *link);
91 int osmo_stream_srv_link_set_msgb_alloc_info(struct osmo_stream_srv_link *link, unsigned int size, unsigned int headroom);
92 bool osmo_stream_srv_link_is_opened(const struct osmo_stream_srv_link *link);
93 int osmo_stream_srv_link_open(struct osmo_stream_srv_link *link);
94 void osmo_stream_srv_link_close(struct osmo_stream_srv_link *link);
95
96 enum osmo_stream_srv_link_param {
97 OSMO_STREAM_SRV_LINK_PAR_SCTP_SOCKOPT_AUTH_SUPPORTED, /* uint8_t: 0 disable, 1 enable, 2 force disable, 3 force enable */
98 OSMO_STREAM_SRV_LINK_PAR_SCTP_SOCKOPT_ASCONF_SUPPORTED, /* uint8_t: 0 disable, 1 enable, 2 force disable, 3 force enable */
99 OSMO_STREAM_SRV_LINK_PAR_SCTP_INIT_NUM_OSTREAMS, /* uint16_t: amount of streams */
100 OSMO_STREAM_SRV_LINK_PAR_SCTP_INIT_MAX_INSTREAMS, /* uint16_t: amount of streams */
101
102 OSMO_STREAM_SRV_LINK_PAR_TCP_SOCKOPT_KEEPALIVE = 256, /* uint8_t: 0 disable, 1 enable */
103 OSMO_STREAM_SRV_LINK_PAR_TCP_SOCKOPT_KEEPIDLE, /* int: seconds */
104 OSMO_STREAM_SRV_LINK_PAR_TCP_SOCKOPT_KEEPINTVL, /* int: seconds */
105 OSMO_STREAM_SRV_LINK_PAR_TCP_SOCKOPT_KEEPCNT, /* int: Number of probes */
106 OSMO_STREAM_SRV_LINK_PAR_TCP_SOCKOPT_USER_TIMEOUT, /* unsigned int: 0 "system default", >0 see sockopt TCP_USER_TIMEOUT */
107};
108
109 int osmo_stream_srv_link_set_param(struct osmo_stream_srv_link *link, enum osmo_stream_srv_link_param par,
110 void *val, size_t val_len);
111
114 struct osmo_stream_srv;
115
116 typedef int (*osmo_stream_srv_read_cb_t)(struct osmo_stream_srv *conn);
117 typedef int (*osmo_stream_srv_closed_cb_t)(struct osmo_stream_srv *conn);
118
124 typedef int (*osmo_stream_srv_read_cb2_t)(struct osmo_stream_srv *conn, int res, struct msgb *msg);
125
126 typedef int (*osmo_stream_srv_segmentation_cb_t)(struct msgb *msg);
127 typedef int (*osmo_stream_srv_segmentation_cb2_t)(struct osmo_stream_srv *conn, struct msgb *msg);
128
129 struct osmo_stream_srv *osmo_stream_srv_create(void *ctx, struct osmo_stream_srv_link *link, int fd,
130 osmo_stream_srv_read_cb_t read_cb,
131 osmo_stream_srv_closed_cb_t closed_cb,
132 void *data);
133 struct osmo_stream_srv *osmo_stream_srv_create2(void *ctx, struct osmo_stream_srv_link *link, int fd, void *data);
134 void osmo_stream_srv_set_name(struct osmo_stream_srv *conn, const char *name);
135 void osmo_stream_srv_set_name_f(struct osmo_stream_srv *conn, const char *fmt, ...);
136 const char *osmo_stream_srv_get_name(const struct osmo_stream_srv *conn);
137 void osmo_stream_srv_set_read_cb(struct osmo_stream_srv *conn, osmo_stream_srv_read_cb2_t read_cb);
138 void osmo_stream_srv_set_closed_cb(struct osmo_stream_srv *conn, osmo_stream_srv_closed_cb_t close_cb);
139 void *osmo_stream_srv_get_data(struct osmo_stream_srv *conn);
140 struct osmo_stream_srv_link *osmo_stream_srv_get_master(struct osmo_stream_srv *conn);
141 const char *osmo_stream_srv_get_sockname(const struct osmo_stream_srv *conn);
142 struct osmo_fd *osmo_stream_srv_get_ofd(struct osmo_stream_srv *srv);
143 int osmo_stream_srv_get_fd(const struct osmo_stream_srv *srv);
144 struct osmo_io_fd *osmo_stream_srv_get_iofd(const struct osmo_stream_srv *srv);
145 void osmo_stream_srv_destroy(struct osmo_stream_srv *conn);
146
147 void osmo_stream_srv_set_flush_and_destroy(struct osmo_stream_srv *conn);
148 void osmo_stream_srv_set_data(struct osmo_stream_srv *conn, void *data);
149
150 void osmo_stream_srv_set_segmentation_cb(struct osmo_stream_srv *conn, osmo_stream_srv_segmentation_cb_t segmentation_cb);
151 void osmo_stream_srv_set_segmentation_cb2(struct osmo_stream_srv *conn, osmo_stream_srv_segmentation_cb2_t segmentation_cb2);
152
153 void osmo_stream_srv_send(struct osmo_stream_srv *conn, struct msgb *msg);
154 int osmo_stream_srv_recv(struct osmo_stream_srv *conn, struct msgb *msg);
155
156 void osmo_stream_srv_clear_tx_queue(struct osmo_stream_srv *conn);
157
158 enum osmo_stream_srv_param {
159 OSMO_STREAM_SRV_PAR_TCP_SOCKOPT_KEEPALIVE = 256, /* uint8_t: 0 disable, 1 enable */
160 OSMO_STREAM_SRV_PAR_TCP_SOCKOPT_KEEPIDLE, /* int: seconds */
161 OSMO_STREAM_SRV_PAR_TCP_SOCKOPT_KEEPINTVL, /* int: seconds */
162 OSMO_STREAM_SRV_PAR_TCP_SOCKOPT_KEEPCNT, /* int: Number of probes */
163 OSMO_STREAM_SRV_PAR_TCP_SOCKOPT_USER_TIMEOUT, /* unsigned int: 0 "system default", >0 see sockopt TCP_USER_TIMEOUT */
164};
165 int osmo_stream_srv_set_param(struct osmo_stream_srv *conn, enum osmo_stream_srv_param par,
166 void *val, size_t val_len);
167
206 struct osmo_stream_cli;
207
208 typedef int (*osmo_stream_cli_connect_cb_t)(struct osmo_stream_cli *cli);
209 typedef int (*osmo_stream_cli_disconnect_cb_t)(struct osmo_stream_cli *cli);
210 typedef int (*osmo_stream_cli_read_cb_t)(struct osmo_stream_cli *cli);
211
217 typedef int (*osmo_stream_cli_read_cb2_t)(struct osmo_stream_cli *cli, int res, struct msgb *msg);
218
219 typedef int (*osmo_stream_cli_segmentation_cb_t)(struct msgb *msg);
220 typedef int (*osmo_stream_cli_segmentation_cb2_t)(struct osmo_stream_cli *cli, struct msgb *msg);
221
222 void osmo_stream_cli_set_name(struct osmo_stream_cli *cli, const char *name);
223 void osmo_stream_cli_set_name_f(struct osmo_stream_cli *cli, const char *fmt, ...);
224 const char *osmo_stream_cli_get_name(const struct osmo_stream_cli *cli);
225 void osmo_stream_cli_set_nodelay(struct osmo_stream_cli *cli, bool nodelay);
226 int osmo_stream_cli_set_priority(struct osmo_stream_cli *cli, int sk_prio);
227 int osmo_stream_cli_set_ip_dscp(struct osmo_stream_cli *cli, uint8_t ip_dscp);
228 void osmo_stream_cli_set_addr(struct osmo_stream_cli *cli, const char *addr);
229 int osmo_stream_cli_set_addrs(struct osmo_stream_cli *cli, const char **addr, size_t addrcnt);
230 void osmo_stream_cli_set_port(struct osmo_stream_cli *cli, uint16_t port);
231 int osmo_stream_cli_set_type(struct osmo_stream_cli *cli, int type);
232 int osmo_stream_cli_set_domain(struct osmo_stream_cli *cli, int domain);
233 void osmo_stream_cli_set_proto(struct osmo_stream_cli *cli, uint16_t proto);
234 void osmo_stream_cli_set_local_addr(struct osmo_stream_cli *cli, const char *addr);
235 int osmo_stream_cli_set_local_addrs(struct osmo_stream_cli *cli, const char **addr, size_t addrcnt);
236 void osmo_stream_cli_set_local_port(struct osmo_stream_cli *cli, uint16_t port);
237 void osmo_stream_cli_set_data(struct osmo_stream_cli *cli, void *data);
238 void osmo_stream_cli_set_reconnect_timeout(struct osmo_stream_cli *cli, int timeout);
239 void *osmo_stream_cli_get_data(struct osmo_stream_cli *cli);
240 int osmo_stream_cli_set_tx_queue_max_length(struct osmo_stream_cli *cli, unsigned int size);
241 char *osmo_stream_cli_get_sockname(const struct osmo_stream_cli *cli);
242 struct osmo_fd *osmo_stream_cli_get_ofd(struct osmo_stream_cli *cli);
243 int osmo_stream_cli_get_fd(const struct osmo_stream_cli *cli);
244 struct osmo_io_fd *osmo_stream_cli_get_iofd(const struct osmo_stream_cli *cli);
245 void osmo_stream_cli_set_connect_cb(struct osmo_stream_cli *cli, osmo_stream_cli_connect_cb_t connect_cb);
246 void osmo_stream_cli_set_disconnect_cb(struct osmo_stream_cli *cli, osmo_stream_cli_disconnect_cb_t disconnect_cb);
247 void osmo_stream_cli_set_read_cb(struct osmo_stream_cli *cli, osmo_stream_cli_read_cb_t read_cb);
248 void osmo_stream_cli_set_read_cb2(struct osmo_stream_cli *cli, osmo_stream_cli_read_cb2_t read_cb);
249 void osmo_stream_cli_set_segmentation_cb(struct osmo_stream_cli *cli, osmo_stream_cli_segmentation_cb_t segmentation_cb);
250 void osmo_stream_cli_set_segmentation_cb2(struct osmo_stream_cli *cli, osmo_stream_cli_segmentation_cb2_t segmentation_cb2);
251 void osmo_stream_cli_reconnect(struct osmo_stream_cli *cli);
252 bool osmo_stream_cli_is_connected(struct osmo_stream_cli *cli);
253
254 struct osmo_stream_cli *osmo_stream_cli_create(void *ctx);
255 void osmo_stream_cli_destroy(struct osmo_stream_cli *cli);
256
257 int osmo_stream_cli_open(struct osmo_stream_cli *cli);
258 int osmo_stream_cli_open2(struct osmo_stream_cli *cli, int reconnect) \
259 OSMO_DEPRECATED("Use osmo_stream_cli_set_reconnect_timeout() or osmo_stream_cli_reconnect() instead");
260 void osmo_stream_cli_close(struct osmo_stream_cli *cli);
261
262 void osmo_stream_cli_send(struct osmo_stream_cli *cli, struct msgb *msg);
263 int osmo_stream_cli_recv(struct osmo_stream_cli *cli, struct msgb *msg);
264
265 void osmo_stream_cli_clear_tx_queue(struct osmo_stream_cli *cli);
266
267 enum osmo_stream_cli_param {
268 OSMO_STREAM_CLI_PAR_SCTP_SOCKOPT_AUTH_SUPPORTED, /* uint8_t: 0 disable, 1 enable, 2 force disable, 3 force enable */
269 OSMO_STREAM_CLI_PAR_SCTP_SOCKOPT_ASCONF_SUPPORTED, /* uint8_t: 0 disable, 1 enable, 2 force disable, 3 force enable */
270 OSMO_STREAM_CLI_PAR_SCTP_INIT_NUM_OSTREAMS, /* uint16_t: amount of streams */
271 OSMO_STREAM_CLI_PAR_SCTP_INIT_MAX_INSTREAMS, /* uint16_t: amount of streams */
272 OSMO_STREAM_CLI_PAR_SCTP_INIT_MAX_ATTEMPTS, /* uint16_t: amount of attempts */
273 OSMO_STREAM_CLI_PAR_SCTP_INIT_TIMEOUT, /* uint16_t: milliseconds */
274
275 OSMO_STREAM_CLI_PAR_TCP_SOCKOPT_KEEPALIVE = 256, /* uint8_t: 0 disable, 1 enable */
276 OSMO_STREAM_CLI_PAR_TCP_SOCKOPT_KEEPIDLE, /* int: seconds */
277 OSMO_STREAM_CLI_PAR_TCP_SOCKOPT_KEEPINTVL, /* int: seconds */
278 OSMO_STREAM_CLI_PAR_TCP_SOCKOPT_KEEPCNT, /* int: Number of probes */
279 OSMO_STREAM_CLI_PAR_TCP_SOCKOPT_USER_TIMEOUT, /* unsigned int: 0 "system default", >0 see sockopt TCP_USER_TIMEOUT */
280};
281
282 int osmo_stream_cli_set_param(struct osmo_stream_cli *cli, enum osmo_stream_cli_param par,
283 void *val, size_t val_len);
284
osmo_stream_cli_set_addr
void osmo_stream_cli_set_addr(struct osmo_stream_cli *cli, const char *addr)
Set the remote address to which we connect.
Definition stream_cli.c:713
osmo_stream_cli_get_ofd
struct osmo_fd * osmo_stream_cli_get_ofd(struct osmo_stream_cli *cli)
Retrieve Osmocom File Descriptor of the stream client socket.
Definition stream_cli.c:985
osmo_stream_cli_set_param
int osmo_stream_cli_set_param(struct osmo_stream_cli *cli, enum osmo_stream_cli_param par, void *val, size_t val_len)
Set given parameter of stream client to given value.
Definition stream_cli.c:1497
osmo_stream_cli_recv
int osmo_stream_cli_recv(struct osmo_stream_cli *cli, struct msgb *msg)
Receive data via an Osmocom stream client in osmo_fd mode.
Definition stream_cli.c:1417
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 bind.
Definition stream_cli.c:786
osmo_stream_cli_get_name
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()).
Definition stream_cli.c:702
osmo_stream_cli_read_cb2_t
int(* osmo_stream_cli_read_cb2_t)(struct osmo_stream_cli *cli, int res, struct msgb *msg)
Completion call-back function when something was read from from the stream client socket.
Definition stream.h:217
osmo_stream_cli_reconnect
void osmo_stream_cli_reconnect(struct osmo_stream_cli *cli)
Re-connect an Osmocom Stream Client.
Definition stream_cli.c:254
osmo_stream_cli_open2
int osmo_stream_cli_open2(struct osmo_stream_cli *cli, int reconnect) OSMO_DEPRECATED("Use osmo_stream_cli_set_reconnect_timeout() or osmo_stream_cli_reconnect() instead")
DEPRECATED: use osmo_stream_cli_set_reconnect_timeout() or osmo_stream_cli_reconnect() instead!...
Definition stream_cli.c:1071
osmo_stream_cli_create
struct osmo_stream_cli * osmo_stream_cli_create(void *ctx)
Create an Osmocom stream client.
Definition stream_cli.c:500
osmo_stream_cli_set_ip_dscp
int osmo_stream_cli_set_ip_dscp(struct osmo_stream_cli *cli, uint8_t ip_dscp)
Set the DSCP (differentiated services code point) of the stream socket.
Definition stream_cli.c:1196
osmo_stream_cli_set_domain
int osmo_stream_cli_set_domain(struct osmo_stream_cli *cli, int domain)
Set the socket domain for the stream client link.
Definition stream_cli.c:905
osmo_stream_cli_set_local_port
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).
Definition stream_cli.c:762
osmo_stream_cli_set_type
int osmo_stream_cli_set_type(struct osmo_stream_cli *cli, int type)
Set the socket type for the stream server link.
Definition stream_cli.c:885
osmo_stream_cli_set_data
void osmo_stream_cli_set_data(struct osmo_stream_cli *cli, void *data)
Set application private data of the stream client socket.
Definition stream_cli.c:934
osmo_stream_cli_get_data
void * osmo_stream_cli_get_data(struct osmo_stream_cli *cli)
Retrieve application private data of the stream client socket.
Definition stream_cli.c:942
osmo_stream_cli_set_disconnect_cb
void osmo_stream_cli_set_disconnect_cb(struct osmo_stream_cli *cli, osmo_stream_cli_disconnect_cb_t disconnect_cb)
Set the call-back function called on disconnect of the stream client socket.
Definition stream_cli.c:1006
osmo_stream_cli_set_connect_cb
void osmo_stream_cli_set_connect_cb(struct osmo_stream_cli *cli, osmo_stream_cli_connect_cb_t connect_cb)
Set the call-back function called on connect of the stream client socket.
Definition stream_cli.c:997
osmo_stream_cli_set_local_addr
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).
Definition stream_cli.c:774
osmo_stream_cli_set_read_cb2
void osmo_stream_cli_set_read_cb2(struct osmo_stream_cli *cli, osmo_stream_cli_read_cb2_t read_cb)
Set the call-back function called to read from the stream client socket.
Definition stream_cli.c:1030
osmo_stream_cli_set_read_cb
void osmo_stream_cli_set_read_cb(struct osmo_stream_cli *cli, osmo_stream_cli_read_cb_t read_cb)
Set the call-back function called to read from the stream client socket.
Definition stream_cli.c:1017
osmo_stream_cli_is_connected
bool osmo_stream_cli_is_connected(struct osmo_stream_cli *cli)
Check if Osmocom Stream Client is in connected state.
Definition stream_cli.c:263
osmo_stream_cli_open
int osmo_stream_cli_open(struct osmo_stream_cli *cli)
Open connection of an Osmocom stream client.
Definition stream_cli.c:1225
osmo_stream_cli_set_tx_queue_max_length
int osmo_stream_cli_set_tx_queue_max_length(struct osmo_stream_cli *cli, unsigned int size)
Set the maximum length queue of the stream client.
Definition stream_cli.c:953
osmo_stream_cli_set_proto
void osmo_stream_cli_set_proto(struct osmo_stream_cli *cli, uint16_t proto)
Set the protocol for the stream client socket.
Definition stream_cli.c:811
osmo_stream_cli_destroy
void osmo_stream_cli_destroy(struct osmo_stream_cli *cli)
Destroy a Osmocom stream client (includes close).
Definition stream_cli.c:1040
osmo_stream_cli_set_nodelay
void osmo_stream_cli_set_nodelay(struct osmo_stream_cli *cli, bool nodelay)
Set the NODELAY socket option to avoid Nagle-like behavior.
Definition stream_cli.c:1136
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.
Definition stream_cli.c:725
osmo_stream_cli_send
void osmo_stream_cli_send(struct osmo_stream_cli *cli, struct msgb *msg)
Enqueue data to be sent via an Osmocom stream client.
Definition stream_cli.c:1360
osmo_stream_cli_set_segmentation_cb
void osmo_stream_cli_set_segmentation_cb(struct osmo_stream_cli *cli, osmo_stream_cli_segmentation_cb_t segmentation_cb)
Set the segmentation callback for the client.
Definition stream_cli.c:853
osmo_stream_cli_set_port
void osmo_stream_cli_set_port(struct osmo_stream_cli *cli, uint16_t port)
Set the remote port number to which we connect.
Definition stream_cli.c:750
osmo_stream_cli_get_iofd
struct osmo_io_fd * osmo_stream_cli_get_iofd(const struct osmo_stream_cli *cli)
Retrieve osmo_io descriptor of the stream client socket.
Definition stream_cli.c:303
osmo_stream_cli_set_priority
int osmo_stream_cli_set_priority(struct osmo_stream_cli *cli, int sk_prio)
Set the priority value of the stream socket.
Definition stream_cli.c:1165
osmo_stream_cli_set_name_f
void osmo_stream_cli_set_name_f(struct osmo_stream_cli *cli, const char *fmt,...)
Set a name on the cli object using arguments like printf() (used during logging).
Definition stream_cli.c:678
osmo_stream_cli_close
void osmo_stream_cli_close(struct osmo_stream_cli *cli)
Close an Osmocom Stream Client.
Definition stream_cli.c:222
osmo_stream_cli_set_reconnect_timeout
void osmo_stream_cli_set_reconnect_timeout(struct osmo_stream_cli *cli, int timeout)
Set the reconnect time of the stream client socket.
Definition stream_cli.c:925
osmo_stream_cli_set_name
void osmo_stream_cli_set_name(struct osmo_stream_cli *cli, const char *name)
Set a name on the cli object (used during logging).
Definition stream_cli.c:669
osmo_stream_cli_get_sockname
char * osmo_stream_cli_get_sockname(const struct osmo_stream_cli *cli)
Retrieve the stream client socket description.
Definition stream_cli.c:970
osmo_stream_cli_set_segmentation_cb2
void osmo_stream_cli_set_segmentation_cb2(struct osmo_stream_cli *cli, osmo_stream_cli_segmentation_cb2_t segmentation_cb2)
Set the segmentation callback for the client.
Definition stream_cli.c:870
osmo_stream_cli_clear_tx_queue
void osmo_stream_cli_clear_tx_queue(struct osmo_stream_cli *cli)
Clear the transmit queue of the stream client.
Definition stream_cli.c:1472
osmo_stream_cli_get_fd
int osmo_stream_cli_get_fd(const struct osmo_stream_cli *cli)
Retrieve file descriptor of the stream client socket.
Definition stream_cli.c:283
osmo_stream_srv_set_param
int osmo_stream_srv_set_param(struct osmo_stream_srv *conn, enum osmo_stream_srv_param par, void *val, size_t val_len)
Set given parameter of stream_srv to given value.
Definition stream_srv.c:1461
osmo_stream_srv_create
struct osmo_stream_srv * osmo_stream_srv_create(void *ctx, struct osmo_stream_srv_link *link, int fd, osmo_stream_srv_read_cb_t read_cb, osmo_stream_srv_closed_cb_t closed_cb, void *data)
Create a legacy osmo_fd mode Stream Server inside the specified link.
Definition stream_srv.c:976
osmo_stream_srv_link_set_type
int osmo_stream_srv_link_set_type(struct osmo_stream_srv_link *link, int type)
Set the socket type for the stream server link.
Definition stream_srv.c:370
osmo_stream_srv_set_name
void osmo_stream_srv_set_name(struct osmo_stream_srv *conn, const char *name)
Set a name on the srv object (used during logging).
Definition stream_srv.c:1070
osmo_stream_srv_link_set_accept_cb
void osmo_stream_srv_link_set_accept_cb(struct osmo_stream_srv_link *link, osmo_stream_srv_link_accept_cb_t accept_cb)
Set the accept() call-back of the stream server link.
Definition stream_srv.c:527
osmo_stream_srv_link_set_proto
void osmo_stream_srv_link_set_proto(struct osmo_stream_srv_link *link, uint16_t proto)
Set the protocol for the stream server link.
Definition stream_srv.c:356
osmo_stream_srv_link_is_opened
bool osmo_stream_srv_link_is_opened(const struct osmo_stream_srv_link *link)
Check whether the stream server link is opened.
Definition stream_srv.c:621
osmo_stream_srv_set_segmentation_cb2
void osmo_stream_srv_set_segmentation_cb2(struct osmo_stream_srv *conn, osmo_stream_srv_segmentation_cb2_t segmentation_cb2)
Set the segmentation callback for target osmo_stream_srv structure.
Definition stream_srv.c:1217
osmo_stream_srv_link_set_priority
int osmo_stream_srv_link_set_priority(struct osmo_stream_srv_link *link, int sk_prio)
Set the priority value of the stream socket.
Definition stream_srv.c:282
osmo_stream_srv_link_set_nodelay
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.
Definition stream_srv.c:266
osmo_stream_srv_get_ofd
struct osmo_fd * osmo_stream_srv_get_ofd(struct osmo_stream_srv *srv)
Retrieve Osmocom File Descriptor of a stream server in osmo_fd mode.
Definition stream_srv.c:1254
osmo_stream_srv_destroy
void osmo_stream_srv_destroy(struct osmo_stream_srv *conn)
Destroy given Stream Server.
Definition stream_srv.c:1302
osmo_stream_srv_get_sockname
const char * osmo_stream_srv_get_sockname(const struct osmo_stream_srv *conn)
Retrieve the stream server socket description.
Definition stream_srv.c:1240
osmo_stream_srv_link_set_ip_dscp
int osmo_stream_srv_link_set_ip_dscp(struct osmo_stream_srv_link *link, uint8_t ip_dscp)
Set the DSCP (differentiated services code point) of the stream socket.
Definition stream_srv.c:295
osmo_stream_srv_set_segmentation_cb
void osmo_stream_srv_set_segmentation_cb(struct osmo_stream_srv *conn, osmo_stream_srv_segmentation_cb_t segmentation_cb)
Set the segmentation callback for target osmo_stream_srv structure.
Definition stream_srv.c:1198
osmo_stream_srv_read_cb2_t
int(* osmo_stream_srv_read_cb2_t)(struct osmo_stream_srv *conn, int res, struct msgb *msg)
Completion call-back function when something was read from from the stream client socket.
Definition stream.h:124
osmo_stream_srv_link_set_data
void osmo_stream_srv_link_set_data(struct osmo_stream_srv_link *link, void *data)
Set application private data of the stream server link.
Definition stream_srv.c:410
osmo_stream_srv_link_open
int osmo_stream_srv_link_open(struct osmo_stream_srv_link *link)
Open the stream server link.
Definition stream_srv.c:568
osmo_stream_srv_link_get_name
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()).
Definition stream_srv.c:254
osmo_stream_srv_link_set_param
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)
Set given parameter of stream_srv_link to given value.
Definition stream_srv.c:651
osmo_stream_srv_link_set_port
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.
Definition stream_srv.c:343
osmo_stream_srv_set_name_f
void osmo_stream_srv_set_name_f(struct osmo_stream_srv *conn, const char *fmt,...)
Set a name on the srv object using arguments like printf() (used during logging).
Definition stream_srv.c:1079
osmo_stream_srv_link_get_ofd
struct osmo_fd * osmo_stream_srv_link_get_ofd(struct osmo_stream_srv_link *link)
Retrieve Osmocom File Descriptor of the stream server link.
Definition stream_srv.c:508
osmo_stream_srv_link_get_sockname
char * osmo_stream_srv_link_get_sockname(const struct osmo_stream_srv_link *link)
Retrieve description of the stream server link e.
Definition stream_srv.c:495
osmo_stream_srv_get_fd
int osmo_stream_srv_get_fd(const struct osmo_stream_srv *srv)
Retrieve File Descriptor of the stream server.
Definition stream_srv.c:1264
osmo_stream_srv_set_flush_and_destroy
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.
Definition stream_srv.c:1142
osmo_stream_srv_link_destroy
void osmo_stream_srv_link_destroy(struct osmo_stream_srv_link *link)
Destroy the stream server link.
Definition stream_srv.c:556
osmo_stream_srv_create2
struct osmo_stream_srv * osmo_stream_srv_create2(void *ctx, struct osmo_stream_srv_link *link, int fd, void *data)
Create an osmo_iofd mode Stream Server inside the specified link.
Definition stream_srv.c:1022
osmo_stream_srv_link_set_msgb_alloc_info
int osmo_stream_srv_link_set_msgb_alloc_info(struct osmo_stream_srv_link *link, unsigned int size, unsigned int headroom)
Set the msgb allocation parameters on child osmo_stream_srv objects.
Definition stream_srv.c:542
osmo_stream_srv_link_set_domain
int osmo_stream_srv_link_set_domain(struct osmo_stream_srv_link *link, int domain)
Set the socket domain for the stream server link.
Definition stream_srv.c:390
osmo_stream_srv_set_data
void osmo_stream_srv_set_data(struct osmo_stream_srv *conn, void *data)
Set application private data of the stream server.
Definition stream_srv.c:1151
osmo_stream_srv_get_master
struct osmo_stream_srv_link * osmo_stream_srv_get_master(struct osmo_stream_srv *conn)
Retrieve the master (Link) from a Stream Server.
Definition stream_srv.c:1292
osmo_stream_srv_get_iofd
struct osmo_io_fd * osmo_stream_srv_get_iofd(const struct osmo_stream_srv *srv)
Retrieve osmo_io descriptor of the stream server socket.
Definition stream_srv.c:1283
osmo_stream_srv_send
void osmo_stream_srv_send(struct osmo_stream_srv *conn, struct msgb *msg)
Enqueue data to be sent via an Osmocom stream server.
Definition stream_srv.c:1330
osmo_stream_srv_link_create
struct osmo_stream_srv_link * osmo_stream_srv_link_create(void *ctx)
Create an Osmocom Stream Server Link.
Definition stream_srv.c:221
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.
Definition stream_srv.c:319
osmo_stream_srv_recv
int osmo_stream_srv_recv(struct osmo_stream_srv *conn, struct msgb *msg)
Receive data via an Osmocom stream server in osmo_fd mode.
Definition stream_srv.c:1384
osmo_stream_srv_link_get_data
void * osmo_stream_srv_link_get_data(struct osmo_stream_srv_link *link)
Retrieve application private data of the stream server link.
Definition stream_srv.c:419
osmo_stream_srv_link_set_addr
void osmo_stream_srv_link_set_addr(struct osmo_stream_srv_link *link, const char *addr)
Set the local address to which we bind.
Definition stream_srv.c:306
osmo_stream_srv_set_read_cb
void osmo_stream_srv_set_read_cb(struct osmo_stream_srv *conn, osmo_stream_srv_read_cb2_t read_cb)
Set the call-back function for incoming data on an osmo_io stream_srv.
Definition stream_srv.c:1117
osmo_stream_srv_link_close
void osmo_stream_srv_link_close(struct osmo_stream_srv_link *link)
Close the stream server link and unregister from select loop.
Definition stream_srv.c:635
osmo_stream_srv_get_name
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()).
Definition stream_srv.c:1103
osmo_stream_srv_link_set_tx_queue_max_length
int osmo_stream_srv_link_set_tx_queue_max_length(struct osmo_stream_srv_link *link, unsigned int size)
Set the maximum length queue of the stream servers accepted and allocated from this server link.
Definition stream_srv.c:430
osmo_stream_srv_link_set_name
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).
Definition stream_srv.c:245
osmo_stream_srv_get_data
void * osmo_stream_srv_get_data(struct osmo_stream_srv *conn)
Retrieve application private data of the stream server.
Definition stream_srv.c:1231
osmo_stream_srv_link_get_fd
int osmo_stream_srv_link_get_fd(const struct osmo_stream_srv_link *link)
Retrieve File Descriptor of the stream server link.
Definition stream_srv.c:516
osmo_stream_srv_set_closed_cb
void osmo_stream_srv_set_closed_cb(struct osmo_stream_srv *conn, osmo_stream_srv_closed_cb_t close_cb)
Set the call-back function called when the stream server socket was closed.
Definition stream_srv.c:1130