mirror of
https://gitea.osmocom.org/cellular-infrastructure/osmo-mgw.git
synced 2025-11-01 20:43:47 +00:00
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.
This commit is contained in:
@@ -1,6 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
struct msgb;
|
||||
struct gsm_network;
|
||||
|
||||
typedef int (*mncc_recv_cb_t)(struct gsm_network *, struct msgb *);
|
||||
|
||||
struct gsm_network *gsm_network_init(void *ctx,
|
||||
uint16_t country_code,
|
||||
uint16_t network_code,
|
||||
mncc_recv_cb_t mncc_recv);
|
||||
|
||||
@@ -48,6 +48,7 @@ ipaccess_config_SOURCES = \
|
||||
# FIXME: resolve the bogus dependencies patched around here:
|
||||
ipaccess_config_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(LIBCRYPT) \
|
||||
|
||||
@@ -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,22 +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->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;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
/* Code used by both libbsc and libmsc (xsc means "BSC or MSC").
|
||||
*
|
||||
* (C) 2016 by sysmocom s.m.f.c. <info@sysmocom.de>
|
||||
* (C) 2008-2010 by Harald Welte <laforge@gnumonks.org>
|
||||
* (C) 2014 by Holger Hans Peter Freyther
|
||||
* All Rights Reserved
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -17,3 +19,63 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <osmocom/gsm/gsm0480.h>
|
||||
|
||||
#include <openbsc/xsc.h>
|
||||
#include <openbsc/gsm_data.h>
|
||||
#include <openbsc/gsm_subscriber.h>
|
||||
|
||||
/* Warning: if bsc_network_init() is not called, some of the members of
|
||||
* gsm_network are not initialized properly and must not be used! (In
|
||||
* particular the llist heads and stats counters.)
|
||||
* The long term aim should be to have entirely separate structs for libbsc and
|
||||
* libmsc with some common general items.
|
||||
*/
|
||||
struct gsm_network *gsm_network_init(void *ctx,
|
||||
uint16_t country_code,
|
||||
uint16_t network_code,
|
||||
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->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;
|
||||
|
||||
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;
|
||||
|
||||
INIT_LLIST_HEAD(&net->trans_list);
|
||||
INIT_LLIST_HEAD(&net->upqueue);
|
||||
INIT_LLIST_HEAD(&net->subscr_conns);
|
||||
|
||||
/* init statistics */
|
||||
net->msc_ctrs = rate_ctr_group_alloc(net, &msc_ctrg_desc, 0);
|
||||
|
||||
net->mncc_recv = mncc_recv;
|
||||
net->ext_min = GSM_MIN_EXTEN;
|
||||
net->ext_max = GSM_MAX_EXTEN;
|
||||
|
||||
net->dyn_ts_allow_tch_f = true;
|
||||
|
||||
return net;
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ osmo_bsc_SOURCES = \
|
||||
osmo_bsc_LDADD = \
|
||||
$(top_builddir)/src/libfilter/libfilter.a \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libmsc/libmsc.a \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
|
||||
@@ -42,6 +42,7 @@ osmo_bsc_nat_SOURCES = \
|
||||
osmo_bsc_nat_LDADD = \
|
||||
$(top_builddir)/src/libmgcp/libmgcp.a \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(top_builddir)/src/libfilter/libfilter.a \
|
||||
|
||||
@@ -29,6 +29,7 @@ osmo_nitb_SOURCES = \
|
||||
|
||||
osmo_nitb_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libmsc/libmsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
|
||||
@@ -50,6 +50,7 @@ bs11_config_SOURCES = \
|
||||
|
||||
bs11_config_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
|
||||
@@ -44,6 +44,7 @@ bsc_nat_test_SOURCES = \
|
||||
bsc_nat_test_LDADD = \
|
||||
$(top_builddir)/src/libfilter/libfilter.a \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libmgcp/libmgcp.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
|
||||
@@ -33,6 +33,7 @@ bsc_test_SOURCES = \
|
||||
bsc_test_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libmsc/libmsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libmgcp/libmgcp.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
|
||||
@@ -26,6 +26,7 @@ channel_test_SOURCES = \
|
||||
channel_test_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libmsc/libmsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
$(LIBOSMOGSM_LIBS) \
|
||||
|
||||
@@ -35,6 +35,7 @@ db_test_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libmsc/libmsc.a \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
@@ -45,4 +46,3 @@ db_test_LDADD = \
|
||||
$(LIBCRYPTO_LIBS) \
|
||||
-ldbi \
|
||||
$(NULL)
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ gsm0408_test_SOURCES = \
|
||||
gsm0408_test_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libmsc/libmsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
|
||||
@@ -33,6 +33,7 @@ subscr_test_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libmsc/libmsc.a \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
|
||||
@@ -33,6 +33,7 @@ trau_test_LDADD = \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libmsc/libmsc.a \
|
||||
$(top_builddir)/src/libbsc/libbsc.a \
|
||||
$(top_builddir)/src/libxsc/libxsc.a \
|
||||
$(top_builddir)/src/libtrau/libtrau.a \
|
||||
$(top_builddir)/src/libcommon/libcommon.a \
|
||||
$(LIBOSMOCORE_LIBS) \
|
||||
|
||||
Reference in New Issue
Block a user