diff --git a/src/abis_nm.c b/src/abis_nm.c
index 33fc0bf..9793dc4 100644
--- a/src/abis_nm.c
+++ b/src/abis_nm.c
@@ -217,6 +217,8 @@
 		[NM_ATT_BS11_LMT_LOGIN_TIME] =	{ TLV_TYPE_TLV },
 		[NM_ATT_BS11_LMT_USER_ACC_LEV] ={ TLV_TYPE_TLV },
 		[NM_ATT_BS11_LMT_USER_NAME] =	{ TLV_TYPE_TLV },
+		[NM_ATT_BS11_BTS_STATE]	=	{ TLV_TYPE_TLV },
+		[NM_ATT_BS11_E1_STATE]	=	{ TLV_TYPE_TLV },
 		/* ip.access specifics */
 		[NM_ATT_IPACC_RSL_BSC_IP] =	{ TLV_TYPE_FIXED, 4 },
 		[NM_ATT_IPACC_RSL_BSC_PORT] =	{ TLV_TYPE_FIXED, 2 },
@@ -224,7 +226,11 @@
 
 	},
 };
-#define nm_tlv_parse(dec, buf, len)	tlv_parse(dec, &nm_att_tlvdef, buf, len)
+
+int abis_nm_tlv_parse(struct tlv_parsed *tp, const u_int8_t *buf, int len)
+{
+	return tlv_parse(tp, &nm_att_tlvdef, buf, len);
+}
 
 static int is_in_arr(enum abis_nm_msgtype mt, const enum abis_nm_msgtype *arr, int size)
 {
@@ -462,7 +468,7 @@
 
 	new_state = *nm_state;
 	
-	nm_tlv_parse(&tp, foh->data, oh->length-sizeof(*foh));
+	abis_nm_tlv_parse(&tp, foh->data, oh->length-sizeof(*foh));
 	if (TLVP_PRESENT(&tp, NM_ATT_OPER_STATE)) {
 		new_state.operational = *TLVP_VAL(&tp, NM_ATT_OPER_STATE);
 		DEBUGPC(DNM, "OP_STATE=%s ", opstate_name(new_state.operational));
@@ -584,7 +590,7 @@
 	struct tlv_parsed tp;
 	u_int8_t adm_state;
 
-	nm_tlv_parse(&tp, foh->data, oh->length-sizeof(*foh));
+	abis_nm_tlv_parse(&tp, foh->data, oh->length-sizeof(*foh));
 	if (!TLVP_PRESENT(&tp, NM_ATT_ADM_STATE))
 		return -EINVAL;
 
@@ -1858,7 +1864,7 @@
 	}
 
 	foh = (struct abis_om_fom_hdr *) oh->data + 1 + idstrlen;
-	nm_tlv_parse(&tp, foh->data, oh->length-sizeof(*foh));
+	abis_nm_tlv_parse(&tp, foh->data, oh->length-sizeof(*foh));
 
 	switch (foh->msg_type) {
 	case NM_MT_IPACC_RSL_CONNECT_ACK:
