aboutsummaryrefslogtreecommitdiffstats
path: root/src/bsc_hack.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bsc_hack.c')
-rw-r--r--src/bsc_hack.c53
1 files changed, 36 insertions, 17 deletions
diff --git a/src/bsc_hack.c b/src/bsc_hack.c
index 533f40c39..346247c77 100644
--- a/src/bsc_hack.c
+++ b/src/bsc_hack.c
@@ -48,7 +48,7 @@
#include <openbsc/e1_input.h>
/* global pointer to the gsm network data structure */
-static struct gsm_network *gsmnet;
+struct gsm_network *gsmnet;
/* MCC and MNC for the Location Area Identifier */
static int MCC = 1;
@@ -537,7 +537,7 @@ static void bootstrap_om_bs11(struct gsm_bts *bts)
static void bootstrap_om(struct gsm_bts *bts)
{
- fprintf(stdout, "bootstrapping OML\n");
+ fprintf(stdout, "bootstrapping OML for BTS %u\n", bts->nr);
switch (bts->type) {
case GSM_BTS_TYPE_BS11:
@@ -858,7 +858,8 @@ static void patch_tables(struct gsm_bts *bts)
static void bootstrap_rsl(struct gsm_bts_trx *trx)
{
- fprintf(stdout, "bootstrapping RSL MCC=%u MNC=%u\n", MCC, MNC);
+ fprintf(stdout, "bootstrapping RSL for BTS/TRX (%u/%u) "
+ "using MCC=%u MNC=%u\n", trx->nr, trx->bts->nr, MCC, MNC);
set_system_infos(trx);
}
@@ -886,18 +887,8 @@ void input_event(int event, enum e1inp_sign_type type, struct gsm_bts_trx *trx)
}
}
-static int bootstrap_network(void)
+static int bootstrap_bts(struct gsm_bts *bts)
{
- struct gsm_bts *bts;
-
- /* initialize our data structures */
- gsmnet = gsm_network_init(1, BTS_TYPE, MCC, MNC);
- if (!gsmnet)
- return -ENOMEM;
-
- gsmnet->name_long = "OpenBSC";
- gsmnet->name_short = "OpenBSC";
- bts = &gsmnet->bts[0];
bts->location_area_code = LAC;
bts->trx[0].arfcn = ARFCN;
@@ -912,6 +903,24 @@ static int bootstrap_network(void)
paging_init(bts);
+ return 0;
+}
+
+static int bootstrap_network(void)
+{
+ struct gsm_bts *bts;
+
+ /* initialize our data structures */
+ gsmnet = gsm_network_init(2, BTS_TYPE, MCC, MNC);
+ if (!gsmnet)
+ return -ENOMEM;
+
+ gsmnet->name_long = "OpenBSC";
+ gsmnet->name_short = "OpenBSC";
+
+ bts = &gsmnet->bts[0];
+ bootstrap_bts(bts);
+
if (db_init(database_name, gsmnet)) {
printf("DB: Failed to init database. Please check the option settings.\n");
return -1;
@@ -927,10 +936,20 @@ static int bootstrap_network(void)
telnet_init(gsmnet, 4242);
/* E1 mISDN input setup */
- if (BTS_TYPE == GSM_BTS_TYPE_BS11)
+ if (BTS_TYPE == GSM_BTS_TYPE_BS11) {
+ gsmnet->num_bts = 1;
return e1_config(bts, cardnr, release_l2);
- else
- return ia_config(bts);
+ } else {
+ /* FIXME: do this dynamic */
+ bts->ip_access.site_id = 1801;
+ bts->ip_access.bts_id = 0;
+ bts = &gsmnet->bts[1];
+ bootstrap_bts(bts);
+ bts->ip_access.site_id = 1800;
+ bts->ip_access.bts_id = 0;
+ ipaccess_setup(gsmnet);
+ }
+
}
static void create_pcap_file(char *file)