Change in ...osmo-bts[master]: vty: add "logging filter sapi" command

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

osmith gerrit-no-reply at lists.osmocom.org
Mon Sep 16 13:30:54 UTC 2019


osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/15539


Change subject: vty: add "logging filter sapi" command
......................................................................

vty: add "logging filter sapi" command

Set the PCU interface data as log context, and add VTY commands to
filter by SAPI. Allow to filter by multiple SAPIs by running the filter
command multiple times:

OsmoBTS> logging filter sapi agch
OsmoBTS> logging filter sapi pch

Related: OS#2356
Test: (osmo-ttcn3-hacks) I8c7f113eae7a93c6d4943cac9e3f49f153b323b1
Depends: (libosmocore) I814cb3328d99faca9220adb5a80ffb934f219d7d
Change-Id: I6b7bb2e1d61502b61214f854a4ec5cbb7267545b
---
M src/common/logging.c
M src/common/pcu_sock.c
M src/common/vty.c
3 files changed, 87 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/39/15539/1

diff --git a/src/common/logging.c b/src/common/logging.c
index 3315a01..ace0341 100644
--- a/src/common/logging.c
+++ b/src/common/logging.c
@@ -29,6 +29,7 @@
 
 #include <osmo-bts/bts.h>
 #include <osmo-bts/logging.h>
+#include <osmo-bts/pcuif_proto.h>
 
 static struct log_info_cat bts_log_info_cat[] = {
 	[DRSL] = {
@@ -144,7 +145,21 @@
 	},
 };
 
+static int filter_fn(const struct log_context *ctx, struct log_target *tgt)
+{
+	const struct gsm_pcu_if_data *pcu_if_data = ctx->ctx[LOG_CTX_PCU_IF_DATA];
+	uint16_t *sapi_mask = tgt->filter_data[LOG_FLT_SAPI];
+
+	if ((tgt->filter_map & (1 << LOG_FLT_SAPI)) != 0
+	    && sapi_mask && pcu_if_data
+	    && (*sapi_mask & (1 << pcu_if_data->sapi)) == 0)
+		return 0;
+
+	return 1;
+}
+
 const struct log_info bts_log_info = {
+	.filter_fn = filter_fn,
 	.cat = bts_log_info_cat,
 	.num_cat = ARRAY_SIZE(bts_log_info_cat),
 };
diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c
index ba9e172..7125b01 100644
--- a/src/common/pcu_sock.c
+++ b/src/common/pcu_sock.c
@@ -336,6 +336,7 @@
 	rts_req->ts_nr = ts->nr;
 	rts_req->block_nr = block_nr;
 
+	log_set_context(LOG_CTX_PCU_IF_DATA, (void *)rts_req);
 	return pcu_sock_send(&bts_gsmnet, msg);
 }
 
@@ -376,6 +377,7 @@
 	memcpy(data_ind->data, data, len);
 	data_ind->len = len;
 
+	log_set_context(LOG_CTX_PCU_IF_DATA, (void *)data_ind);
 	return pcu_sock_send(&bts_gsmnet, msg);
 }
 
@@ -402,6 +404,7 @@
 	rach_ind->is_11bit = is_11bit;
 	rach_ind->burst_type = burst_type;
 
+	log_set_context(LOG_CTX_PCU_IF_DATA, (void *)rach_ind);
 	return pcu_sock_send(&bts_gsmnet, msg);
 }
 
@@ -484,6 +487,7 @@
 	memcpy(data_cnf->data, data, len);
 	data_cnf->len = len;
 
+	log_set_context(LOG_CTX_PCU_IF_DATA, (void *)data_cnf);
 	return pcu_sock_send(&bts_gsmnet, msg);
 }
 
@@ -513,6 +517,7 @@
 	struct msgb *msg;
 	int rc = 0;
 
+	log_set_context(LOG_CTX_PCU_IF_DATA, (void *)data_req);
 	LOGP(DPCU, LOGL_DEBUG, "Data request received: sapi=%s arfcn=%d "
 		"block=%d data=%s\n", sapi_string[data_req->sapi],
 		data_req->arfcn, data_req->block_nr,
diff --git a/src/common/vty.c b/src/common/vty.c
index 801f34c..e99c889 100644
--- a/src/common/vty.c
+++ b/src/common/vty.c
@@ -1600,6 +1600,71 @@
 	return CMD_SUCCESS;
 }
 
+
+#define SAPI_STR "Filter log messages by SAPI\n"
+#define SAPI_ARG_STR "SAPI to be used as filter\n"
+#define SAPI_CMD_STR "logging filter sapi (rach|agch|pch|bcch|pdtch|prach|ptcch|agch_dt)"
+
+uint16_t parse_sapi_str(const char *sapi) {
+	if (!strcmp(sapi, "rach"))
+		return PCU_IF_SAPI_RACH;
+	else if (!strcmp(sapi, "agch"))
+		return PCU_IF_SAPI_AGCH;
+	else if (!strcmp(sapi, "pch"))
+		return PCU_IF_SAPI_PCH;
+	else if (!strcmp(sapi, "bcch"))
+		return PCU_IF_SAPI_BCCH;
+	else if (!strcmp(sapi, "pdtch"))
+		return PCU_IF_SAPI_PDTCH;
+	else if (!strcmp(sapi, "prach"))
+		return PCU_IF_SAPI_PRACH;
+	else if (!strcmp(sapi, "ptcch"))
+		return PCU_IF_SAPI_PTCCH;
+	else if (!strcmp(sapi, "agch_dt"))
+		return PCU_IF_SAPI_AGCH_DT;
+	return 0;
+}
+
+DEFUN(logging_fltr_sapi,
+      logging_fltr_sapi_cmd,
+      SAPI_CMD_STR,
+      LOGGING_STR FILTER_STR SAPI_STR SAPI_ARG_STR)
+{
+	struct log_target *tgt = osmo_log_vty2tgt(vty);
+	uint16_t **sapi_mask;
+
+	if (!tgt)
+		return CMD_WARNING;
+
+	sapi_mask = (uint16_t **)&tgt->filter_data[LOG_FLT_SAPI];
+	if (!*sapi_mask)
+		*sapi_mask = talloc(tgt, uint16_t);
+
+	**sapi_mask |= (1 << parse_sapi_str(argv[0]));
+	tgt->filter_map |= (1 << LOG_FLT_SAPI);
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(no_logging_fltr_sapi,
+      no_logging_fltr_sapi_cmd,
+      "no " SAPI_CMD_STR,
+      NO_STR LOGGING_STR FILTER_STR SAPI_STR SAPI_ARG_STR)
+{
+	struct log_target *tgt = osmo_log_vty2tgt(vty);
+	uint16_t *sapi_mask;
+
+	if (!tgt)
+		return CMD_WARNING;
+	if (!tgt->filter_data[LOG_FLT_SAPI])
+		return CMD_SUCCESS;
+
+	sapi_mask = (uint16_t *)tgt->filter_data[LOG_FLT_SAPI];
+	*sapi_mask &= ~(1 << parse_sapi_str(argv[0]));
+
+	return CMD_SUCCESS;
+}
+
 int bts_vty_init(struct gsm_bts *bts)
 {
 	cfg_trx_gsmtap_sapi_cmd.string = vty_cmd_string_from_valstr(bts, gsmtap_sapi_names,
@@ -1621,6 +1686,8 @@
 	install_element_ve(&show_ts_cmd);
 	install_element_ve(&show_lchan_cmd);
 	install_element_ve(&show_lchan_summary_cmd);
+	install_element_ve(&logging_fltr_sapi_cmd);
+	install_element_ve(&no_logging_fltr_sapi_cmd);
 
 	logging_vty_add_cmds();
 	osmo_talloc_vty_add_cmds();

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/15539
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I6b7bb2e1d61502b61214f854a4ec5cbb7267545b
Gerrit-Change-Number: 15539
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190916/ebb1af85/attachment.htm>


More information about the gerrit-log mailing list