aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libbsc
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-05-14 00:46:29 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-11-12 15:48:47 +0100
commit22f29e5b9f29ad1e877b42357b9f36e8f81cc402 (patch)
tree1a8de22587628ea766e045fa30d56b781d85693b /openbsc/src/libbsc
parent84013beff1abd2142bbd2ef1e2b057eb24ef7815 (diff)
move to libxsc: net init 3: actual move
Reincarnate gsm_network_init() as the parts not specific to libbsc. Move from bsc_network_init() those bits that are not BSC specific (and useful for upcoming osmo-cscn). Add libxsc to all linkages that use gsm_network_init(). Note: the only requirement to allow linking gsm_network_init() without libbsc is to keep the call to gsm_net_update_ctype() out of libxsc. The other items are kept out of libxsc because it makes sense semantically. But the separation is not strong in that the BSC specific data members are of course still omnipresent in struct gsm_network. If bsc_network_init() is not called, these are not initialized properly -- for now no users of uninitialized members exist. So this is just a first step towards a sensible split of the BSC and MSC gsm_network structs. The long term aim should be to have entirely separate structs with some common general items. Change-Id: If06316b97002390dc9a434686750cb96193ea63b
Diffstat (limited to 'openbsc/src/libbsc')
-rw-r--r--openbsc/src/libbsc/net_init.c36
1 files changed, 2 insertions, 34 deletions
diff --git a/openbsc/src/libbsc/net_init.c b/openbsc/src/libbsc/net_init.c
index 07a442356..b3780d07f 100644
--- a/openbsc/src/libbsc/net_init.c
+++ b/openbsc/src/libbsc/net_init.c
@@ -17,12 +17,9 @@
*
*/
+#include <openbsc/xsc.h>
#include <openbsc/osmo_bsc.h>
-#include <openbsc/gsm_data.h>
#include <openbsc/osmo_msc_data.h>
-#include <openbsc/gsm_subscriber.h>
-
-#include <stdbool.h>
struct gsm_network *bsc_network_init(void *ctx,
uint16_t country_code,
@@ -30,11 +27,8 @@ struct gsm_network *bsc_network_init(void *ctx,
mncc_recv_cb_t mncc_recv)
{
struct gsm_network *net;
- const char *default_regexp = ".*";
- net = talloc_zero(ctx, struct gsm_network);
- if (!net)
- return NULL;
+ net = gsm_network_init(ctx, country_code, network_code, mncc_recv);
net->bsc_data = talloc_zero(net, struct osmo_bsc_data);
if (!net->bsc_data) {
@@ -42,27 +36,11 @@ struct gsm_network *bsc_network_init(void *ctx,
return NULL;
}
- net->subscr_group = talloc_zero(net, struct gsm_subscriber_group);
- if (!net->subscr_group) {
- talloc_free(net);
- return NULL;
- }
-
- if (gsm_parse_reg(net, &net->authorized_regexp, &net->authorized_reg_str, 1,
- &default_regexp) != 0)
- return NULL;
-
/* Init back pointer */
net->bsc_data->auto_off_timeout = -1;
net->bsc_data->network = net;
INIT_LLIST_HEAD(&net->bsc_data->mscs);
- net->subscr_group->net = net;
- net->auto_create_subscr = true;
- net->auto_assign_exten = true;
-
- net->country_code = country_code;
- net->network_code = network_code;
net->num_bts = 0;
net->reject_cause = GSM48_REJECT_ROAMING_NOT_ALLOWED;
net->T3101 = GSM_T3101_DEFAULT;
@@ -79,23 +57,13 @@ struct gsm_network *bsc_network_init(void *ctx,
net->handover.pwr_hysteresis = 3;
net->handover.max_distance = 9999;
- INIT_LLIST_HEAD(&net->trans_list);
- INIT_LLIST_HEAD(&net->upqueue);
INIT_LLIST_HEAD(&net->bts_list);
- INIT_LLIST_HEAD(&net->subscr_conns);
/* init statistics */
net->bsc_ctrs = rate_ctr_group_alloc(net, &bsc_ctrg_desc, 0);
- net->msc_ctrs = rate_ctr_group_alloc(net, &msc_ctrg_desc, 0);
- net->active_calls = osmo_counter_alloc("msc.active_calls");
- net->mncc_recv = mncc_recv;
- net->ext_min = GSM_MIN_EXTEN;
- net->ext_max = GSM_MAX_EXTEN;
gsm_net_update_ctype(net);
- net->dyn_ts_allow_tch_f = true;
-
return net;
}