pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcap/+/39274?usp=email )
Change subject: server: Split osmo_pcap_conn alloc to its own function ......................................................................
server: Split osmo_pcap_conn alloc to its own function
Change-Id: I622c9662b0a451ca5466e053a046346b536ed0a6 --- M include/osmo-pcap/osmo_pcap_server.h M src/osmo_server_network.c M src/osmo_server_vty.c 3 files changed, 19 insertions(+), 11 deletions(-)
Approvals: Jenkins Builder: Verified osmith: Looks good to me, approved laforge: Looks good to me, but someone else must approve
diff --git a/include/osmo-pcap/osmo_pcap_server.h b/include/osmo-pcap/osmo_pcap_server.h index ae578b4..df4d171 100644 --- a/include/osmo-pcap/osmo_pcap_server.h +++ b/include/osmo-pcap/osmo_pcap_server.h @@ -161,7 +161,7 @@
void osmo_pcap_server_reopen(struct osmo_pcap_server *server); int osmo_pcap_server_listen(struct osmo_pcap_server *server); -struct osmo_pcap_conn *osmo_pcap_server_find(struct osmo_pcap_server *ser, +struct osmo_pcap_conn *osmo_pcap_server_find_or_create(struct osmo_pcap_server *ser, const char *name); void osmo_pcap_server_delete(struct osmo_pcap_conn *conn); void vty_server_init(void); diff --git a/src/osmo_server_network.c b/src/osmo_server_network.c index 044e0ec..0567b21 100644 --- a/src/osmo_server_network.c +++ b/src/osmo_server_network.c @@ -499,16 +499,11 @@ talloc_free(conn); }
-struct osmo_pcap_conn *osmo_pcap_server_find(struct osmo_pcap_server *server, - const char *name) +static struct osmo_pcap_conn *osmo_pcap_conn_alloc(struct osmo_pcap_server *server, + const char *name) { - struct rate_ctr_group_desc *desc; struct osmo_pcap_conn *conn; - - llist_for_each_entry(conn, &server->conn, entry) { - if (strcmp(conn->name, name) == 0) - return conn; - } + struct rate_ctr_group_desc *desc;
conn = talloc_zero(server, struct osmo_pcap_conn); if (!conn) { @@ -563,6 +558,19 @@ return conn; }
+struct osmo_pcap_conn *osmo_pcap_server_find_or_create( + struct osmo_pcap_server *server, + const char *name) +{ + struct osmo_pcap_conn *conn; + + llist_for_each_entry(conn, &server->conn, entry) { + if (strcmp(conn->name, name) == 0) + return conn; + } + return osmo_pcap_conn_alloc(server, name); +} + static int do_read_tls(struct osmo_pcap_conn *conn, void *buf, size_t want_size) { size_t size = want_size; diff --git a/src/osmo_server_vty.c b/src/osmo_server_vty.c index b976857..aed382f 100644 --- a/src/osmo_server_vty.c +++ b/src/osmo_server_vty.c @@ -354,7 +354,7 @@ bool store, bool use_tls) { struct osmo_pcap_conn *conn; - conn = osmo_pcap_server_find(pcap_server, name); + conn = osmo_pcap_server_find_or_create(pcap_server, name); if (!conn) { vty_out(vty, "Failed to create a pcap server.\n"); return CMD_WARNING; @@ -403,7 +403,7 @@ NO_STR CLIENT_STR "The name\n") { struct osmo_pcap_conn *conn; - conn = osmo_pcap_server_find(pcap_server, argv[0]); + conn = osmo_pcap_server_find_or_create(pcap_server, argv[0]); if (!conn) { vty_out(vty, "Failed to create a pcap server.\n"); return CMD_WARNING;