* Add support for multiple ip.access nanoBTS at one BSC
 * keep track of site_id/bts_id in struct gsm_bts
 * dynamically match incoming OML/RSL over TCP connections by BTS Unit ID
 * introduce new debug category DINP (separate from DMI for hexdumps)
 * remove ia_config() as it is no longer needed
 * 
* ensure that signalling links / E1 line information is correctly printed
* when bootstrapping RSL or OML, tell us for which BTS it is being doen
* separate bootstrap_bts() out from bootstrap_network()
* statically configure two ip.access BTS, one with unit id's 1800/0/0 and 1801/0/0

diff --git a/src/bsc_hack.c b/src/bsc_hack.c
index 533f40c..346247c 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(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 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 @@
 	}
 }
 
-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 @@
 
 	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 @@
 	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)