pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcap/+/39173?usp=email )
Change subject: pcap-client: Move stats to its own file ......................................................................
pcap-client: Move stats to its own file
Further stats groups will be added, so move it to a separate file for easier handing.
Change-Id: I4b5ecdd6f9b0c646dd03ca3bc7fa24624fb9fcbc --- M include/osmo-pcap/osmo_pcap_client.h M src/Makefile.am M src/osmo_client_core.c M src/osmo_client_main.c A src/osmo_client_stats.c 5 files changed, 69 insertions(+), 33 deletions(-)
Approvals: fixeria: Looks good to me, approved Jenkins Builder: Verified pespin: Looks good to me, approved
diff --git a/include/osmo-pcap/osmo_pcap_client.h b/include/osmo-pcap/osmo_pcap_client.h index 8ad5ffa..44ca54b 100644 --- a/include/osmo-pcap/osmo_pcap_client.h +++ b/include/osmo-pcap/osmo_pcap_client.h @@ -28,13 +28,12 @@ #include <osmocom/core/linuxlist.h> #include <osmocom/core/select.h> #include <osmocom/core/timer.h> +#include <osmocom/core/rate_ctr.h> #include <osmocom/core/write_queue.h>
-struct rate_ctr_group; - #define WQUEUE_MAXLEN_DEFAULT 1000
-enum { +enum pcap_client_ctr { CLIENT_CTR_CONNECT, CLIENT_CTR_BYTES, CLIENT_CTR_PKTS, @@ -47,6 +46,7 @@ CLIENT_CTR_P_DROP, CLIENT_CTR_P_IFDROP, }; +extern const struct rate_ctr_group_desc pcap_client_ctr_group_desc;
enum osmo_pcap_protocol { PROTOCOL_OSMOPCAP, diff --git a/src/Makefile.am b/src/Makefile.am index 8c2c968..b35227c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -19,6 +19,7 @@ osmo_client_core.c \ osmo_client_vty.c \ osmo_client_network.c \ + osmo_client_stats.c \ osmo_tls.c \ $(NULL)
diff --git a/src/osmo_client_core.c b/src/osmo_client_core.c index bde40d3..d111fca 100644 --- a/src/osmo_client_core.c +++ b/src/osmo_client_core.c @@ -302,7 +302,18 @@ INIT_LLIST_HEAD(&client->handles); INIT_LLIST_HEAD(&client->conns);
+ /* initialize the stats interface */ + client->ctrg = rate_ctr_group_alloc(pcap_client, &pcap_client_ctr_group_desc, 0); + if (!client->ctrg) { + LOGP(DCLIENT, LOGL_ERROR, "Failed to allocate rate ctr\n"); + goto ret_free; + } + return client; + +ret_free: + talloc_free(client); + return NULL; }
void osmo_client_conn_free(struct osmo_pcap_client_conn *conn) diff --git a/src/osmo_client_main.c b/src/osmo_client_main.c index 3fa0ae4..1fedce1 100644 --- a/src/osmo_client_main.c +++ b/src/osmo_client_main.c @@ -52,29 +52,6 @@ void *tall_cli_ctx; struct osmo_pcap_client *pcap_client;
- -static const struct rate_ctr_desc pcap_client_ctr_desc[] = { - [CLIENT_CTR_CONNECT] = { "server:connect", "Connects to the server" }, - [CLIENT_CTR_BYTES] = { "captured:bytes", "Captured bytes " }, - [CLIENT_CTR_PKTS] = { "captured:pkts", "Captured packets " }, - [CLIENT_CTR_2BIG] = { "bpf:too_big", "Captured data too big " }, - [CLIENT_CTR_NOMEM] = { "client:no_mem", "No memory available " }, - [CLIENT_CTR_QERR] = { "client:queue_err", "Can not queue data " }, - [CLIENT_CTR_PERR] = { "client:pcap_err", "libpcap error " }, - [CLIENT_CTR_WERR] = { "client:write_err", "Write error " }, - [CLIENT_CTR_P_RECV] = { "pcap:recv", "PCAP received packets " }, - [CLIENT_CTR_P_DROP] = { "pcap:drop", "PCAP dropped packets " }, - [CLIENT_CTR_P_IFDROP] = { "pcap:ifdrop", "iface dropped packets " }, -}; - -static const struct rate_ctr_group_desc pcap_client_ctr_group_desc = { - .group_name_prefix = "pcap:client", - .group_description = "PCAP Client statistics", - .num_ctr = ARRAY_SIZE(pcap_client_ctr_desc), - .ctr_desc = pcap_client_ctr_desc, - .class_id = OSMO_STATS_CLASS_GLOBAL, -}; - static struct vty_app_info vty_info = { .name = "OsmoPCAPClient", .version = PACKAGE_VERSION, @@ -261,13 +238,6 @@ exit(1); }
- /* initialize the stats interface */ - pcap_client->ctrg = rate_ctr_group_alloc(pcap_client, &pcap_client_ctr_group_desc, 0); - if (!pcap_client->ctrg) { - LOGP(DCLIENT, LOGL_ERROR, "Failed to allocate rate ctr\n"); - exit(1); - } - /* Default conn, always present. */ pcap_client->conn = osmo_client_conn_alloc(pcap_client, "default");
diff --git a/src/osmo_client_stats.c b/src/osmo_client_stats.c new file mode 100644 index 0000000..07ff4a1 --- /dev/null +++ b/src/osmo_client_stats.c @@ -0,0 +1,54 @@ +/* + * osmo-pcap-client code + * + * (C) 2024 by sysmocom - s.f.m.c. GmbH info@sysmocom.de + * (C) 2011-2016 by Holger Hans Peter Freyther holger@moiji-mobile.com + * (C) 2011 by On-Waves + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + * + */ + +#include <osmocom/core/rate_ctr.h> +#include <osmocom/core/stats.h> +#include <osmocom/core/talloc.h> +#include <osmocom/core/utils.h> + +#include <osmo-pcap/common.h> +#include <osmo-pcap/osmo_pcap_client.h> + +#include "osmopcapconfig.h" + +static const struct rate_ctr_desc pcap_client_ctr_desc[] = { + [CLIENT_CTR_CONNECT] = { "server:connect", "Connects to the server" }, + [CLIENT_CTR_BYTES] = { "captured:bytes", "Captured bytes " }, + [CLIENT_CTR_PKTS] = { "captured:pkts", "Captured packets " }, + [CLIENT_CTR_2BIG] = { "bpf:too_big", "Captured data too big " }, + [CLIENT_CTR_NOMEM] = { "client:no_mem", "No memory available " }, + [CLIENT_CTR_QERR] = { "client:queue_err", "Can not queue data " }, + [CLIENT_CTR_PERR] = { "client:pcap_err", "libpcap error " }, + [CLIENT_CTR_WERR] = { "client:write_err", "Write error " }, + [CLIENT_CTR_P_RECV] = { "pcap:recv", "PCAP received packets " }, + [CLIENT_CTR_P_DROP] = { "pcap:drop", "PCAP dropped packets " }, + [CLIENT_CTR_P_IFDROP] = { "pcap:ifdrop", "iface dropped packets " }, +}; + +const struct rate_ctr_group_desc pcap_client_ctr_group_desc = { + .group_name_prefix = "pcap:client", + .group_description = "PCAP Client statistics", + .num_ctr = ARRAY_SIZE(pcap_client_ctr_desc), + .ctr_desc = pcap_client_ctr_desc, + .class_id = OSMO_STATS_CLASS_GLOBAL, +};