* fill the e1_link member of every bts_trx_ts structure
* introduce new timer as part of every paging request

diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h
index 006a8c0..753f112 100644
--- a/include/openbsc/gsm_data.h
+++ b/include/openbsc/gsm_data.h
@@ -186,9 +186,12 @@
 	struct gsm_subscriber *subscr;
 	struct gsm_bts *bts;
 	int requests;
-
 	int chan_type;
+
+	/* Timer 3113: how long do we try to page? */
+	struct timer_list T3113;
 };
+#define T3113_VALUE	60, 0
 
 /*
  * This keeps track of the paging status of one BTS. It
@@ -266,4 +269,6 @@
 	EVT_E1_TEI_DN,
 };
 
+void set_ts_e1link(struct gsm_bts_trx_ts *ts, u_int8_t e1_nr,
+		   u_int8_t e1_ts, u_int8_t e1_ts_ss);
 #endif
diff --git a/src/bsc_hack.c b/src/bsc_hack.c
index 80b0f3b..a7ed585 100644
--- a/src/bsc_hack.c
+++ b/src/bsc_hack.c
@@ -289,12 +289,14 @@
 
 	/* Connect signalling of bts0/trx0 to e1_0/ts1/64kbps */
 	abis_nm_conn_terr_sign(trx, 0, 1, 0xff);
+	set_ts_e1link(&trx->ts[0], 0, 1, 0xff);
 	abis_nm_raw_msg(bts, sizeof(msg_6), msg_6); /* SET TRX ATTRIBUTES */
 
 	/* Use TEI 1 for signalling */
 	abis_nm_establish_tei(bts, 0, 0, 1, 0xff, 0x01);
 	abis_nm_set_channel_attr(&trx->ts[0], NM_CHANC_SDCCH_CBCH);
-#if 0
+
+#ifdef HAVE_TRX1
 	/* TRX 1 */
 	abis_nm_conn_terr_sign(&bts->trx[1], 0, 1, 0xff);
 	/* FIXME: TRX ATTRIBUTE */
@@ -304,36 +306,43 @@
 	/* SET CHANNEL ATTRIBUTE TS1 */
 	abis_nm_set_channel_attr(&trx->ts[1], 0x09);
 	/* Connect traffic of bts0/trx0/ts1 to e1_0/ts2/b */
+	set_ts_e1link(&trx->ts[1], 0, 2, 1);
 	abis_nm_conn_terr_traf(&trx->ts[1], 0, 2, 1);
 	
 	/* SET CHANNEL ATTRIBUTE TS2 */
 	abis_nm_set_channel_attr(&trx->ts[2], 0x09);
 	/* Connect traffic of bts0/trx0/ts2 to e1_0/ts2/c */
+	set_ts_e1link(&trx->ts[2], 0, 2, 2);
 	abis_nm_conn_terr_traf(&trx->ts[2], 0, 2, 2);
 
 	/* SET CHANNEL ATTRIBUTE TS3 */
 	abis_nm_set_channel_attr(&trx->ts[3], 0x09);
 	/* Connect traffic of bts0/trx0/ts3 to e1_0/ts2/d */
+	set_ts_e1link(&trx->ts[3], 0, 2, 3);
 	abis_nm_conn_terr_traf(&trx->ts[3], 0, 2, 3);
 
 	/* SET CHANNEL ATTRIBUTE TS4 */
 	abis_nm_set_channel_attr(&trx->ts[4], 0x09);
 	/* Connect traffic of bts0/trx0/ts4 to e1_0/ts3/a */
+	set_ts_e1link(&trx->ts[4], 0, 3, 0);
 	abis_nm_conn_terr_traf(&trx->ts[4], 0, 3, 0);
 
 	/* SET CHANNEL ATTRIBUTE TS5 */
 	abis_nm_set_channel_attr(&trx->ts[5], 0x09);
 	/* Connect traffic of bts0/trx0/ts5 to e1_0/ts3/b */
+	set_ts_e1link(&trx->ts[5], 0, 3, 1);
 	abis_nm_conn_terr_traf(&trx->ts[5], 0, 3, 1);
 
 	/* SET CHANNEL ATTRIBUTE TS6 */
 	abis_nm_set_channel_attr(&trx->ts[6], 0x09);
 	/* Connect traffic of bts0/trx0/ts6 to e1_0/ts3/c */
+	set_ts_e1link(&trx->ts[6], 0, 3, 2);
 	abis_nm_conn_terr_traf(&trx->ts[6], 0, 3, 2);
 
 	/* SET CHANNEL ATTRIBUTE TS7 */
 	abis_nm_set_channel_attr(&trx->ts[7], 0x09);
 	/* Connect traffic of bts0/trx0/ts7 to e1_0/ts3/d */
+	set_ts_e1link(&trx->ts[7], 0, 3, 3);
 	abis_nm_conn_terr_traf(&trx->ts[7], 0, 3, 3);
 
 	/* end DB transmission */
diff --git a/src/gsm_data.c b/src/gsm_data.c
index 834f213..6763fc5 100644
--- a/src/gsm_data.c
+++ b/src/gsm_data.c
@@ -24,6 +24,14 @@
 
 #include <openbsc/gsm_data.h>
 
+void set_ts_e1link(struct gsm_bts_trx_ts *ts, u_int8_t e1_nr,
+		   u_int8_t e1_ts, u_int8_t e1_ts_ss)
+{
+	ts->e1_link.e1_nr = e1_nr;
+	ts->e1_link.e1_ts = e1_ts;
+	ts->e1_link.e1_ts_ss = e1_ts_ss;
+}
+
 static const char *pchan_names[] = {
 	[GSM_PCHAN_NONE]	= "NONE",
 	[GSM_PCHAN_CCCH]	= "CCCH",
@@ -127,6 +135,9 @@
 		}
 
 		bts->num_trx = 1;	/* FIXME */
+#ifdef HAVE_TRX1
+		bts->num_trx++;
+#endif
 		bts->c0 = &bts->trx[0];
 		bts->c0->ts[0].pchan = GSM_PCHAN_CCCH_SDCCH4;
 	}