[OML] Allow each BTS model to specify the OML callback

This allows us to add BTS models that do not use the standard TS 12.21 OML
diff --git a/openbsc/src/bts_ipaccess_nanobts.c b/openbsc/src/bts_ipaccess_nanobts.c
index 6c7b2bd..25dc0c8 100644
--- a/openbsc/src/bts_ipaccess_nanobts.c
+++ b/openbsc/src/bts_ipaccess_nanobts.c
@@ -30,6 +30,8 @@
 
 static struct gsm_bts_model model_nanobts = {
 	.type = GSM_BTS_TYPE_NANOBTS,
+	.name = "nanobts",
+	.oml_rcvmsg = &abis_nm_rcvmsg,
 	.nm_att_tlvdef = {
 		.def = {
 			/* ip.access specifics */
diff --git a/openbsc/src/bts_siemens_bs11.c b/openbsc/src/bts_siemens_bs11.c
index 64bc1a7..5a5f883 100644
--- a/openbsc/src/bts_siemens_bs11.c
+++ b/openbsc/src/bts_siemens_bs11.c
@@ -31,6 +31,8 @@
 
 static struct gsm_bts_model model_bs11 = {
 	.type = GSM_BTS_TYPE_BS11,
+	.name = "bs11",
+	.oml_rcvmsg = &abis_nm_rcvmsg,
 	.nm_att_tlvdef = {
 		.def = {
 			[NM_ATT_AVAIL_STATUS] =		{ TLV_TYPE_TLV },
diff --git a/openbsc/src/bts_unknown.c b/openbsc/src/bts_unknown.c
index 2957ce0..f954599 100644
--- a/openbsc/src/bts_unknown.c
+++ b/openbsc/src/bts_unknown.c
@@ -27,6 +27,8 @@
 
 static struct gsm_bts_model model_unknown = {
 	.type = GSM_BTS_TYPE_UNKNOWN,
+	.name = "unknown",
+	.oml_rcvmsg = &abis_nm_rcvmsg,
 	.nm_att_tlvdef = {
 		.def = {
 		},
diff --git a/openbsc/src/e1_input.c b/openbsc/src/e1_input.c
index 3605f93..79c3a5a 100644
--- a/openbsc/src/e1_input.c
+++ b/openbsc/src/e1_input.c
@@ -475,6 +475,7 @@
 		u_int8_t tei, u_int8_t sapi)
 {
 	struct e1inp_sign_link *link;
+	struct gsm_bts *bts;
 	int ret;
 
 	switch (ts->type) {
@@ -492,7 +493,8 @@
 		switch (link->type) {
 		case E1INP_SIGN_OML:
 			msg->trx = link->trx;
-			ret = abis_nm_rcvmsg(msg);
+			bts = msg->trx->bts;
+			ret = bts->model->oml_rcvmsg(msg);
 			break;
 		case E1INP_SIGN_RSL:
 			msg->trx = link->trx;