[PATCH] openbsc[master]: mscsplit: gsm_network_init(): add explicit root talloc ctx

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/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Thu Sep 22 18:56:17 UTC 2016


Review at  https://gerrit.osmocom.org/922

mscsplit: gsm_network_init(): add explicit root talloc ctx

Decouple the root talloc context from libbsc's global talloc_bsc_ctx.

This allows to define the root talloc ctx from a main() scope, which in turn
helps decouple libmsc from libbsc.

Change-Id: I92f6b47b1eeea2e8f3fba66f25d7e708e5659f8a
---
M openbsc/include/openbsc/gsm_data.h
M openbsc/src/ipaccess/ipaccess-config.c
M openbsc/src/libbsc/bsc_init.c
M openbsc/src/libbsc/net_init.c
M openbsc/src/utils/bs11_config.c
M openbsc/tests/channel/channel_test.c
M openbsc/tests/gsm0408/gsm0408_test.c
7 files changed, 14 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/22/922/1

diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 07db02f..fbb0356 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -394,8 +394,11 @@
 	char text[SMS_TEXT_SIZE];
 };
 
-struct gsm_network *gsm_network_init(uint16_t country_code, uint16_t network_code,
+struct gsm_network *gsm_network_init(void *ctx,
+				     uint16_t country_code,
+				     uint16_t network_code,
 				     int (*mncc_recv)(struct gsm_network *, struct msgb *));
+
 int gsm_set_bts_type(struct gsm_bts *bts, enum gsm_bts_type type);
 
 /* Get reference to a neighbor cell on a given BCCH ARFCN */
diff --git a/openbsc/src/ipaccess/ipaccess-config.c b/openbsc/src/ipaccess/ipaccess-config.c
index 31da056..9e3a471 100644
--- a/openbsc/src/ipaccess/ipaccess-config.c
+++ b/openbsc/src/ipaccess/ipaccess-config.c
@@ -983,7 +983,7 @@
 	}
 	libosmo_abis_init(tall_ctx_config);
 
-	bsc_gsmnet = gsm_network_init(1, 1, NULL);
+	bsc_gsmnet = gsm_network_init(tall_bsc_ctx, 1, 1, NULL);
 	if (!bsc_gsmnet)
 		exit(1);
 
diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c
index 371ddee..06f4121 100644
--- a/openbsc/src/libbsc/bsc_init.c
+++ b/openbsc/src/libbsc/bsc_init.c
@@ -477,7 +477,7 @@
 	int rc;
 
 	/* initialize our data structures */
-	bsc_gsmnet = gsm_network_init(1, 1, mncc_recv);
+	bsc_gsmnet = gsm_network_init(tall_bsc_ctx, 1, 1, mncc_recv);
 	if (!bsc_gsmnet)
 		return -ENOMEM;
 
diff --git a/openbsc/src/libbsc/net_init.c b/openbsc/src/libbsc/net_init.c
index e01ba80..e53b466 100644
--- a/openbsc/src/libbsc/net_init.c
+++ b/openbsc/src/libbsc/net_init.c
@@ -23,13 +23,15 @@
 
 #include <stdbool.h>
 
-struct gsm_network *gsm_network_init(uint16_t country_code, uint16_t network_code,
+struct gsm_network *gsm_network_init(void *ctx,
+				     uint16_t country_code,
+				     uint16_t network_code,
 				     int (*mncc_recv)(struct gsm_network *, struct msgb *))
 {
 	struct gsm_network *net;
 	const char *default_regexp = ".*";
 
-	net = talloc_zero(tall_bsc_ctx, struct gsm_network);
+	net = talloc_zero(ctx, struct gsm_network);
 	if (!net)
 		return NULL;
 
diff --git a/openbsc/src/utils/bs11_config.c b/openbsc/src/utils/bs11_config.c
index 3fb74bf..227b9f8 100644
--- a/openbsc/src/utils/bs11_config.c
+++ b/openbsc/src/utils/bs11_config.c
@@ -894,7 +894,7 @@
 	handle_options(argc, argv);
 	bts_model_bs11_init();
 
-	gsmnet = gsm_network_init(1, 1, NULL);
+	gsmnet = gsm_network_init(tall_bs11cfg_ctx, 1, 1, NULL);
 	if (!gsmnet) {
 		fprintf(stderr, "Unable to allocate gsm network\n");
 		exit(1);
diff --git a/openbsc/tests/channel/channel_test.c b/openbsc/tests/channel/channel_test.c
index 5674607..924d763 100644
--- a/openbsc/tests/channel/channel_test.c
+++ b/openbsc/tests/channel/channel_test.c
@@ -68,7 +68,7 @@
 	printf("Testing the gsm_subscriber chan logic\n");
 
 	/* Create a dummy network */
-	network = gsm_network_init(1, 1, NULL);
+	network = gsm_network_init(tall_bsc_ctx, 1, 1, NULL);
 	if (!network)
 		exit(1);
 	bts = gsm_bts_alloc(network);
diff --git a/openbsc/tests/gsm0408/gsm0408_test.c b/openbsc/tests/gsm0408/gsm0408_test.c
index 7acc93f..e81394f 100644
--- a/openbsc/tests/gsm0408/gsm0408_test.c
+++ b/openbsc/tests/gsm0408/gsm0408_test.c
@@ -122,7 +122,7 @@
 static inline void test_si2q_u(void)
 {
 	struct gsm_bts *bts;
-	struct gsm_network *network = gsm_network_init(1, 1, NULL);
+	struct gsm_network *network = gsm_network_init(tall_bsc_ctx, 1, 1, NULL);
 	printf("Testing SYSINFO_TYPE_2quater UARFCN generation:\n");
 
 	if (!network)
@@ -149,7 +149,7 @@
 static inline void test_si2q_e(void)
 {
 	struct gsm_bts *bts;
-	struct gsm_network *network = gsm_network_init(1, 1, NULL);
+	struct gsm_network *network = gsm_network_init(tall_bsc_ctx, 1, 1, NULL);
 	printf("Testing SYSINFO_TYPE_2quater EARFCN generation:\n");
 
 	if (!network)

-- 
To view, visit https://gerrit.osmocom.org/922
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I92f6b47b1eeea2e8f3fba66f25d7e708e5659f8a
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>



More information about the gerrit-log mailing list