aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-05-09 19:12:44 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-09-26 02:25:46 +0200
commit77c8d5ffb52bd5da405fc869286b4f7aa7f88d4d (patch)
tree83b9103eb38446c852f9c0c7451a0aa3cc00921c /openbsc
parentd90fa42dc9f1fbf3d1d92a1749742ecb1c5d537e (diff)
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
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/include/openbsc/gsm_data.h5
-rw-r--r--openbsc/src/ipaccess/ipaccess-config.c2
-rw-r--r--openbsc/src/libbsc/bsc_init.c2
-rw-r--r--openbsc/src/libbsc/net_init.c6
-rw-r--r--openbsc/src/utils/bs11_config.c2
-rw-r--r--openbsc/tests/channel/channel_test.c2
-rw-r--r--openbsc/tests/gsm0408/gsm0408_test.c4
7 files changed, 14 insertions, 9 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 07db02f03..fbb035682 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -394,8 +394,11 @@ struct gsm_sms {
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 31da05636..9e3a4712e 100644
--- a/openbsc/src/ipaccess/ipaccess-config.c
+++ b/openbsc/src/ipaccess/ipaccess-config.c
@@ -983,7 +983,7 @@ int main(int argc, char **argv)
}
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 371ddeea3..06f412119 100644
--- a/openbsc/src/libbsc/bsc_init.c
+++ b/openbsc/src/libbsc/bsc_init.c
@@ -477,7 +477,7 @@ int bsc_bootstrap_network(int (*mncc_recv)(struct gsm_network *, struct msgb *),
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 e01ba8025..e53b4662f 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 3fb74bf99..227b9f8aa 100644
--- a/openbsc/src/utils/bs11_config.c
+++ b/openbsc/src/utils/bs11_config.c
@@ -894,7 +894,7 @@ int main(int argc, char **argv)
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 567460722..924d763ff 100644
--- a/openbsc/tests/channel/channel_test.c
+++ b/openbsc/tests/channel/channel_test.c
@@ -68,7 +68,7 @@ int main(int argc, char **argv)
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 7acc93f96..e81394f25 100644
--- a/openbsc/tests/gsm0408/gsm0408_test.c
+++ b/openbsc/tests/gsm0408/gsm0408_test.c
@@ -122,7 +122,7 @@ static inline void _bts_uarfcn_add(struct gsm_bts *bts, uint16_t arfcn,
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_u(void)
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)