[PATCH] VTY enable then write crashed gproxy; this patch fixes it.

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/OpenBSC@lists.osmocom.org/.

Katerina Barone-Adesi kat.obsc at gmail.com
Sun Mar 3 07:15:24 UTC 2013


The previous code made gprs_categories have 18 entries,
rather than the 3 a glance would suggest. The first 15 were all-0,
as per implicit initialization of static objects in the c standard.
This caused problems for code in libosmocore which expected actual data.
There are three potential solutions:
a) Define a new enum for gprs_categories
b) Change libosmocore to not crash on all-zero input categories.
c) Simply use log_info, which has a superset of the information.
This patch implements c, the simplest.
sgsn_main.c had a similar problem; it implicitly had 20 categories.
(see readelf -s gprs/osmo-sgsn | grep gprs_categories).
---
 openbsc/src/gprs/gb_proxy_main.c | 28 ++----------------
 openbsc/src/gprs/sgsn_main.c     | 62 ++--------------------------------------
 2 files changed, 4 insertions(+), 86 deletions(-)

diff --git a/openbsc/src/gprs/gb_proxy_main.c b/openbsc/src/gprs/gb_proxy_main.c
index b5b11fd..0a96527 100644
--- a/openbsc/src/gprs/gb_proxy_main.c
+++ b/openbsc/src/gprs/gb_proxy_main.c
@@ -200,30 +200,6 @@ static struct vty_app_info vty_info = {
 	.is_config_node	= bsc_vty_is_config_node,
 };
 
-/* default categories */
-static struct log_info_cat gprs_categories[] = {
-	[DGPRS] = {
-		.name = "DGPRS",
-		.description = "GPRS Packet Service",
-		.enabled = 1, .loglevel = LOGL_DEBUG,
-	},
-	[DNS] = {
-		.name = "DNS",
-		.description = "GPRS Network Service (NS)",
-		.enabled = 1, .loglevel = LOGL_INFO,
-	},
-	[DBSSGP] = {
-		.name = "DBSSGP",
-		.description = "GPRS BSS Gateway Protocol (BSSGP)",
-		.enabled = 1, .loglevel = LOGL_DEBUG,
-	},
-};
-
-static const struct log_info gprs_log_info = {
-	.filter_fn = gprs_log_filter_fn,
-	.cat = gprs_categories,
-	.num_cat = ARRAY_SIZE(gprs_categories),
-};
 
 int main(int argc, char **argv)
 {
@@ -239,11 +215,11 @@ int main(int argc, char **argv)
 	signal(SIGUSR2, &signal_handler);
 	osmo_init_ignore_signals();
 
-	osmo_init_logging(&gprs_log_info);
+	osmo_init_logging(&log_info);
 
 	vty_info.copyright = openbsc_copyright;
 	vty_init(&vty_info);
-	logging_vty_add_cmds(&gprs_log_info);
+	logging_vty_add_cmds(&log_info);
 	gbproxy_vty_init();
 
 	handle_options(argc, argv);
diff --git a/openbsc/src/gprs/sgsn_main.c b/openbsc/src/gprs/sgsn_main.c
index 08e0a85..e5161b4 100644
--- a/openbsc/src/gprs/sgsn_main.c
+++ b/openbsc/src/gprs/sgsn_main.c
@@ -227,64 +227,6 @@ static void handle_options(int argc, char **argv)
 	}
 }
 
-/* default categories */
-static struct log_info_cat gprs_categories[] = {
-	[DMM] = {
-		.name = "DMM",
-		.description = "Layer3 Mobility Management (MM)",
-		.color = "\033[1;33m",
-		.enabled = 1, .loglevel = LOGL_NOTICE,
-	},
-	[DPAG]	= {
-		.name = "DPAG",
-		.description = "Paging Subsystem",
-		.color = "\033[1;38m",
-		.enabled = 1, .loglevel = LOGL_NOTICE,
-	},
-	[DMEAS] = {
-		.name = "DMEAS",
-		.description = "Radio Measurement Processing",
-		.enabled = 0, .loglevel = LOGL_NOTICE,
-	},
-	[DREF] = {
-		.name = "DREF",
-		.description = "Reference Counting",
-		.enabled = 0, .loglevel = LOGL_NOTICE,
-	},
-	[DGPRS] = {
-		.name = "DGPRS",
-		.description = "GPRS Packet Service",
-		.enabled = 1, .loglevel = LOGL_DEBUG,
-	},
-	[DNS] = {
-		.name = "DNS",
-		.description = "GPRS Network Service (NS)",
-		.enabled = 1, .loglevel = LOGL_INFO,
-	},
-	[DBSSGP] = {
-		.name = "DBSSGP",
-		.description = "GPRS BSS Gateway Protocol (BSSGP)",
-		.enabled = 1, .loglevel = LOGL_DEBUG,
-	},
-	[DLLC] = {
-		.name = "DLLC",
-		.description = "GPRS Logical Link Control Protocol (LLC)",
-		.enabled = 1, .loglevel = LOGL_DEBUG,
-	},
-	[DSNDCP] = {
-		.name = "DSNDCP",
-		.description = "GPRS Sub-Network Dependent Control Protocol (SNDCP)",
-		.enabled = 1, .loglevel = LOGL_DEBUG,
-	},
-};
-
-static const struct log_info gprs_log_info = {
-	.filter_fn = gprs_log_filter_fn,
-	.cat = gprs_categories,
-	.num_cat = ARRAY_SIZE(gprs_categories),
-};
-
-
 int main(int argc, char **argv)
 {
 	struct gsm_network dummy_network;
@@ -299,11 +241,11 @@ int main(int argc, char **argv)
 	signal(SIGUSR2, &signal_handler);
 
 	osmo_init_ignore_signals();
-	osmo_init_logging(&gprs_log_info);
+	osmo_init_logging(&log_info);
 
 	vty_info.copyright = openbsc_copyright;
 	vty_init(&vty_info);
-	logging_vty_add_cmds(&gprs_log_info);
+	logging_vty_add_cmds(&log_info);
         sgsn_vty_init();
 
 	handle_options(argc, argv);
-- 
1.8.1.2





More information about the OpenBSC mailing list