src: shorter stream function names

%s/_client_conn_/_cli_/g
%s/_server_conn_/_srv_/g
%s/_client_/cli/g
%s/server/srv/g
%s/RECONFIG/RECONF/g
%s/SERVER/SRV/g
%s/CLIENT/CLI/g
This commit is contained in:
Pablo Neira Ayuso 2012-08-15 21:14:38 +02:00
parent ad2e9d637e
commit cee5fb36da
7 changed files with 382 additions and 389 deletions

View File

@ -43,7 +43,7 @@ const struct log_info osmo_stream_client_test_log_info = {
.num_cat = ARRAY_SIZE(osmo_stream_client_test_cat), .num_cat = ARRAY_SIZE(osmo_stream_client_test_cat),
}; };
static struct osmo_stream_client_conn *conn; static struct osmo_stream_cli *conn;
void sighandler(int foo) void sighandler(int foo)
{ {
@ -51,9 +51,9 @@ void sighandler(int foo)
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }
static int connect_cb(struct osmo_stream_client_conn *conn) static int connect_cb(struct osmo_stream_cli *conn)
{ {
int *__num_msgs = osmo_stream_client_conn_get_data(conn); int *__num_msgs = osmo_stream_cli_get_data(conn);
int num_msgs = *__num_msgs, i; int num_msgs = *__num_msgs, i;
LOGP(DIPATEST, LOGL_NOTICE, "connected\n"); LOGP(DIPATEST, LOGL_NOTICE, "connected\n");
@ -85,7 +85,7 @@ static int connect_cb(struct osmo_stream_client_conn *conn)
osmo_ipa_msg_push_header(msg, IPAC_PROTO_OSMO); osmo_ipa_msg_push_header(msg, IPAC_PROTO_OSMO);
osmo_stream_client_conn_send(conn, msg); osmo_stream_cli_send(conn, msg);
LOGP(DIPATEST, LOGL_DEBUG, "enqueueing msg %d of " LOGP(DIPATEST, LOGL_DEBUG, "enqueueing msg %d of "
"%d bytes to be sent\n", i, msg->len); "%d bytes to be sent\n", i, msg->len);
@ -93,10 +93,10 @@ static int connect_cb(struct osmo_stream_client_conn *conn)
return 0; return 0;
} }
static int read_cb(struct osmo_stream_client_conn *conn) static int read_cb(struct osmo_stream_cli *conn)
{ {
struct msgb *msg; struct msgb *msg;
struct osmo_fd *ofd = osmo_stream_client_conn_get_ofd(conn); struct osmo_fd *ofd = osmo_stream_cli_get_ofd(conn);
LOGP(DIPATEST, LOGL_DEBUG, "received message from stream\n"); LOGP(DIPATEST, LOGL_DEBUG, "received message from stream\n");
@ -162,24 +162,24 @@ int main(int argc, char *argv[])
* initialize stream client. * initialize stream client.
*/ */
conn = osmo_stream_client_conn_create(tall_test); conn = osmo_stream_cli_create(tall_test);
if (conn == NULL) { if (conn == NULL) {
fprintf(stderr, "cannot create client\n"); fprintf(stderr, "cannot create client\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
osmo_stream_client_conn_set_addr(conn, "127.0.0.1"); osmo_stream_cli_set_addr(conn, "127.0.0.1");
osmo_stream_client_conn_set_port(conn, 10000); osmo_stream_cli_set_port(conn, 10000);
osmo_stream_client_conn_set_connect_cb(conn, connect_cb); osmo_stream_cli_set_connect_cb(conn, connect_cb);
osmo_stream_client_conn_set_read_cb(conn, read_cb); osmo_stream_cli_set_read_cb(conn, read_cb);
osmo_stream_client_conn_set_data(conn, &num_msgs); osmo_stream_cli_set_data(conn, &num_msgs);
if (osmo_stream_client_conn_open(conn) < 0) { if (osmo_stream_cli_open(conn) < 0) {
fprintf(stderr, "cannot open client\n"); fprintf(stderr, "cannot open client\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
int on = 1, ret; int on = 1, ret;
struct osmo_fd *ofd = osmo_stream_client_conn_get_ofd(conn); struct osmo_fd *ofd = osmo_stream_cli_get_ofd(conn);
ret = setsockopt(ofd->fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); ret = setsockopt(ofd->fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
if (ret < 0) { if (ret < 0) {

View File

@ -1,4 +1,4 @@
/* IPA stream server example */ /* IPA stream srv example */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -19,7 +19,7 @@ static void *tall_test;
#define DSTREAMTEST 0 #define DSTREAMTEST 0
struct log_info_cat osmo_stream_server_test_cat[] = { struct log_info_cat osmo_stream_srv_test_cat[] = {
[DSTREAMTEST] = { [DSTREAMTEST] = {
.name = "DSTREAMTEST", .name = "DSTREAMTEST",
.description = "STREAMSERVER-mode test", .description = "STREAMSERVER-mode test",
@ -28,14 +28,14 @@ struct log_info_cat osmo_stream_server_test_cat[] = {
}, },
}; };
const struct log_info osmo_stream_server_test_log_info = { const struct log_info osmo_stream_srv_test_log_info = {
.filter_fn = NULL, .filter_fn = NULL,
.cat = osmo_stream_server_test_cat, .cat = osmo_stream_srv_test_cat,
.num_cat = ARRAY_SIZE(osmo_stream_server_test_cat), .num_cat = ARRAY_SIZE(osmo_stream_srv_test_cat),
}; };
static struct osmo_stream_server_link *server; static struct osmo_stream_srv_link *srv;
static struct osmo_stream_server_conn *conn; static struct osmo_stream_srv *conn;
void sighandler(int foo) void sighandler(int foo)
{ {
@ -43,10 +43,10 @@ void sighandler(int foo)
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }
int read_cb(struct osmo_stream_server_conn *conn) int read_cb(struct osmo_stream_srv *conn)
{ {
struct msgb *msg; struct msgb *msg;
struct osmo_fd *ofd = osmo_stream_server_conn_get_ofd(conn); struct osmo_fd *ofd = osmo_stream_srv_get_ofd(conn);
LOGP(DSTREAMTEST, LOGL_DEBUG, "received message from stream\n"); LOGP(DSTREAMTEST, LOGL_DEBUG, "received message from stream\n");
@ -57,21 +57,21 @@ int read_cb(struct osmo_stream_server_conn *conn)
} }
if (osmo_ipa_msg_recv(ofd->fd, msg) <= 0) { if (osmo_ipa_msg_recv(ofd->fd, msg) <= 0) {
LOGP(DSTREAMTEST, LOGL_ERROR, "cannot receive message\n"); LOGP(DSTREAMTEST, LOGL_ERROR, "cannot receive message\n");
osmo_stream_server_conn_destroy(conn); osmo_stream_srv_destroy(conn);
msgb_free(msg); msgb_free(msg);
return 0; return 0;
} }
osmo_stream_server_conn_send(conn, msg); osmo_stream_srv_send(conn, msg);
return 0; return 0;
} }
static int close_cb(struct osmo_stream_server_conn *dummy) static int close_cb(struct osmo_stream_srv *dummy)
{ {
conn = NULL; conn = NULL;
return 0; return 0;
} }
static int accept_cb(struct osmo_stream_server_link *server, int fd) static int accept_cb(struct osmo_stream_srv_link *srv, int fd)
{ {
if (conn != NULL) { if (conn != NULL) {
LOGP(DSTREAMTEST, LOGL_ERROR, "Sorry, this example only " LOGP(DSTREAMTEST, LOGL_ERROR, "Sorry, this example only "
@ -79,8 +79,8 @@ static int accept_cb(struct osmo_stream_server_link *server, int fd)
return -1; return -1;
} }
conn = osmo_stream_server_conn_create(tall_test, server, fd, conn = osmo_stream_srv_create(tall_test, srv, fd,
read_cb, close_cb, NULL); read_cb, close_cb, NULL);
if (conn == NULL) { if (conn == NULL) {
LOGP(DSTREAMTEST, LOGL_ERROR, LOGP(DSTREAMTEST, LOGL_ERROR,
"error while creating connection\n"); "error while creating connection\n");
@ -92,28 +92,28 @@ static int accept_cb(struct osmo_stream_server_link *server, int fd)
int main(void) int main(void)
{ {
tall_test = talloc_named_const(NULL, 1, "osmo_stream_server_test"); tall_test = talloc_named_const(NULL, 1, "osmo_stream_srv_test");
osmo_init_logging(&osmo_stream_server_test_log_info); osmo_init_logging(&osmo_stream_srv_test_log_info);
log_set_log_level(osmo_stderr_target, LOGL_NOTICE); log_set_log_level(osmo_stderr_target, LOGL_NOTICE);
/* /*
* initialize stream server. * initialize stream srv.
*/ */
server = osmo_stream_server_link_create(tall_test); srv = osmo_stream_srv_link_create(tall_test);
if (server == NULL) { if (srv == NULL) {
fprintf(stderr, "cannot create client\n"); fprintf(stderr, "cannot create client\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
osmo_stream_server_link_set_addr(server, "127.0.0.1"); osmo_stream_srv_link_set_addr(srv, "127.0.0.1");
osmo_stream_server_link_set_port(server, 10000); osmo_stream_srv_link_set_port(srv, 10000);
osmo_stream_server_link_set_accept_cb(server, accept_cb); osmo_stream_srv_link_set_accept_cb(srv, accept_cb);
int on = 1, ret; int on = 1, ret;
struct osmo_fd *ofd = osmo_stream_server_link_get_ofd(server); struct osmo_fd *ofd = osmo_stream_srv_link_get_ofd(srv);
if (osmo_stream_server_link_open(server) < 0) { if (osmo_stream_srv_link_open(srv) < 0) {
fprintf(stderr, "cannot open client\n"); fprintf(stderr, "cannot open client\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }

View File

@ -14,7 +14,7 @@
#define DSTREAMTEST 0 #define DSTREAMTEST 0
struct log_info_cat osmo_stream_client_test_cat[] = { struct log_info_cat osmo_stream_cli_test_cat[] = {
[DSTREAMTEST] = { [DSTREAMTEST] = {
.name = "DSTREAMTEST", .name = "DSTREAMTEST",
.description = "STREAMCLIENT-mode test", .description = "STREAMCLIENT-mode test",
@ -23,13 +23,13 @@ struct log_info_cat osmo_stream_client_test_cat[] = {
}, },
}; };
const struct log_info osmo_stream_client_test_log_info = { const struct log_info osmo_stream_cli_test_log_info = {
.filter_fn = NULL, .filter_fn = NULL,
.cat = osmo_stream_client_test_cat, .cat = osmo_stream_cli_test_cat,
.num_cat = ARRAY_SIZE(osmo_stream_client_test_cat), .num_cat = ARRAY_SIZE(osmo_stream_cli_test_cat),
}; };
static struct osmo_stream_client_conn *conn; static struct osmo_stream_cli *conn;
void sighandler(int foo) void sighandler(int foo)
{ {
@ -37,13 +37,13 @@ void sighandler(int foo)
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }
static int connect_cb(struct osmo_stream_client_conn *conn) static int connect_cb(struct osmo_stream_cli *conn)
{ {
LOGP(DSTREAMTEST, LOGL_NOTICE, "connected\n"); LOGP(DSTREAMTEST, LOGL_NOTICE, "connected\n");
return 0; return 0;
} }
static int read_cb(struct osmo_stream_client_conn *conn) static int read_cb(struct osmo_stream_cli *conn)
{ {
struct msgb *msg; struct msgb *msg;
@ -54,7 +54,7 @@ static int read_cb(struct osmo_stream_client_conn *conn)
LOGP(DSTREAMTEST, LOGL_ERROR, "cannot allocate message\n"); LOGP(DSTREAMTEST, LOGL_ERROR, "cannot allocate message\n");
return 0; return 0;
} }
if (osmo_stream_client_conn_recv(conn, msg) < 0) { if (osmo_stream_cli_recv(conn, msg) < 0) {
LOGP(DSTREAMTEST, LOGL_ERROR, "cannot receive message\n"); LOGP(DSTREAMTEST, LOGL_ERROR, "cannot receive message\n");
return 0; return 0;
} }
@ -83,7 +83,7 @@ static int kbd_cb(struct osmo_fd *fd, unsigned int what)
ptr = msgb_put(msg, strlen(buf)); ptr = msgb_put(msg, strlen(buf));
memcpy(ptr, buf, ret); memcpy(ptr, buf, ret);
osmo_stream_client_conn_send(conn, msg); osmo_stream_cli_send(conn, msg);
LOGP(DSTREAMTEST, LOGL_NOTICE, "message of %d bytes sent\n", msg->len); LOGP(DSTREAMTEST, LOGL_NOTICE, "message of %d bytes sent\n", msg->len);
@ -94,27 +94,27 @@ int main(void)
{ {
struct osmo_fd *kbd_ofd; struct osmo_fd *kbd_ofd;
tall_test = talloc_named_const(NULL, 1, "osmo_stream_client_test"); tall_test = talloc_named_const(NULL, 1, "osmo_stream_cli_test");
osmo_init_logging(&osmo_stream_client_test_log_info); osmo_init_logging(&osmo_stream_cli_test_log_info);
log_set_log_level(osmo_stderr_target, 1); log_set_log_level(osmo_stderr_target, 1);
/* /*
* initialize stream client. * initialize stream cli.
*/ */
conn = osmo_stream_client_conn_create(tall_test); conn = osmo_stream_cli_create(tall_test);
if (conn == NULL) { if (conn == NULL) {
fprintf(stderr, "cannot create client\n"); fprintf(stderr, "cannot create cli\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
osmo_stream_client_conn_set_addr(conn, "127.0.0.1"); osmo_stream_cli_set_addr(conn, "127.0.0.1");
osmo_stream_client_conn_set_port(conn, 10000); osmo_stream_cli_set_port(conn, 10000);
osmo_stream_client_conn_set_connect_cb(conn, connect_cb); osmo_stream_cli_set_connect_cb(conn, connect_cb);
osmo_stream_client_conn_set_read_cb(conn, read_cb); osmo_stream_cli_set_read_cb(conn, read_cb);
if (osmo_stream_client_conn_open(conn) < 0) { if (osmo_stream_cli_open(conn) < 0) {
fprintf(stderr, "cannot open client\n"); fprintf(stderr, "cannot open cli\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }

View File

@ -16,7 +16,7 @@ static void *tall_test;
#define DSTREAMTEST 0 #define DSTREAMTEST 0
struct log_info_cat osmo_stream_server_test_cat[] = { struct log_info_cat osmo_stream_srv_test_cat[] = {
[DSTREAMTEST] = { [DSTREAMTEST] = {
.name = "DSTREAMTEST", .name = "DSTREAMTEST",
.description = "STREAMSERVER-mode test", .description = "STREAMSERVER-mode test",
@ -25,14 +25,14 @@ struct log_info_cat osmo_stream_server_test_cat[] = {
}, },
}; };
const struct log_info osmo_stream_server_test_log_info = { const struct log_info osmo_stream_srv_test_log_info = {
.filter_fn = NULL, .filter_fn = NULL,
.cat = osmo_stream_server_test_cat, .cat = osmo_stream_srv_test_cat,
.num_cat = ARRAY_SIZE(osmo_stream_server_test_cat), .num_cat = ARRAY_SIZE(osmo_stream_srv_test_cat),
}; };
static struct osmo_stream_server_link *server; static struct osmo_stream_srv_link *srv;
static struct osmo_stream_server_conn *conn; static struct osmo_stream_srv *conn;
void sighandler(int foo) void sighandler(int foo)
@ -41,7 +41,7 @@ void sighandler(int foo)
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }
int read_cb(struct osmo_stream_server_conn *conn) int read_cb(struct osmo_stream_srv *conn)
{ {
struct msgb *msg; struct msgb *msg;
@ -52,7 +52,7 @@ int read_cb(struct osmo_stream_server_conn *conn)
LOGP(DSTREAMTEST, LOGL_ERROR, "cannot allocate message\n"); LOGP(DSTREAMTEST, LOGL_ERROR, "cannot allocate message\n");
return 0; return 0;
} }
if (osmo_stream_server_conn_recv(conn, msg) < 0) { if (osmo_stream_srv_recv(conn, msg) < 0) {
LOGP(DSTREAMTEST, LOGL_ERROR, "cannot receive message\n"); LOGP(DSTREAMTEST, LOGL_ERROR, "cannot receive message\n");
return 0; return 0;
} }
@ -60,13 +60,13 @@ int read_cb(struct osmo_stream_server_conn *conn)
return 0; return 0;
} }
static int close_cb(struct osmo_stream_server_conn *dummy) static int close_cb(struct osmo_stream_srv *dummy)
{ {
conn = NULL; conn = NULL;
return 0; return 0;
} }
static int accept_cb(struct osmo_stream_server_link *server, int fd) static int accept_cb(struct osmo_stream_srv_link *srv, int fd)
{ {
if (conn != NULL) { if (conn != NULL) {
LOGP(DSTREAMTEST, LOGL_ERROR, "Sorry, this example only " LOGP(DSTREAMTEST, LOGL_ERROR, "Sorry, this example only "
@ -74,7 +74,7 @@ static int accept_cb(struct osmo_stream_server_link *server, int fd)
return -1; return -1;
} }
conn = osmo_stream_server_conn_create(tall_test, server, fd, read_cb, conn = osmo_stream_srv_create(tall_test, srv, fd, read_cb,
close_cb, NULL); close_cb, NULL);
if (conn == NULL) { if (conn == NULL) {
LOGP(DSTREAMTEST, LOGL_ERROR, LOGP(DSTREAMTEST, LOGL_ERROR,
@ -101,14 +101,14 @@ static int kbd_cb(struct osmo_fd *fd, unsigned int what)
return 0; return 0;
} }
msg = msgb_alloc(1024, "osmo_stream_server_test"); msg = msgb_alloc(1024, "osmo_stream_srv_test");
if (msg == NULL) { if (msg == NULL) {
LOGP(DSTREAMTEST, LOGL_ERROR, "cannot allocate message\n"); LOGP(DSTREAMTEST, LOGL_ERROR, "cannot allocate message\n");
return 0; return 0;
} }
ptr = msgb_put(msg, strlen(buf)); ptr = msgb_put(msg, strlen(buf));
memcpy(ptr, buf, strlen(buf)); memcpy(ptr, buf, strlen(buf));
osmo_stream_server_conn_send(conn, msg); osmo_stream_srv_send(conn, msg);
LOGP(DSTREAMTEST, LOGL_NOTICE, "message of %d bytes sent\n", msg->len); LOGP(DSTREAMTEST, LOGL_NOTICE, "message of %d bytes sent\n", msg->len);
@ -119,25 +119,25 @@ int main(void)
{ {
struct osmo_fd *kbd_ofd; struct osmo_fd *kbd_ofd;
tall_test = talloc_named_const(NULL, 1, "osmo_stream_server_test"); tall_test = talloc_named_const(NULL, 1, "osmo_stream_srv_test");
osmo_init_logging(&osmo_stream_server_test_log_info); osmo_init_logging(&osmo_stream_srv_test_log_info);
log_set_log_level(osmo_stderr_target, 1); log_set_log_level(osmo_stderr_target, 1);
/* /*
* initialize stream server. * initialize stream srv.
*/ */
server = osmo_stream_server_link_create(tall_test); srv = osmo_stream_srv_link_create(tall_test);
if (server == NULL) { if (srv == NULL) {
fprintf(stderr, "cannot create client\n"); fprintf(stderr, "cannot create client\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
osmo_stream_server_link_set_addr(server, "127.0.0.1"); osmo_stream_srv_link_set_addr(srv, "127.0.0.1");
osmo_stream_server_link_set_port(server, 10000); osmo_stream_srv_link_set_port(srv, 10000);
osmo_stream_server_link_set_accept_cb(server, accept_cb); osmo_stream_srv_link_set_accept_cb(srv, accept_cb);
if (osmo_stream_server_link_open(server) < 0) { if (osmo_stream_srv_link_open(srv) < 0) {
fprintf(stderr, "cannot open client\n"); fprintf(stderr, "cannot open client\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
@ -149,7 +149,7 @@ int main(void)
} }
kbd_ofd->fd = STDIN_FILENO; kbd_ofd->fd = STDIN_FILENO;
kbd_ofd->when = BSC_FD_READ; kbd_ofd->when = BSC_FD_READ;
kbd_ofd->data = server; kbd_ofd->data = srv;
kbd_ofd->cb = kbd_cb; kbd_ofd->cb = kbd_cb;
osmo_fd_register(kbd_ofd); osmo_fd_register(kbd_ofd);

View File

@ -1,51 +1,51 @@
#ifndef _OSMO_STREAM_H_ #ifndef _OSMO_STREAM_H_
#define _OSMO_STREAM_H_ #define _OSMO_STREAM_H_
struct osmo_stream_server_link; struct osmo_stream_srv_link;
struct osmo_stream_server_link *osmo_stream_server_link_create(void *ctx); struct osmo_stream_srv_link *osmo_stream_srv_link_create(void *ctx);
void osmo_stream_server_link_destroy(struct osmo_stream_server_link *link); void osmo_stream_srv_link_destroy(struct osmo_stream_srv_link *link);
void osmo_stream_server_link_set_addr(struct osmo_stream_server_link *link, const char *addr); void osmo_stream_srv_link_set_addr(struct osmo_stream_srv_link *link, const char *addr);
void osmo_stream_server_link_set_port(struct osmo_stream_server_link *link, uint16_t port); void osmo_stream_srv_link_set_port(struct osmo_stream_srv_link *link, uint16_t port);
void osmo_stream_server_link_set_accept_cb(struct osmo_stream_server_link *link, int (*accept_cb)(struct osmo_stream_server_link *link, int fd)); 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));
void osmo_stream_server_link_set_data(struct osmo_stream_server_link *link, void *data); void osmo_stream_srv_link_set_data(struct osmo_stream_srv_link *link, void *data);
void *osmo_stream_server_link_get_data(struct osmo_stream_server_link *link); void *osmo_stream_srv_link_get_data(struct osmo_stream_srv_link *link);
struct osmo_fd *osmo_stream_server_link_get_ofd(struct osmo_stream_server_link *link); struct osmo_fd *osmo_stream_srv_link_get_ofd(struct osmo_stream_srv_link *link);
int osmo_stream_server_link_open(struct osmo_stream_server_link *link); int osmo_stream_srv_link_open(struct osmo_stream_srv_link *link);
void osmo_stream_server_link_close(struct osmo_stream_server_link *link); void osmo_stream_srv_link_close(struct osmo_stream_srv_link *link);
struct osmo_stream_server_conn; struct osmo_stream_srv;
struct osmo_stream_server_conn *osmo_stream_server_conn_create(void *ctx, struct osmo_stream_server_link *link, int fd, int (*cb)(struct osmo_stream_server_conn *conn), int (*closed_cb)(struct osmo_stream_server_conn *conn), void *data); 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);
void *osmo_stream_server_conn_get_data(struct osmo_stream_server_conn *conn); void *osmo_stream_srv_get_data(struct osmo_stream_srv *conn);
struct osmo_fd *osmo_stream_server_conn_get_ofd(struct osmo_stream_server_conn *link); struct osmo_fd *osmo_stream_srv_get_ofd(struct osmo_stream_srv *srv);
void osmo_stream_server_conn_destroy(struct osmo_stream_server_conn *conn); void osmo_stream_srv_destroy(struct osmo_stream_srv *conn);
void osmo_stream_server_conn_set_data(struct osmo_stream_server_conn *conn, void *data); void osmo_stream_srv_set_data(struct osmo_stream_srv *conn, void *data);
void osmo_stream_server_conn_send(struct osmo_stream_server_conn *conn, struct msgb *msg); void osmo_stream_srv_send(struct osmo_stream_srv *conn, struct msgb *msg);
int osmo_stream_server_conn_recv(struct osmo_stream_server_conn *conn, struct msgb *msg); int osmo_stream_srv_recv(struct osmo_stream_srv *conn, struct msgb *msg);
struct osmo_stream_client_conn; struct osmo_stream_cli;
void osmo_stream_client_conn_set_addr(struct osmo_stream_client_conn *link, const char *addr); void osmo_stream_cli_set_addr(struct osmo_stream_cli *cli, const char *addr);
void osmo_stream_client_conn_set_port(struct osmo_stream_client_conn *link, uint16_t port); void osmo_stream_cli_set_port(struct osmo_stream_cli *cli, uint16_t port);
void osmo_stream_client_conn_set_data(struct osmo_stream_client_conn *link, void *data); void osmo_stream_cli_set_data(struct osmo_stream_cli *cli, void *data);
void osmo_stream_client_conn_set_reconnect_timeout(struct osmo_stream_client_conn *link, int timeout); void osmo_stream_cli_set_reconnect_timeout(struct osmo_stream_cli *cli, int timeout);
void *osmo_stream_client_conn_get_data(struct osmo_stream_client_conn *link); void *osmo_stream_cli_get_data(struct osmo_stream_cli *cli);
struct osmo_fd *osmo_stream_client_conn_get_ofd(struct osmo_stream_client_conn *link); struct osmo_fd *osmo_stream_cli_get_ofd(struct osmo_stream_cli *cli);
void osmo_stream_client_conn_set_connect_cb(struct osmo_stream_client_conn *link, int (*connect_cb)(struct osmo_stream_client_conn *link)); void osmo_stream_cli_set_connect_cb(struct osmo_stream_cli *cli, int (*connect_cb)(struct osmo_stream_cli *cli));
void osmo_stream_client_conn_set_read_cb(struct osmo_stream_client_conn *link, int (*read_cb)(struct osmo_stream_client_conn *link)); void osmo_stream_cli_set_read_cb(struct osmo_stream_cli *cli, int (*read_cb)(struct osmo_stream_cli *cli));
struct osmo_stream_client_conn *osmo_stream_client_conn_create(void *ctx); struct osmo_stream_cli *osmo_stream_cli_create(void *ctx);
void osmo_stream_client_conn_destroy(struct osmo_stream_client_conn *link); void osmo_stream_cli_destroy(struct osmo_stream_cli *cli);
int osmo_stream_client_conn_open(struct osmo_stream_client_conn *link); int osmo_stream_cli_open(struct osmo_stream_cli *cli);
void osmo_stream_client_conn_close(struct osmo_stream_client_conn *link); void osmo_stream_cli_close(struct osmo_stream_cli *cli);
void osmo_stream_client_conn_send(struct osmo_stream_client_conn *link, struct msgb *msg); void osmo_stream_cli_send(struct osmo_stream_cli *cli, struct msgb *msg);
int osmo_stream_client_conn_recv(struct osmo_stream_client_conn *conn, struct msgb *msg); int osmo_stream_cli_recv(struct osmo_stream_cli *conn, struct msgb *msg);
#endif #endif

View File

@ -21,12 +21,12 @@
static void *abis_ipa_server_tall; static void *abis_ipa_server_tall;
static int oml_accept_cb(struct osmo_stream_server_link *server, int fd); static int oml_accept_cb(struct osmo_stream_srv_link *server, int fd);
static int rsl_accept_cb(struct osmo_stream_server_link *server, int fd); static int rsl_accept_cb(struct osmo_stream_srv_link *server, int fd);
struct chan_abis_ipa_server { struct chan_abis_ipa_server {
struct osmo_stream_server_link *oml; struct osmo_stream_srv_link *oml;
struct osmo_stream_server_link *rsl; struct osmo_stream_srv_link *rsl;
struct llist_head bts_list; struct llist_head bts_list;
struct llist_head conn_list; struct llist_head conn_list;
@ -40,55 +40,55 @@ struct ipa_unit {
uint16_t bts_id; uint16_t bts_id;
}; };
struct ipa_conn { struct ipa {
struct llist_head head; struct llist_head head;
struct ipa_unit *unit; struct ipa_unit *unit;
struct osmo_chan *chan; struct osmo_chan *chan;
struct osmo_stream_server_conn *oml; struct osmo_stream_srv *oml;
struct osmo_stream_server_conn *rsl; struct osmo_stream_srv *rsl;
}; };
static int chan_abis_ipa_server_create(struct osmo_chan *chan) static int chan_abis_ipa_server_create(struct osmo_chan *chan)
{ {
struct chan_abis_ipa_server *c = struct chan_abis_ipa_server *c =
(struct chan_abis_ipa_server *)chan->data; (struct chan_abis_ipa_server *)chan->data;
struct ipa_conn *ipa_conn; struct ipa *ipa;
/* dummy connection. */ /* dummy connection. */
ipa_conn = talloc_zero(chan->ctx, struct ipa_conn); ipa = talloc_zero(chan->ctx, struct ipa);
if (ipa_conn == NULL) if (ipa == NULL)
goto err; goto err;
ipa_conn->chan = chan; ipa->chan = chan;
c->oml = osmo_stream_server_link_create(abis_ipa_server_tall); c->oml = osmo_stream_srv_link_create(abis_ipa_server_tall);
if (c->oml == NULL) if (c->oml == NULL)
goto err_oml; goto err_oml;
/* default address and port for OML. */ /* default address and port for OML. */
osmo_stream_server_link_set_addr(c->oml, "0.0.0.0"); osmo_stream_srv_link_set_addr(c->oml, "0.0.0.0");
osmo_stream_server_link_set_port(c->oml, IPA_TCP_PORT_OML); osmo_stream_srv_link_set_port(c->oml, IPA_TCP_PORT_OML);
osmo_stream_server_link_set_accept_cb(c->oml, oml_accept_cb); osmo_stream_srv_link_set_accept_cb(c->oml, oml_accept_cb);
osmo_stream_server_link_set_data(c->oml, ipa_conn); osmo_stream_srv_link_set_data(c->oml, ipa);
c->rsl = osmo_stream_server_link_create(abis_ipa_server_tall); c->rsl = osmo_stream_srv_link_create(abis_ipa_server_tall);
if (c->rsl == NULL) if (c->rsl == NULL)
goto err_rsl; goto err_rsl;
/* default address and port for RSL. */ /* default address and port for RSL. */
osmo_stream_server_link_set_addr(c->rsl, "0.0.0.0"); osmo_stream_srv_link_set_addr(c->rsl, "0.0.0.0");
osmo_stream_server_link_set_port(c->rsl, IPA_TCP_PORT_RSL); osmo_stream_srv_link_set_port(c->rsl, IPA_TCP_PORT_RSL);
osmo_stream_server_link_set_accept_cb(c->rsl, rsl_accept_cb); osmo_stream_srv_link_set_accept_cb(c->rsl, rsl_accept_cb);
osmo_stream_server_link_set_data(c->rsl, ipa_conn); osmo_stream_srv_link_set_data(c->rsl, ipa);
INIT_LLIST_HEAD(&c->bts_list); INIT_LLIST_HEAD(&c->bts_list);
INIT_LLIST_HEAD(&c->conn_list); INIT_LLIST_HEAD(&c->conn_list);
return 0; return 0;
err_rsl: err_rsl:
osmo_stream_server_link_destroy(c->oml); osmo_stream_srv_link_destroy(c->oml);
err_oml: err_oml:
talloc_free(ipa_conn); talloc_free(ipa);
err: err:
return -1; return -1;
} }
@ -97,10 +97,10 @@ static void chan_abis_ipa_server_destroy(struct osmo_chan *chan)
{ {
struct chan_abis_ipa_server *c = struct chan_abis_ipa_server *c =
(struct chan_abis_ipa_server *)chan->data; (struct chan_abis_ipa_server *)chan->data;
struct ipa_conn *ipa_conn = struct ipa *ipa =
osmo_stream_server_link_get_data(c->oml); osmo_stream_srv_link_get_data(c->oml);
talloc_free(ipa_conn); talloc_free(ipa);
talloc_free(c->rsl); talloc_free(c->rsl);
talloc_free(c->oml); talloc_free(c->oml);
} }
@ -112,18 +112,18 @@ static int chan_abis_ipa_server_open(struct osmo_chan *chan)
struct osmo_fd *ofd; struct osmo_fd *ofd;
int ret, on = 1; int ret, on = 1;
if (osmo_stream_server_link_open(c->oml) < 0) if (osmo_stream_srv_link_open(c->oml) < 0)
goto err; goto err;
ofd = osmo_stream_server_link_get_ofd(c->oml); ofd = osmo_stream_srv_link_get_ofd(c->oml);
ret = setsockopt(ofd->fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); ret = setsockopt(ofd->fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
if (ret < 0) if (ret < 0)
goto err_oml; goto err_oml;
if (osmo_stream_server_link_open(c->rsl) < 0) if (osmo_stream_srv_link_open(c->rsl) < 0)
goto err_oml; goto err_oml;
ofd = osmo_stream_server_link_get_ofd(c->rsl); ofd = osmo_stream_srv_link_get_ofd(c->rsl);
ret = setsockopt(ofd->fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)); ret = setsockopt(ofd->fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
if (ret < 0) if (ret < 0)
goto err_rsl; goto err_rsl;
@ -131,9 +131,9 @@ static int chan_abis_ipa_server_open(struct osmo_chan *chan)
return 0; return 0;
err_rsl: err_rsl:
osmo_stream_server_link_close(c->rsl); osmo_stream_srv_link_close(c->rsl);
err_oml: err_oml:
osmo_stream_server_link_close(c->oml); osmo_stream_srv_link_close(c->oml);
err: err:
return -1; return -1;
} }
@ -143,13 +143,13 @@ static void chan_abis_ipa_server_close(struct osmo_chan *chan)
struct chan_abis_ipa_server *c = struct chan_abis_ipa_server *c =
(struct chan_abis_ipa_server *)chan->data; (struct chan_abis_ipa_server *)chan->data;
osmo_stream_server_link_close(c->oml); osmo_stream_srv_link_close(c->oml);
osmo_stream_server_link_close(c->rsl); osmo_stream_srv_link_close(c->rsl);
} }
static int chan_abis_ipa_server_enqueue(struct osmo_chan *c, struct msgb *msg) static int chan_abis_ipa_server_enqueue(struct osmo_chan *c, struct msgb *msg)
{ {
osmo_stream_server_conn_send(msg->dst, msg); osmo_stream_srv_send(msg->dst, msg);
return 0; return 0;
} }
@ -159,7 +159,7 @@ osmo_chan_abis_ipa_server_set_oml_addr(struct osmo_chan *c, const char *addr)
struct chan_abis_ipa_server *s = struct chan_abis_ipa_server *s =
(struct chan_abis_ipa_server *)&c->data; (struct chan_abis_ipa_server *)&c->data;
osmo_stream_server_link_set_addr(s->oml, addr); osmo_stream_srv_link_set_addr(s->oml, addr);
} }
void void
@ -168,7 +168,7 @@ osmo_chan_abis_ipa_server_set_oml_port(struct osmo_chan *c, uint16_t port)
struct chan_abis_ipa_server *s = struct chan_abis_ipa_server *s =
(struct chan_abis_ipa_server *)&c->data; (struct chan_abis_ipa_server *)&c->data;
osmo_stream_server_link_set_port(s->oml, port); osmo_stream_srv_link_set_port(s->oml, port);
} }
void void
@ -177,7 +177,7 @@ osmo_chan_abis_ipa_server_set_rsl_addr(struct osmo_chan *c, const char *addr)
struct chan_abis_ipa_server *s = struct chan_abis_ipa_server *s =
(struct chan_abis_ipa_server *)&c->data; (struct chan_abis_ipa_server *)&c->data;
osmo_stream_server_link_set_addr(s->rsl, addr); osmo_stream_srv_link_set_addr(s->rsl, addr);
} }
void void
@ -186,7 +186,7 @@ osmo_chan_abis_ipa_server_set_rsl_port(struct osmo_chan *c, uint16_t port)
struct chan_abis_ipa_server *s = struct chan_abis_ipa_server *s =
(struct chan_abis_ipa_server *)&c->data; (struct chan_abis_ipa_server *)&c->data;
osmo_stream_server_link_set_port(s->rsl, port); osmo_stream_srv_link_set_port(s->rsl, port);
} }
void void
@ -199,23 +199,23 @@ osmo_chan_abis_ipa_server_set_cb_signalmsg(struct osmo_chan *c,
s->signal_msg = signal_msg; s->signal_msg = signal_msg;
} }
static int oml_read_cb(struct osmo_stream_server_conn *conn); static int oml_read_cb(struct osmo_stream_srv *conn);
static int oml_accept_cb(struct osmo_stream_server_link *server, int fd) static int oml_accept_cb(struct osmo_stream_srv_link *server, int fd)
{ {
struct osmo_stream_server_conn *conn; struct osmo_stream_srv *conn;
struct ipa_conn *ipa_conn = osmo_stream_server_link_get_data(server); struct ipa *ipa = osmo_stream_srv_link_get_data(server);
struct osmo_fd *ofd; struct osmo_fd *ofd;
conn = osmo_stream_server_conn_create(abis_ipa_server_tall, conn = osmo_stream_srv_create(abis_ipa_server_tall,
server, fd, server, fd,
oml_read_cb, NULL, ipa_conn); oml_read_cb, NULL, ipa);
if (conn == NULL) { if (conn == NULL) {
LOGP(DLINP, LOGL_ERROR, "error while creating connection\n"); LOGP(DLINP, LOGL_ERROR, "error while creating connection\n");
return -1; return -1;
} }
ofd = osmo_stream_server_conn_get_ofd(conn); ofd = osmo_stream_srv_get_ofd(conn);
/* XXX: better use chan_abis_ipa_server_enqueue. */ /* XXX: better use chan_abis_ipa_server_enqueue. */
ipaccess_send_id_req(ofd->fd); ipaccess_send_id_req(ofd->fd);
@ -223,23 +223,23 @@ static int oml_accept_cb(struct osmo_stream_server_link *server, int fd)
return 0; return 0;
} }
static int rsl_read_cb(struct osmo_stream_server_conn *conn); static int rsl_read_cb(struct osmo_stream_srv *conn);
static int rsl_accept_cb(struct osmo_stream_server_link *server, int fd) static int rsl_accept_cb(struct osmo_stream_srv_link *server, int fd)
{ {
struct osmo_stream_server_conn *conn; struct osmo_stream_srv *conn;
struct ipa_conn *ipa_conn = osmo_stream_server_link_get_data(server); struct ipa *ipa = osmo_stream_srv_link_get_data(server);
struct osmo_fd *ofd; struct osmo_fd *ofd;
conn = osmo_stream_server_conn_create(abis_ipa_server_tall, conn = osmo_stream_srv_create(abis_ipa_server_tall,
server, fd, server, fd,
rsl_read_cb, NULL, ipa_conn); rsl_read_cb, NULL, ipa);
if (conn == NULL) { if (conn == NULL) {
LOGP(DLINP, LOGL_ERROR, "error while creating connection\n"); LOGP(DLINP, LOGL_ERROR, "error while creating connection\n");
return -1; return -1;
} }
ofd = osmo_stream_server_conn_get_ofd(conn); ofd = osmo_stream_srv_get_ofd(conn);
/* XXX: better use chan_abis_ipa_server_enqueue. */ /* XXX: better use chan_abis_ipa_server_enqueue. */
ipaccess_send_id_req(ofd->fd); ipaccess_send_id_req(ofd->fd);
@ -281,70 +281,70 @@ osmo_chan_abis_ipa_unit_add(struct osmo_chan *c,
return 0; return 0;
} }
static struct ipa_conn * static struct ipa *
osmo_ipa_conn_alloc(struct ipa_unit *unit, struct osmo_chan *chan) osmo_ipa_alloc(struct ipa_unit *unit, struct osmo_chan *chan)
{ {
struct ipa_conn *ipa_conn; struct ipa *ipa;
ipa_conn = talloc_zero(chan->ctx, struct ipa_conn); ipa = talloc_zero(chan->ctx, struct ipa);
if (ipa_conn == NULL) if (ipa == NULL)
return NULL; return NULL;
ipa_conn->unit = unit; ipa->unit = unit;
ipa_conn->chan = chan; ipa->chan = chan;
return ipa_conn; return ipa;
} }
static struct ipa_conn * static struct ipa *
osmo_ipa_conn_add(struct ipa_unit *unit, struct osmo_chan *chan) osmo_ipa_add(struct ipa_unit *unit, struct osmo_chan *chan)
{ {
struct ipa_conn *ipa_conn; struct ipa *ipa;
struct chan_abis_ipa_server *s = struct chan_abis_ipa_server *s =
(struct chan_abis_ipa_server *)chan->data; (struct chan_abis_ipa_server *)chan->data;
ipa_conn = osmo_ipa_conn_alloc(unit, chan); ipa = osmo_ipa_alloc(unit, chan);
if (ipa_conn == NULL) if (ipa == NULL)
return NULL; return NULL;
llist_add(&ipa_conn->head, &s->conn_list); llist_add(&ipa->head, &s->conn_list);
return ipa_conn; return ipa;
} }
static struct ipa_conn * static struct ipa *
osmo_ipa_conn_find(struct ipa_unit *unit, struct osmo_chan *chan) osmo_ipa_find(struct ipa_unit *unit, struct osmo_chan *chan)
{ {
struct ipa_conn *ipa_conn; struct ipa *ipa;
struct chan_abis_ipa_server *s = struct chan_abis_ipa_server *s =
(struct chan_abis_ipa_server *)chan->data; (struct chan_abis_ipa_server *)chan->data;
llist_for_each_entry(ipa_conn, &s->conn_list, head) { llist_for_each_entry(ipa, &s->conn_list, head) {
if (ipa_conn->unit->site_id == unit->site_id && if (ipa->unit->site_id == unit->site_id &&
ipa_conn->unit->bts_id == unit->bts_id) { ipa->unit->bts_id == unit->bts_id) {
return ipa_conn; return ipa;
} }
} }
return NULL; return NULL;
} }
static void static void
osmo_ipa_conn_put(struct ipa_conn *ipa_conn) osmo_ipa_put(struct ipa *ipa)
{ {
llist_del(&ipa_conn->head); llist_del(&ipa->head);
osmo_stream_server_conn_destroy(ipa_conn->oml); osmo_stream_srv_destroy(ipa->oml);
osmo_stream_server_conn_destroy(ipa_conn->rsl); osmo_stream_srv_destroy(ipa->rsl);
talloc_free(ipa_conn); talloc_free(ipa);
} }
static int static int
abis_ipa_server_rcvmsg(struct osmo_chan *c, abis_ipa_server_rcvmsg(struct osmo_chan *c,
struct osmo_stream_server_conn *conn, struct osmo_stream_srv *conn,
struct msgb *msg, int type) struct msgb *msg, int type)
{ {
struct tlv_parsed tlvp; struct tlv_parsed tlvp;
uint8_t msg_type = *(msg->l2h); uint8_t msg_type = *(msg->l2h);
struct osmo_fd *ofd = osmo_stream_server_conn_get_ofd(conn); struct osmo_fd *ofd = osmo_stream_srv_get_ofd(conn);
char *unitid; char *unitid;
int len, ret; int len, ret;
@ -354,7 +354,7 @@ abis_ipa_server_rcvmsg(struct osmo_chan *c,
if (msg_type == IPAC_MSGT_ID_RESP) { if (msg_type == IPAC_MSGT_ID_RESP) {
struct ipa_unit *unit; struct ipa_unit *unit;
struct ipa_conn *ipa_conn; struct ipa *ipa;
struct ipaccess_unit unit_data; struct ipaccess_unit unit_data;
DEBUGP(DLMI, "ID_RESP\n"); DEBUGP(DLMI, "ID_RESP\n");
@ -399,35 +399,35 @@ abis_ipa_server_rcvmsg(struct osmo_chan *c,
unit_data.site_id, unit_data.bts_id, unit_data.site_id, unit_data.bts_id,
unit_data.trx_id); unit_data.trx_id);
ipa_conn = osmo_ipa_conn_find(unit, c); ipa = osmo_ipa_find(unit, c);
if (ipa_conn == NULL) { if (ipa == NULL) {
ipa_conn = osmo_ipa_conn_add(unit, c); ipa = osmo_ipa_add(unit, c);
if (ipa_conn == NULL) { if (ipa == NULL) {
LOGP(DLINP, LOGL_ERROR, "OOM\n"); LOGP(DLINP, LOGL_ERROR, "OOM\n");
return 0; return 0;
} }
osmo_stream_server_conn_set_data(conn, ipa_conn); osmo_stream_srv_set_data(conn, ipa);
} }
if (type == CHAN_SIGN_OML) { if (type == CHAN_SIGN_OML) {
if (ipa_conn->oml) { if (ipa->oml) {
/* link already exists, kill it. */ /* link already exists, kill it. */
osmo_stream_server_conn_destroy(ipa_conn->oml); osmo_stream_srv_destroy(ipa->oml);
return 0; return 0;
} }
ipa_conn->oml = conn; ipa->oml = conn;
} else if (type == CHAN_SIGN_RSL) { } else if (type == CHAN_SIGN_RSL) {
if (!ipa_conn->oml) { if (!ipa->oml) {
/* no OML link? Restart from scratch. */ /* no OML link? Restart from scratch. */
osmo_ipa_conn_put(ipa_conn); osmo_ipa_put(ipa);
return 0; return 0;
} }
if (ipa_conn->rsl) { if (ipa->rsl) {
/* RSL link already exists, kill it. */ /* RSL link already exists, kill it. */
osmo_stream_server_conn_destroy(ipa_conn->rsl); osmo_stream_srv_destroy(ipa->rsl);
return 0; return 0;
} }
ipa_conn->rsl = conn; ipa->rsl = conn;
} }
ret = 0; ret = 0;
} else { } else {
@ -438,12 +438,12 @@ err:
return ret; return ret;
} }
static int read_cb(struct osmo_stream_server_conn *conn, int type) static int read_cb(struct osmo_stream_srv *conn, int type)
{ {
int ret; int ret;
struct msgb *msg; struct msgb *msg;
struct osmo_fd *ofd = osmo_stream_server_conn_get_ofd(conn); struct osmo_fd *ofd = osmo_stream_srv_get_ofd(conn);
struct ipa_conn *ipa_conn = osmo_stream_server_conn_get_data(conn); struct ipa *ipa = osmo_stream_srv_get_data(conn);
struct chan_abis_ipa_server *s; struct chan_abis_ipa_server *s;
struct ipa_head *hh; struct ipa_head *hh;
@ -459,27 +459,27 @@ static int read_cb(struct osmo_stream_server_conn *conn, int type)
LOGP(DLINP, LOGL_ERROR, "cannot receive message\n"); LOGP(DLINP, LOGL_ERROR, "cannot receive message\n");
msgb_free(msg); msgb_free(msg);
/* not the dummy connection, release it. */ /* not the dummy connection, release it. */
if (ipa_conn->unit != NULL) if (ipa->unit != NULL)
osmo_ipa_conn_put(ipa_conn); osmo_ipa_put(ipa);
return 0; return 0;
} else if (ret == 0) { } else if (ret == 0) {
/* link has vanished, dead socket. */ /* link has vanished, dead socket. */
LOGP(DLINP, LOGL_ERROR, "closed connection\n"); LOGP(DLINP, LOGL_ERROR, "closed connection\n");
msgb_free(msg); msgb_free(msg);
if (ipa_conn->unit != NULL) if (ipa->unit != NULL)
osmo_ipa_conn_put(ipa_conn); osmo_ipa_put(ipa);
return 0; return 0;
} }
hh = (struct ipa_head *) msg->data; hh = (struct ipa_head *) msg->data;
if (hh->proto == IPAC_PROTO_IPACCESS) { if (hh->proto == IPAC_PROTO_IPACCESS) {
abis_ipa_server_rcvmsg(ipa_conn->chan, conn, msg, type); abis_ipa_server_rcvmsg(ipa->chan, conn, msg, type);
msgb_free(msg); msgb_free(msg);
return -EIO; return -EIO;
} }
ipa_conn = osmo_stream_server_conn_get_data(conn); ipa = osmo_stream_srv_get_data(conn);
if (ipa_conn == NULL) { if (ipa == NULL) {
LOGP(DLINP, LOGL_ERROR, "no matching signalling link\n"); LOGP(DLINP, LOGL_ERROR, "no matching signalling link\n");
msgb_free(msg); msgb_free(msg);
return -EIO; return -EIO;
@ -488,20 +488,20 @@ static int read_cb(struct osmo_stream_server_conn *conn, int type)
LOGP(DLINP, LOGL_ERROR, "wrong protocol\n"); LOGP(DLINP, LOGL_ERROR, "wrong protocol\n");
return -EIO; return -EIO;
} }
msg->dst = ipa_conn; msg->dst = ipa;
s = (struct chan_abis_ipa_server *)ipa_conn->chan->data; s = (struct chan_abis_ipa_server *)ipa->chan->data;
s->signal_msg(msg, type); s->signal_msg(msg, type);
return 0; return 0;
} }
static int oml_read_cb(struct osmo_stream_server_conn *conn) static int oml_read_cb(struct osmo_stream_srv *conn)
{ {
return read_cb(conn, CHAN_SIGN_OML); return read_cb(conn, CHAN_SIGN_OML);
} }
static int rsl_read_cb(struct osmo_stream_server_conn *conn) static int rsl_read_cb(struct osmo_stream_srv *conn)
{ {
return read_cb(conn, CHAN_SIGN_RSL); return read_cb(conn, CHAN_SIGN_RSL);
} }

View File

@ -23,61 +23,61 @@
* Client side. * Client side.
*/ */
enum osmo_stream_client_conn_state { enum osmo_stream_cli_state {
STREAM_CLIENT_LINK_STATE_NONE = 0, STREAM_CLI_STATE_NONE = 0,
STREAM_CLIENT_LINK_STATE_CONNECTING = 1, STREAM_CLI_STATE_CONNECTING = 1,
STREAM_CLIENT_LINK_STATE_CONNECTED = 2, STREAM_CLI_STATE_CONNECTED = 2,
STREAM_CLIENT_LINK_STATE_MAX STREAM_CLI_STATE_MAX
}; };
#define OSMO_STREAM_CLIENT_F_RECONFIG (1 << 0) #define OSMO_STREAM_CLI_F_RECONF (1 << 0)
struct osmo_stream_client_conn { struct osmo_stream_cli {
struct osmo_fd ofd; struct osmo_fd ofd;
struct llist_head tx_queue; struct llist_head tx_queue;
struct osmo_timer_list timer; struct osmo_timer_list timer;
enum osmo_stream_client_conn_state state; enum osmo_stream_cli_state state;
const char *addr; const char *addr;
uint16_t port; uint16_t port;
int (*connect_cb)(struct osmo_stream_client_conn *link); int (*connect_cb)(struct osmo_stream_cli *srv);
int (*read_cb)(struct osmo_stream_client_conn *link); int (*read_cb)(struct osmo_stream_cli *srv);
int (*write_cb)(struct osmo_stream_client_conn *link); int (*write_cb)(struct osmo_stream_cli *srv);
void *data; void *data;
int flags; int flags;
int reconnect_timeout; int reconnect_timeout;
}; };
void osmo_stream_client_conn_close(struct osmo_stream_client_conn *link); void osmo_stream_cli_close(struct osmo_stream_cli *cli);
static void osmo_stream_client_reconnect(struct osmo_stream_client_conn *link) static void osmo_stream_cli_reconnect(struct osmo_stream_cli *cli)
{ {
if (link->reconnect_timeout < 0) { if (cli->reconnect_timeout < 0) {
LOGP(DLINP, LOGL_DEBUG, "not reconnecting, disabled.\n"); LOGP(DLINP, LOGL_DEBUG, "not reconnecting, disabled.\n");
return; return;
} }
LOGP(DLINP, LOGL_DEBUG, "connection closed\n"); LOGP(DLINP, LOGL_DEBUG, "connection closed\n");
osmo_stream_client_conn_close(link); osmo_stream_cli_close(cli);
LOGP(DLINP, LOGL_DEBUG, "retrying in %d seconds...\n", LOGP(DLINP, LOGL_DEBUG, "retrying in %d seconds...\n",
link->reconnect_timeout); cli->reconnect_timeout);
osmo_timer_schedule(&link->timer, link->reconnect_timeout, 0); osmo_timer_schedule(&cli->timer, cli->reconnect_timeout, 0);
link->state = STREAM_CLIENT_LINK_STATE_CONNECTING; cli->state = STREAM_CLI_STATE_CONNECTING;
} }
void osmo_stream_client_conn_close(struct osmo_stream_client_conn *link) void osmo_stream_cli_close(struct osmo_stream_cli *cli)
{ {
osmo_fd_unregister(&link->ofd); osmo_fd_unregister(&cli->ofd);
close(link->ofd.fd); close(cli->ofd.fd);
} }
static void osmo_stream_client_read(struct osmo_stream_client_conn *link) static void osmo_stream_cli_read(struct osmo_stream_cli *cli)
{ {
LOGP(DLINP, LOGL_DEBUG, "message received\n"); LOGP(DLINP, LOGL_DEBUG, "message received\n");
if (link->read_cb) if (cli->read_cb)
link->read_cb(link); cli->read_cb(cli);
} }
static int osmo_stream_client_write(struct osmo_stream_client_conn *link) static int osmo_stream_cli_write(struct osmo_stream_cli *cli)
{ {
struct msgb *msg; struct msgb *msg;
struct llist_head *lh; struct llist_head *lh;
@ -85,23 +85,23 @@ static int osmo_stream_client_write(struct osmo_stream_client_conn *link)
LOGP(DLINP, LOGL_DEBUG, "sending data\n"); LOGP(DLINP, LOGL_DEBUG, "sending data\n");
if (llist_empty(&link->tx_queue)) { if (llist_empty(&cli->tx_queue)) {
link->ofd.when &= ~BSC_FD_WRITE; cli->ofd.when &= ~BSC_FD_WRITE;
return 0; return 0;
} }
lh = link->tx_queue.next; lh = cli->tx_queue.next;
llist_del(lh); llist_del(lh);
msg = llist_entry(lh, struct msgb, list); msg = llist_entry(lh, struct msgb, list);
if (link->state == STREAM_CLIENT_LINK_STATE_CONNECTING) { if (cli->state == STREAM_CLI_STATE_CONNECTING) {
LOGP(DLINP, LOGL_ERROR, "not connected, dropping data!\n"); LOGP(DLINP, LOGL_ERROR, "not connected, dropping data!\n");
return 0; return 0;
} }
ret = send(link->ofd.fd, msg->data, msg->len, 0); ret = send(cli->ofd.fd, msg->data, msg->len, 0);
if (ret < 0) { if (ret < 0) {
if (errno == EPIPE || errno == ENOTCONN) { if (errno == EPIPE || errno == ENOTCONN) {
osmo_stream_client_reconnect(link); osmo_stream_cli_reconnect(cli);
} }
LOGP(DLINP, LOGL_ERROR, "error to send\n"); LOGP(DLINP, LOGL_ERROR, "error to send\n");
} }
@ -109,33 +109,33 @@ static int osmo_stream_client_write(struct osmo_stream_client_conn *link)
return 0; return 0;
} }
static int osmo_stream_client_fd_cb(struct osmo_fd *ofd, unsigned int what) static int osmo_stream_cli_fd_cb(struct osmo_fd *ofd, unsigned int what)
{ {
struct osmo_stream_client_conn *link = ofd->data; struct osmo_stream_cli *cli = ofd->data;
int error, ret; int error, ret;
socklen_t len = sizeof(error); socklen_t len = sizeof(error);
switch(link->state) { switch(cli->state) {
case STREAM_CLIENT_LINK_STATE_CONNECTING: case STREAM_CLI_STATE_CONNECTING:
ret = getsockopt(ofd->fd, SOL_SOCKET, SO_ERROR, &error, &len); ret = getsockopt(ofd->fd, SOL_SOCKET, SO_ERROR, &error, &len);
if (ret >= 0 && error > 0) { if (ret >= 0 && error > 0) {
osmo_stream_client_reconnect(link); osmo_stream_cli_reconnect(cli);
return 0; return 0;
} }
ofd->when &= ~BSC_FD_WRITE; ofd->when &= ~BSC_FD_WRITE;
LOGP(DLINP, LOGL_DEBUG, "connection done.\n"); LOGP(DLINP, LOGL_DEBUG, "connection done.\n");
link->state = STREAM_CLIENT_LINK_STATE_CONNECTED; cli->state = STREAM_CLI_STATE_CONNECTED;
if (link->connect_cb) if (cli->connect_cb)
link->connect_cb(link); cli->connect_cb(cli);
break; break;
case STREAM_CLIENT_LINK_STATE_CONNECTED: case STREAM_CLI_STATE_CONNECTED:
if (what & BSC_FD_READ) { if (what & BSC_FD_READ) {
LOGP(DLINP, LOGL_DEBUG, "connected read\n"); LOGP(DLINP, LOGL_DEBUG, "connected read\n");
osmo_stream_client_read(link); osmo_stream_cli_read(cli);
} }
if (what & BSC_FD_WRITE) { if (what & BSC_FD_WRITE) {
LOGP(DLINP, LOGL_DEBUG, "connected write\n"); LOGP(DLINP, LOGL_DEBUG, "connected write\n");
osmo_stream_client_write(link); osmo_stream_cli_write(cli);
} }
break; break;
default: default:
@ -144,156 +144,151 @@ static int osmo_stream_client_fd_cb(struct osmo_fd *ofd, unsigned int what)
return 0; return 0;
} }
static void link_timer_cb(void *data); static void cli_timer_cb(void *data);
struct osmo_stream_client_conn *osmo_stream_client_conn_create(void *ctx) struct osmo_stream_cli *osmo_stream_cli_create(void *ctx)
{ {
struct osmo_stream_client_conn *link; struct osmo_stream_cli *cli;
link = talloc_zero(ctx, struct osmo_stream_client_conn); cli = talloc_zero(ctx, struct osmo_stream_cli);
if (!link) if (!cli)
return NULL; return NULL;
link->ofd.fd = -1; cli->ofd.fd = -1;
link->ofd.when |= BSC_FD_READ | BSC_FD_WRITE; cli->ofd.when |= BSC_FD_READ | BSC_FD_WRITE;
link->ofd.priv_nr = 0; /* XXX */ cli->ofd.priv_nr = 0; /* XXX */
link->ofd.cb = osmo_stream_client_fd_cb; cli->ofd.cb = osmo_stream_cli_fd_cb;
link->ofd.data = link; cli->ofd.data = cli;
link->state = STREAM_CLIENT_LINK_STATE_CONNECTING; cli->state = STREAM_CLI_STATE_CONNECTING;
link->timer.cb = link_timer_cb; cli->timer.cb = cli_timer_cb;
link->timer.data = link; cli->timer.data = link;
link->reconnect_timeout = 5; /* default is 5 seconds. */ cli->reconnect_timeout = 5; /* default is 5 seconds. */
INIT_LLIST_HEAD(&link->tx_queue); INIT_LLIST_HEAD(&cli->tx_queue);
return link; return cli;
} }
void void
osmo_stream_client_conn_set_addr(struct osmo_stream_client_conn *link, osmo_stream_cli_set_addr(struct osmo_stream_cli *cli, const char *addr)
const char *addr)
{ {
link->addr = talloc_strdup(link, addr); cli->addr = talloc_strdup(cli, addr);
link->flags |= OSMO_STREAM_CLIENT_F_RECONFIG; cli->flags |= OSMO_STREAM_CLI_F_RECONF;
} }
void void
osmo_stream_client_conn_set_port(struct osmo_stream_client_conn *link, osmo_stream_cli_set_port(struct osmo_stream_cli *cli, uint16_t port)
uint16_t port)
{ {
link->port = port; cli->port = port;
link->flags |= OSMO_STREAM_CLIENT_F_RECONFIG; cli->flags |= OSMO_STREAM_CLI_F_RECONF;
}
void osmo_stream_client_conn_set_reconnect_timeout(
struct osmo_stream_client_conn *link, int timeout)
{
link->reconnect_timeout = timeout;
} }
void void
osmo_stream_client_conn_set_data(struct osmo_stream_client_conn *link, osmo_stream_cli_set_reconnect_timeout(struct osmo_stream_cli *cli, int timeout)
void *data)
{ {
link->data = data; cli->reconnect_timeout = timeout;
} }
void *osmo_stream_client_conn_get_data(struct osmo_stream_client_conn *link) void
osmo_stream_cli_set_data(struct osmo_stream_cli *cli, void *data)
{ {
return link->data; cli->data = data;
}
void *osmo_stream_cli_get_data(struct osmo_stream_cli *cli)
{
return cli->data;
} }
struct osmo_fd * struct osmo_fd *
osmo_stream_client_conn_get_ofd(struct osmo_stream_client_conn *link) osmo_stream_cli_get_ofd(struct osmo_stream_cli *cli)
{ {
return &link->ofd; return &cli->ofd;
} }
void void
osmo_stream_client_conn_set_connect_cb(struct osmo_stream_client_conn *link, osmo_stream_cli_set_connect_cb(struct osmo_stream_cli *cli,
int (*connect_cb)(struct osmo_stream_client_conn *link)) int (*connect_cb)(struct osmo_stream_cli *cli))
{ {
link->connect_cb = connect_cb; cli->connect_cb = connect_cb;
} }
void void
osmo_stream_client_conn_set_read_cb(struct osmo_stream_client_conn *link, osmo_stream_cli_set_read_cb(struct osmo_stream_cli *cli,
int (*read_cb)(struct osmo_stream_client_conn *link)) int (*read_cb)(struct osmo_stream_cli *cli))
{ {
link->read_cb = read_cb; cli->read_cb = read_cb;
} }
void osmo_stream_client_conn_destroy(struct osmo_stream_client_conn *link) void osmo_stream_cli_destroy(struct osmo_stream_cli *cli)
{ {
talloc_free(link); talloc_free(link);
} }
int osmo_stream_client_conn_open(struct osmo_stream_client_conn *link) int osmo_stream_cli_open(struct osmo_stream_cli *cli)
{ {
int ret; int ret;
/* we are reconfiguring this socket, close existing first. */ /* we are reconfiguring this socket, close existing first. */
if ((link->flags & OSMO_STREAM_CLIENT_F_RECONFIG) && link->ofd.fd >= 0) if ((cli->flags & OSMO_STREAM_CLI_F_RECONF) && cli->ofd.fd >= 0)
osmo_stream_client_conn_close(link); osmo_stream_cli_close(cli);
link->flags &= ~OSMO_STREAM_CLIENT_F_RECONFIG; cli->flags &= ~OSMO_STREAM_CLI_F_RECONF;
ret = osmo_sock_init(AF_INET, SOCK_STREAM, IPPROTO_TCP, ret = osmo_sock_init(AF_INET, SOCK_STREAM, IPPROTO_TCP,
link->addr, link->port, cli->addr, cli->port,
OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_NONBLOCK); OSMO_SOCK_F_CONNECT|OSMO_SOCK_F_NONBLOCK);
if (ret < 0) { if (ret < 0) {
if (errno != EINPROGRESS) if (errno != EINPROGRESS)
return ret; return ret;
} }
link->ofd.fd = ret; cli->ofd.fd = ret;
if (osmo_fd_register(&link->ofd) < 0) { if (osmo_fd_register(&cli->ofd) < 0) {
close(ret); close(ret);
return -EIO; return -EIO;
} }
return 0; return 0;
} }
static void link_timer_cb(void *data) static void cli_timer_cb(void *data)
{ {
struct osmo_stream_client_conn *link = data; struct osmo_stream_cli *cli = data;
LOGP(DLINP, LOGL_DEBUG, "reconnecting.\n"); LOGP(DLINP, LOGL_DEBUG, "reconnecting.\n");
switch(link->state) { switch(cli->state) {
case STREAM_CLIENT_LINK_STATE_CONNECTING: case STREAM_CLI_STATE_CONNECTING:
osmo_stream_client_conn_open(link); osmo_stream_cli_open(cli);
break; break;
default: default:
break; break;
} }
} }
void osmo_stream_client_conn_send(struct osmo_stream_client_conn *link, void osmo_stream_cli_send(struct osmo_stream_cli *cli, struct msgb *msg)
struct msgb *msg)
{ {
msgb_enqueue(&link->tx_queue, msg); msgb_enqueue(&cli->tx_queue, msg);
link->ofd.when |= BSC_FD_WRITE; cli->ofd.when |= BSC_FD_WRITE;
} }
int osmo_stream_client_conn_recv(struct osmo_stream_client_conn *link, int osmo_stream_cli_recv(struct osmo_stream_cli *cli, struct msgb *msg)
struct msgb *msg)
{ {
int ret; int ret;
ret = recv(link->ofd.fd, msg->data, msg->data_len, 0); ret = recv(cli->ofd.fd, msg->data, msg->data_len, 0);
if (ret < 0) { if (ret < 0) {
if (errno == EPIPE || errno == ECONNRESET) { if (errno == EPIPE || errno == ECONNRESET) {
LOGP(DLINP, LOGL_ERROR, LOGP(DLINP, LOGL_ERROR,
"lost connection with server\n"); "lost connection with srv\n");
} }
osmo_stream_client_reconnect(link); osmo_stream_cli_reconnect(cli);
return ret; return ret;
} else if (ret == 0) { } else if (ret == 0) {
LOGP(DLINP, LOGL_ERROR, "connection closed with server\n"); LOGP(DLINP, LOGL_ERROR, "connection closed with srv\n");
osmo_stream_client_reconnect(link); osmo_stream_cli_reconnect(cli);
return ret; return ret;
} }
msgb_put(msg, ret); msgb_put(msg, ret);
LOGP(DLINP, LOGL_DEBUG, "received %d bytes from server\n", ret); LOGP(DLINP, LOGL_DEBUG, "received %d bytes from srv\n", ret);
return ret; return ret;
} }
@ -301,23 +296,23 @@ int osmo_stream_client_conn_recv(struct osmo_stream_client_conn *link,
* Server side. * Server side.
*/ */
#define OSMO_STREAM_SERVER_F_RECONFIG (1 << 0) #define OSMO_STREAM_SRV_F_RECONF (1 << 0)
struct osmo_stream_server_link { struct osmo_stream_srv_link {
struct osmo_fd ofd; struct osmo_fd ofd;
const char *addr; const char *addr;
uint16_t port; uint16_t port;
int (*accept_cb)(struct osmo_stream_server_link *link, int fd); int (*accept_cb)(struct osmo_stream_srv_link *srv, int fd);
void *data; void *data;
int flags; int flags;
}; };
static int osmo_stream_server_fd_cb(struct osmo_fd *ofd, unsigned int what) static int osmo_stream_srv_fd_cb(struct osmo_fd *ofd, unsigned int what)
{ {
int ret; int ret;
struct sockaddr_in sa; struct sockaddr_in sa;
socklen_t sa_len = sizeof(sa); socklen_t sa_len = sizeof(sa);
struct osmo_stream_server_link *link = ofd->data; struct osmo_stream_srv_link *link = ofd->data;
ret = accept(ofd->fd, (struct sockaddr *)&sa, &sa_len); ret = accept(ofd->fd, (struct sockaddr *)&sa, &sa_len);
if (ret < 0) { if (ret < 0) {
@ -334,75 +329,75 @@ static int osmo_stream_server_fd_cb(struct osmo_fd *ofd, unsigned int what)
return 0; return 0;
} }
struct osmo_stream_server_link *osmo_stream_server_link_create(void *ctx) struct osmo_stream_srv_link *osmo_stream_srv_link_create(void *ctx)
{ {
struct osmo_stream_server_link *link; struct osmo_stream_srv_link *link;
link = talloc_zero(ctx, struct osmo_stream_server_link); link = talloc_zero(ctx, struct osmo_stream_srv_link);
if (!link) if (!link)
return NULL; return NULL;
link->ofd.fd = -1; link->ofd.fd = -1;
link->ofd.when |= BSC_FD_READ | BSC_FD_WRITE; link->ofd.when |= BSC_FD_READ | BSC_FD_WRITE;
link->ofd.cb = osmo_stream_server_fd_cb; link->ofd.cb = osmo_stream_srv_fd_cb;
link->ofd.data = link; link->ofd.data = link;
return link; return link;
} }
void osmo_stream_server_link_set_addr(struct osmo_stream_server_link *link, void osmo_stream_srv_link_set_addr(struct osmo_stream_srv_link *link,
const char *addr) const char *addr)
{ {
link->addr = talloc_strdup(link, addr); link->addr = talloc_strdup(link, addr);
link->flags |= OSMO_STREAM_SERVER_F_RECONFIG; link->flags |= OSMO_STREAM_SRV_F_RECONF;
} }
void osmo_stream_server_link_set_port(struct osmo_stream_server_link *link, void osmo_stream_srv_link_set_port(struct osmo_stream_srv_link *link,
uint16_t port) uint16_t port)
{ {
link->port = port; link->port = port;
link->flags |= OSMO_STREAM_SERVER_F_RECONFIG; link->flags |= OSMO_STREAM_SRV_F_RECONF;
} }
void void
osmo_stream_server_link_set_data(struct osmo_stream_server_link *link, osmo_stream_srv_link_set_data(struct osmo_stream_srv_link *link,
void *data) void *data)
{ {
link->data = data; link->data = data;
} }
void *osmo_stream_server_link_get_data(struct osmo_stream_server_link *link) void *osmo_stream_srv_link_get_data(struct osmo_stream_srv_link *link)
{ {
return link->data; return link->data;
} }
struct osmo_fd * struct osmo_fd *
osmo_stream_server_link_get_ofd(struct osmo_stream_server_link *link) osmo_stream_srv_link_get_ofd(struct osmo_stream_srv_link *link)
{ {
return &link->ofd; return &link->ofd;
} }
void osmo_stream_server_link_set_accept_cb(struct osmo_stream_server_link *link, void osmo_stream_srv_link_set_accept_cb(struct osmo_stream_srv_link *link,
int (*accept_cb)(struct osmo_stream_server_link *link, int fd)) int (*accept_cb)(struct osmo_stream_srv_link *link, int fd))
{ {
link->accept_cb = accept_cb; link->accept_cb = accept_cb;
} }
void osmo_stream_server_link_destroy(struct osmo_stream_server_link *link) void osmo_stream_srv_link_destroy(struct osmo_stream_srv_link *link)
{ {
talloc_free(link); talloc_free(link);
} }
int osmo_stream_server_link_open(struct osmo_stream_server_link *link) int osmo_stream_srv_link_open(struct osmo_stream_srv_link *link)
{ {
int ret; int ret;
/* we are reconfiguring this socket, close existing first. */ /* we are reconfiguring this socket, close existing first. */
if ((link->flags & OSMO_STREAM_SERVER_F_RECONFIG) && link->ofd.fd >= 0) if ((link->flags & OSMO_STREAM_SRV_F_RECONF) && link->ofd.fd >= 0)
osmo_stream_server_link_close(link); osmo_stream_srv_link_close(link);
link->flags &= ~OSMO_STREAM_SERVER_F_RECONFIG; link->flags &= ~OSMO_STREAM_SRV_F_RECONF;
ret = osmo_sock_init(AF_INET, SOCK_STREAM, IPPROTO_TCP, ret = osmo_sock_init(AF_INET, SOCK_STREAM, IPPROTO_TCP,
link->addr, link->port, OSMO_SOCK_F_BIND); link->addr, link->port, OSMO_SOCK_F_BIND);
@ -417,22 +412,22 @@ int osmo_stream_server_link_open(struct osmo_stream_server_link *link)
return 0; return 0;
} }
void osmo_stream_server_link_close(struct osmo_stream_server_link *link) void osmo_stream_srv_link_close(struct osmo_stream_srv_link *link)
{ {
osmo_fd_unregister(&link->ofd); osmo_fd_unregister(&link->ofd);
close(link->ofd.fd); close(link->ofd.fd);
} }
struct osmo_stream_server_conn { struct osmo_stream_srv {
struct osmo_stream_server_link *server; struct osmo_stream_srv_link *srv;
struct osmo_fd ofd; struct osmo_fd ofd;
struct llist_head tx_queue; struct llist_head tx_queue;
int (*closed_cb)(struct osmo_stream_server_conn *peer); int (*closed_cb)(struct osmo_stream_srv *peer);
int (*cb)(struct osmo_stream_server_conn *peer); int (*cb)(struct osmo_stream_srv *peer);
void *data; void *data;
}; };
static void osmo_stream_server_conn_read(struct osmo_stream_server_conn *conn) static void osmo_stream_srv_read(struct osmo_stream_srv *conn)
{ {
LOGP(DLINP, LOGL_DEBUG, "message received\n"); LOGP(DLINP, LOGL_DEBUG, "message received\n");
@ -442,7 +437,7 @@ static void osmo_stream_server_conn_read(struct osmo_stream_server_conn *conn)
return; return;
} }
static void osmo_stream_server_conn_write(struct osmo_stream_server_conn *conn) static void osmo_stream_srv_write(struct osmo_stream_srv *conn)
{ {
struct msgb *msg; struct msgb *msg;
struct llist_head *lh; struct llist_head *lh;
@ -465,37 +460,37 @@ static void osmo_stream_server_conn_write(struct osmo_stream_server_conn *conn)
msgb_free(msg); msgb_free(msg);
} }
static int osmo_stream_server_conn_cb(struct osmo_fd *ofd, unsigned int what) static int osmo_stream_srv_cb(struct osmo_fd *ofd, unsigned int what)
{ {
struct osmo_stream_server_conn *conn = ofd->data; struct osmo_stream_srv *conn = ofd->data;
LOGP(DLINP, LOGL_DEBUG, "connected read/write\n"); LOGP(DLINP, LOGL_DEBUG, "connected read/write\n");
if (what & BSC_FD_READ) if (what & BSC_FD_READ)
osmo_stream_server_conn_read(conn); osmo_stream_srv_read(conn);
if (what & BSC_FD_WRITE) if (what & BSC_FD_WRITE)
osmo_stream_server_conn_write(conn); osmo_stream_srv_write(conn);
return 0; return 0;
} }
struct osmo_stream_server_conn * struct osmo_stream_srv *
osmo_stream_server_conn_create(void *ctx, struct osmo_stream_server_link *link, osmo_stream_srv_create(void *ctx, struct osmo_stream_srv_link *link,
int fd, int fd,
int (*cb)(struct osmo_stream_server_conn *conn), int (*cb)(struct osmo_stream_srv *conn),
int (*closed_cb)(struct osmo_stream_server_conn *conn), void *data) int (*closed_cb)(struct osmo_stream_srv *conn), void *data)
{ {
struct osmo_stream_server_conn *conn; struct osmo_stream_srv *conn;
conn = talloc_zero(ctx, struct osmo_stream_server_conn); conn = talloc_zero(ctx, struct osmo_stream_srv);
if (conn == NULL) { if (conn == NULL) {
LOGP(DLINP, LOGL_ERROR, "cannot allocate new peer in server, " LOGP(DLINP, LOGL_ERROR, "cannot allocate new peer in srv, "
"reason=`%s'\n", strerror(errno)); "reason=`%s'\n", strerror(errno));
return NULL; return NULL;
} }
conn->server = link; conn->srv = link;
conn->ofd.fd = fd; conn->ofd.fd = fd;
conn->ofd.data = conn; conn->ofd.data = conn;
conn->ofd.cb = osmo_stream_server_conn_cb; conn->ofd.cb = osmo_stream_srv_cb;
conn->ofd.when = BSC_FD_READ; conn->ofd.when = BSC_FD_READ;
conn->cb = cb; conn->cb = cb;
conn->closed_cb = closed_cb; conn->closed_cb = closed_cb;
@ -511,24 +506,24 @@ osmo_stream_server_conn_create(void *ctx, struct osmo_stream_server_link *link,
} }
void void
osmo_stream_server_conn_set_data(struct osmo_stream_server_conn *conn, osmo_stream_srv_set_data(struct osmo_stream_srv *conn,
void *data) void *data)
{ {
conn->data = data; conn->data = data;
} }
void *osmo_stream_server_conn_get_data(struct osmo_stream_server_conn *link) void *osmo_stream_srv_get_data(struct osmo_stream_srv *link)
{ {
return link->data; return link->data;
} }
struct osmo_fd * struct osmo_fd *
osmo_stream_server_conn_get_ofd(struct osmo_stream_server_conn *link) osmo_stream_srv_get_ofd(struct osmo_stream_srv *link)
{ {
return &link->ofd; return &link->ofd;
} }
void osmo_stream_server_conn_destroy(struct osmo_stream_server_conn *conn) void osmo_stream_srv_destroy(struct osmo_stream_srv *conn)
{ {
close(conn->ofd.fd); close(conn->ofd.fd);
osmo_fd_unregister(&conn->ofd); osmo_fd_unregister(&conn->ofd);
@ -537,15 +532,13 @@ void osmo_stream_server_conn_destroy(struct osmo_stream_server_conn *conn)
talloc_free(conn); talloc_free(conn);
} }
void osmo_stream_server_conn_send(struct osmo_stream_server_conn *conn, void osmo_stream_srv_send(struct osmo_stream_srv *conn, struct msgb *msg)
struct msgb *msg)
{ {
msgb_enqueue(&conn->tx_queue, msg); msgb_enqueue(&conn->tx_queue, msg);
conn->ofd.when |= BSC_FD_WRITE; conn->ofd.when |= BSC_FD_WRITE;
} }
int osmo_stream_server_conn_recv(struct osmo_stream_server_conn *conn, int osmo_stream_srv_recv(struct osmo_stream_srv *conn, struct msgb *msg)
struct msgb *msg)
{ {
int ret; int ret;
@ -553,11 +546,11 @@ int osmo_stream_server_conn_recv(struct osmo_stream_server_conn *conn,
if (ret < 0) { if (ret < 0) {
if (errno == EPIPE || errno == ECONNRESET) { if (errno == EPIPE || errno == ECONNRESET) {
LOGP(DLINP, LOGL_ERROR, LOGP(DLINP, LOGL_ERROR,
"lost connection with server\n"); "lost connection with srv\n");
} }
return ret; return ret;
} else if (ret == 0) { } else if (ret == 0) {
LOGP(DLINP, LOGL_ERROR, "connection closed with server\n"); LOGP(DLINP, LOGL_ERROR, "connection closed with srv\n");
return ret; return ret;
} }
msgb_put(msg, ret); msgb_put(msg, ret);