[E1 input] proper config error reporting
diff --git a/openbsc/src/e1_config.c b/openbsc/src/e1_config.c
index f781b9e..dd81992 100644
--- a/openbsc/src/e1_config.c
+++ b/openbsc/src/e1_config.c
@@ -48,12 +48,19 @@
 
 	DEBUGP(DMI, "e1_reconfig_ts(%u,%u,%u)\n", ts->trx->bts->nr, ts->trx->nr, ts->nr);
 
-	if (!e1_link->e1_ts)
+	if (!e1_link->e1_ts) {
+		LOGP(DINP, LOGL_ERROR, "TS (%u/%u/%u) without E1 timeslot?\n",
+		     ts->nr, ts->trx->nr, ts->trx->bts->nr);
 		return 0;
+	}
 
 	line = e1inp_line_get(e1_link->e1_nr);
-	if (!line)
+	if (!line) {
+		LOGP(DINP, LOGL_ERROR, "TS (%u/%u/%u) referring to "
+		     "non-existing E1 line %u\n", ts->nr, ts->trx->nr,
+		     ts->trx->bts->nr, e1_link->e1_nr);
 		return -ENOMEM;
+	}
 
 	switch (ts->pchan) {
 	case GSM_PCHAN_TCH_F:
@@ -77,19 +84,29 @@
 	struct e1inp_sign_link *rsl_link;
 	int i;
 
-	if (!e1_link->e1_ts)
+	if (!e1_link->e1_ts) {
+		LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link without "
+		     "timeslot?\n", trx->bts->nr, trx->nr);
 		return -EINVAL;
+	}
 
 	/* RSL Link */
 	line = e1inp_line_get(e1_link->e1_nr);
-	if (!line)
+	if (!line) {
+		LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link referring "
+		     "to non-existing E1 line %u\n", trx->bts->nr,
+		     trx->nr, e1_link->e1_nr);
 		return -ENOMEM;
+	}
 	sign_ts = &line->ts[e1_link->e1_ts-1];
 	e1inp_ts_config(sign_ts, line, E1INP_TS_TYPE_SIGN);
 	rsl_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_RSL,
 					  trx, trx->rsl_tei, SAPI_RSL);
-	if (!rsl_link)
+	if (!rsl_link) {
+		LOGP(DINP, LOGL_ERROR, "TRX (%u/%u) RSL link creation "
+		     "failed\n", trx->bts->nr, trx->nr);
 		return -ENOMEM;
+	}
 	if (trx->rsl_link)
 		e1inp_sign_link_destroy(trx->rsl_link);
 	trx->rsl_link = rsl_link;
@@ -110,19 +127,28 @@
 
 	DEBUGP(DMI, "e1_reconfig_bts(%u)\n", bts->nr);
 
-	if (!e1_link->e1_ts)
+	if (!e1_link->e1_ts) {
+		LOGP(DINP, LOGL_ERROR, "BTS %u OML link without timeslot?\n",
+		     bts->nr);
 		return -EINVAL;
+	}
 
 	/* OML link */
 	line = e1inp_line_get(e1_link->e1_nr);
-	if (!line)
+	if (!line) {
+		LOGP(DINP, LOGL_ERROR, "BTS %u OML link referring to "
+		     "non-existing E1 line %u\n", bts->nr, e1_link->e1_nr);
 		return -ENOMEM;
+	}
 	sign_ts = &line->ts[e1_link->e1_ts-1];
 	e1inp_ts_config(sign_ts, line, E1INP_TS_TYPE_SIGN);
 	oml_link = e1inp_sign_link_create(sign_ts, E1INP_SIGN_OML,
 					  bts->c0, bts->oml_tei, SAPI_OML);
-	if (!oml_link)
+	if (!oml_link) {
+		LOGP(DINP, LOGL_ERROR, "BTS %u OML link creation failed\n",
+		     bts->nr);
 		return -ENOMEM;
+	}
 	if (bts->oml_link)
 		e1inp_sign_link_destroy(bts->oml_link);
 	bts->oml_link = oml_link;