Merge branch 'master' into sms
diff --git a/openbsc/include/openbsc/abis_nm.h b/openbsc/include/openbsc/abis_nm.h
index 65cef73..47baafb 100644
--- a/openbsc/include/openbsc/abis_nm.h
+++ b/openbsc/include/openbsc/abis_nm.h
@@ -171,9 +171,6 @@
 	NM_MT_SET_ALARM_THRES,
 	NM_MT_SET_ALARM_THRES_ACK,
 	NM_MT_SET_ALARM_THRES_NACK,
-
-	NM_MT_IPACC_RESTART		= 0x87,
-	NM_MT_IPACC_RESTART_ACK,
 };
 
 enum abis_nm_msgtype_bs11 {
@@ -212,6 +209,8 @@
 };
 
 enum abis_nm_msgtype_ipacc {
+	NM_MT_IPACC_RESTART		= 0x87,
+	NM_MT_IPACC_RESTART_ACK,
 	NM_MT_IPACC_RSL_CONNECT		= 0xe0,
 	NM_MT_IPACC_RSL_CONNECT_ACK,
 	NM_MT_IPACC_RSL_CONNECT_NACK,
@@ -245,6 +244,12 @@
 	NM_OC_CHANNEL,
 	NM_OC_BASEB_TRANSC,
 	/* RFU: 05-FE */
+
+	NM_OC_IPAC_E1_TRUNK		= 0x0e,
+	NM_OC_IPAC_E1_PORT		= 0x0f,
+	NM_OC_IPAC_E1_CHAN		= 0x10,
+	NM_OC_IPAC_CLK_MODULE		= 0x22,
+
 	NM_OC_BS11_ADJC			= 0xa0,
 	NM_OC_BS11_HANDOVER		= 0xa1,
 	NM_OC_BS11_PWR_CTRL		= 0xa2,
@@ -257,8 +262,7 @@
 
 	NM_OC_GPRS_NSE			= 0xf0,
 	NM_OC_GPRS_CELL			= 0xf1,
-	NM_OC_GPRS_NSVC0		= 0xf2,
-	NM_OC_GPRS_NSVC1		= 0xf3,
+	NM_OC_GPRS_NSVC			= 0xf2,
 
 	NM_OC_NULL			= 0xff,
 };
@@ -358,26 +362,54 @@
 	NM_ATT_BS11_ENA_RXQUAL_HO	= 0x6d,
 	NM_ATT_BS11_FACCH_QUAL		= 0x6e,
 
-	NM_ATT_IPACC_RSL_BSC_IP		= 0x80,
-	NM_ATT_IPACC_RSL_BSC_PORT	= 0x81,
+	NM_ATT_IPACC_DST_IP		= 0x80,
+	NM_ATT_IPACC_DST_IP_PORT	= 0x81,
+	NM_ATT_IPACC_SSRC		= 0x82,
+	NM_ATT_IPACC_RTP_PAYLD_TYPE	= 0x83,
+	NM_ATT_IPACC_BASEB_ID		= 0x84,
+	NM_ATT_IPACC_STREAM_ID		= 0x85,
 	NM_ATT_IPACC_NV_FLAGS		= 0x86,
 	NM_ATT_IPACC_FREQ_CTRL		= 0x87,
+	NM_ATT_IPACC_PRIM_OML_CFG	= 0x88,
 	NM_ATT_IPACC_SEC_OML_CFG	= 0x89,
 	NM_ATT_IPACC_IP_IF_CFG		= 0x8a,		/* IP interface */
 	NM_ATT_IPACC_IP_GW_CFG		= 0x8b,		/* IP gateway */
 	NM_ATT_IPACC_IN_SERV_TIME	= 0x8c,
+	NM_ATT_IPACC_TRX_BTS_ASS	= 0x8d,
 	NM_ATT_IPACC_LOCATION		= 0x8e,		/* string describing location */
+	NM_ATT_IPACC_PAGING_CFG		= 0x8f,
+	NM_ATT_IPACC_FILE_DATA		= 0x90,
 	NM_ATT_IPACC_UNIT_ID		= 0x91,		/* Site/BTS/TRX */
+	NM_ATT_IPACC_PARENT_UNIT_ID	= 0x92,
 	NM_ATT_IPACC_UNIT_NAME		= 0x93,		/* default: nbts-<mac-as-string> */
 	NM_ATT_IPACC_SNMP_CFG		= 0x94,
-	NM_ATT_IPACC_PRIM_OML_IP	= 0x95,
-	NM_ATT_IPACC_SEC_OML_IP		= 0x96,
+	NM_ATT_IPACC_PRIM_OML_CFG_LIST	= 0x95,
+	NM_ATT_IPACC_PRIM_OML_FB_TOUT	= 0x96,
 	NM_ATT_IPACC_CUR_SW_CFG		= 0x97,
-	
+	NM_ATT_IPACC_TIMING_BUS		= 0x98,
+	NM_ATT_IPACC_CGI		= 0x99,
+	NM_ATT_IPACC_RAC		= 0x9a,
+	NM_ATT_IPACC_OBJ_VERSION	= 0x9b,
+	NM_ATT_IPACC_GPRS_PAGING_CFG	= 0x9c,
+	NM_ATT_IPACC_NSEI		= 0x9d,
+	NM_ATT_IPACC_BVCI		= 0x9e,
+	NM_ATT_IPACC_NSVCI		= 0x9f,
+	NM_ATT_IPACC_NS_CFG		= 0xa0,
+	NM_ATT_IPACC_BSSGP_CFG		= 0xa1,
+	NM_ATT_IPACC_NS_LINK_CFG	= 0xa2,
+	NM_ATT_IPACC_RLC_CFG		= 0xa3,	
 	NM_ATT_IPACC_ALM_THRESH_LIST	= 0xa4,
+	NM_ATT_IPACC_MONIT_VAL_LIST	= 0xa5,
+	NM_ATT_IPACC_TIB_CONTROL	= 0xa6,
+	NM_ATT_IPACC_SUPP_FEATURES	= 0xa7,
+	NM_ATT_IPACC_CODING_SCHEMES	= 0xa8,
+	NM_ATT_IPACC_RLC_CFG_2		= 0xa9,
+	NM_ATT_IPACC_HEARTB_TOUT	= 0xaa,
 	NM_ATT_IPACC_UPTIME		= 0xab,
+	NM_ATT_IPACC_RLC_CFG_3		= 0xac,
 	NM_ATT_IPACC_SSL_CFG		= 0xad,
 	NM_ATT_IPACC_SEC_POSSIBLE	= 0xae,
+	NM_ATT_IPACC_IML_SSL_STATE	= 0xaf,
 	NM_ATT_IPACC_REVOC_DATE		= 0xb0,
 
 
@@ -568,11 +600,16 @@
 };
 
 enum abis_nm_ipacc_test_no {
+	NM_IPACC_TESTNO_RLOOP_ANT	= 0x01,
+	NM_IPACC_TESTNO_RLOOP_XCVR	= 0x02,
+	NM_IPACC_TESTNO_FUNC_OBJ	= 0x03,
 	NM_IPACC_TESTNO_CHAN_USAGE	= 0x40,
 	NM_IPACC_TESTNO_BCCH_CHAN_USAGE	= 0x41,
 	NM_IPACC_TESTNO_FREQ_SYNC	= 0x42,
 	NM_IPACC_TESTNO_BCCH_INFO	= 0x43,
 	NM_IPACC_TESTNO_TX_BEACON	= 0x44,
+	NM_IPACC_TESTNO_SYSINFO_MONITOR	= 0x45,
+	NM_IPACC_TESTNO_BCCCH_MONITOR	= 0x46,
 };
 
 /* first byte after length inside NM_ATT_TEST_REPORT */
diff --git a/openbsc/include/openbsc/abis_rsl.h b/openbsc/include/openbsc/abis_rsl.h
index c928ffa..cc4a367 100644
--- a/openbsc/include/openbsc/abis_rsl.h
+++ b/openbsc/include/openbsc/abis_rsl.h
@@ -123,8 +123,25 @@
 	RSL_MT_MR_CODEC_MOD_PER,
 	RSL_MT_TFO_REP,
 	RSL_MT_TFO_MOD_REQ,		/* 0x3f */
+	RSL_MT_LOCATION_INFO		= 0x41,
 
 	/* ip.access specific RSL message types */
+	RSL_MT_IPAC_DIR_RETR_ENQ	= 0x40,
+	RSL_MT_IPAC_PDCH_ACT		= 0x48,
+	RSL_MT_IPAC_PDCH_ACT_ACK,
+	RSL_MT_IPAC_PDCH_ACT_NACK,
+	RSL_MT_IPAC_PDCH_DEACT		= 0x4b,
+	RSL_MT_IPAC_PDCH_DEACT_ACK,
+	RSL_MT_IPAC_PDCH_DEACT_NACK,
+	RSL_MT_IPAC_CONNECT_MUX		= 0x50,
+	RSL_MT_IPAC_CONNECT_MUX_ACK,
+	RSL_MT_IPAC_CONNECT_MUX_NACK,
+	RSL_MT_IPAC_BIND_MUX		= 0x53,
+	RSL_MT_IPAC_BIND_MUX_ACK,
+	RSL_MT_IPAC_BIND_MUX_NACK,
+	RSL_MT_IPAC_DISC_MUX		= 0x56,
+	RSL_MT_IPAC_DISC_MUX_ACK,
+	RSL_MT_IPAC_DISC_MUX_NACK,
 	RSL_MT_IPAC_BIND		= 0x70,		/* Bind to local BTS RTP port */
 	RSL_MT_IPAC_BIND_ACK,
 	RSL_MT_IPAC_BIND_NACK,
@@ -132,7 +149,9 @@
 	RSL_MT_IPAC_CONNECT_ACK,
 	RSL_MT_IPAC_CONNECT_NACK,
 	RSL_MT_IPAC_DISCONNECT_IND	= 0x76,
-
+	RSL_MT_IPAC_DISCONNECT		= 0x77,
+	RSL_MT_IPAC_DISCONNECT_ACK,
+	RSL_MT_IPAC_DISCONNECT_NACK,
 };
 
 /* Chapter 9.3 */
@@ -198,10 +217,24 @@
 	RSL_IE_TFO_STATUS,
 	RSL_IE_LLP_APDU,
 
+	RSL_IE_IPAC_SRTP_CONFIG	= 0xe0,
+	RSL_IE_IPAC_PROXY_UDP	= 0xe1,
+	RSL_IE_IPAC_BSCMPL_TOUT	= 0xe2,
 	RSL_IE_IPAC_REMOTE_IP	= 0xf0,
 	RSL_IE_IPAC_REMOTE_PORT	= 0xf1,
+	RSL_IE_IPAC_RTP_PAYLOAD	= 0xf2,
 	RSL_IE_IPAC_LOCAL_PORT	= 0xf3,
+	RSL_IE_IPAC_SPEECH_MODE	= 0xf4,
 	RSL_IE_IPAC_LOCAL_IP	= 0xf5,
+	RSL_IE_IPAC_CONN_STAT	= 0xf6,
+	RSL_IE_IPAC_HO_C_PARMS	= 0xf7,
+	RSL_IE_IPAC_CONN_ID	= 0xf8,
+	RSL_IE_IPAC_RTP_CSD_FMT	= 0xf9,
+	RSL_IE_IPAC_RTP_JIT_BUF	= 0xfa,
+	RSL_IE_IPAC_RTP_COMPR	= 0xfb,
+	RSL_IE_IPAC_RTP_PAYLOAD2= 0xfc,
+	RSL_IE_IPAC_RTP_MPLEX	= 0xfd,
+	RSL_IE_IPAC_RTP_MPLEX_ID= 0xfe,
 };
 
 /* Chapter 9.3.1 */
@@ -365,6 +398,45 @@
 #define RSL_BS_PA_MFRMS_8	0x06
 #define RSL_BS_PA_MFRMS_9	0x07
 
+/* RSL_IE_IPAC_RTP_PAYLOAD[2] */
+enum rsl_ipac_rtp_payload {
+	RSL_IPAC_RTP_GSM	= 1,
+	RSL_IPAC_RTP_EFR,
+	RSL_IPAC_RTP_AMR,
+	RSL_IPAC_RTP_CSD,
+	RSL_IPAC_RTP_MUX,
+};
+
+/* RSL_IE_IPAC_SPEECH_MODE, lower four bits */
+enum rsl_ipac_speech_mode_s {
+	RSL_IPAC_SPEECH_GSM_FR = 0,	/* GSM FR (Type 1, FS) */
+	RSL_IPAC_SPEECH_GSM_EFR = 1,	/* GSM EFR (Type 2, FS) */
+	RSL_IPAC_SPEECH_GSM_AMR_FR = 2,	/* GSM AMR/FR (Type 3, FS) */
+	RSL_IPAC_SPEECH_GSM_HR = 3,	/* GSM HR (Type 1, HS) */
+	RSL_IPAC_SPEECH_GSM_AMR_HR = 5,	/* GSM AMR/hr (Type 3, HS) */
+	RSL_IPAC_SPEECH_AS_RTP = 0xf,	/* As specified by RTP Payload IE */
+};
+/* RSL_IE_IPAC_SPEECH_MODE, upper four bits */
+enum rsl_ipac_speech_mode_m {
+	RSL_IPAC_SPEECH_M_RXTX = 0,	/* Send and Receive */
+	RSL_IPAC_SPEECH_M_RX = 1,	/* Receive only */
+	RSL_IPAC_SPEECH_M_TX = 2,	/* Send only */
+};
+
+/* RSL_IE_IPAC_RTP_CSD_FMT, lower four bits */
+enum rsl_ipac_rtp_csd_format_d {
+	RSL_IPAC_RTP_CSD_EXT_TRAU = 0,
+	RSL_IPAC_RTP_CSD_NON_TRAU = 1,
+	RSL_IPAC_RTP_CSD_TRAU_BTS = 2,
+	RSL_IPAC_RTP_CSD_IWF_FREE = 3,
+};
+/* RSL_IE_IPAC_RTP_CSD_FMT, upper four bits */
+enum rsl_ipac_rtp_csd_format_ir {
+	RSL_IPAC_RTP_CSD_IR_8k = 0,
+	RSL_IPAC_RTP_CSD_IR_16k = 1,
+	RSL_IPAC_RTP_CSD_IR_32k = 2,
+	RSL_IPAC_RTP_CSD_IR_64k = 3,
+};
 
 #include "msgb.h"
 
@@ -392,7 +464,8 @@
 /* ip.access specfic RSL extensions */
 int rsl_ipacc_bind(struct gsm_lchan *lchan);
 int rsl_ipacc_connect(struct gsm_lchan *lchan, u_int32_t ip,
-		      u_int16_t port, u_int16_t f8, u_int8_t fc);
+		      u_int16_t port, u_int16_t conn_id,
+		      u_int8_t rtp_payload2);
 
 int abis_rsl_rcvmsg(struct msgb *msg);
 
@@ -404,6 +477,7 @@
 
 /* to be provided by external code */
 int abis_rsl_sendmsg(struct msgb *msg);
+int rsl_deact_sacch(struct gsm_lchan *lchan);
 int rsl_chan_release(struct gsm_lchan *lchan);
 
 /* BCCH related code */
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index 11176d6..20834f0 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -205,8 +205,8 @@
 	struct {
 		u_int32_t bound_ip;
 		u_int16_t bound_port;
-		u_int8_t attr_fc;
-		u_int16_t attr_f8;
+		u_int8_t rtp_payload2;
+		u_int16_t conn_id;
 	} abis_ip;
 
 	struct gsm_lchan lchan[TS_MAX_LCHAN];
diff --git a/openbsc/src/abis_nm.c b/openbsc/src/abis_nm.c
index 7e016db..f2383e2 100644
--- a/openbsc/src/abis_nm.c
+++ b/openbsc/src/abis_nm.c
@@ -355,12 +355,12 @@
 		[NM_ATT_BS11_CCLK_ACCURACY] =	{ TLV_TYPE_TV },
 		[NM_ATT_BS11_CCLK_TYPE] =	{ TLV_TYPE_TV },
 		/* ip.access specifics */
-		[NM_ATT_IPACC_RSL_BSC_IP] =	{ TLV_TYPE_FIXED, 4 },
-		[NM_ATT_IPACC_RSL_BSC_PORT] =	{ TLV_TYPE_FIXED, 2 },
-		[NM_ATT_IPACC_PRIM_OML_IP] =	{ TLV_TYPE_TL16V },
+		[NM_ATT_IPACC_DST_IP] =		{ TLV_TYPE_FIXED, 4 },
+		[NM_ATT_IPACC_DST_IP_PORT] =	{ TLV_TYPE_FIXED, 2 },
+		[NM_ATT_IPACC_PRIM_OML_CFG_LIST] = { TLV_TYPE_TL16V },
 		[NM_ATT_IPACC_NV_FLAGS] =	{ TLV_TYPE_TL16V },
 		[NM_ATT_IPACC_FREQ_CTRL] =	{ TLV_TYPE_FIXED, 2 },
-		[NM_ATT_IPACC_SEC_OML_IP] =	{ TLV_TYPE_TL16V }, // wrong name
+		[NM_ATT_IPACC_PRIM_OML_FB_TOUT] = { TLV_TYPE_TL16V },
 		[NM_ATT_IPACC_SEC_OML_CFG] =	{ TLV_TYPE_FIXED, 6 },
 		[NM_ATT_IPACC_IP_IF_CFG] =	{ TLV_TYPE_FIXED, 8 },
 		[NM_ATT_IPACC_IP_GW_CFG] =	{ TLV_TYPE_FIXED, 12 },
@@ -481,10 +481,8 @@
 		return "GPRS NSE";
 	case NM_OC_GPRS_CELL:
 		return "GPRS CELL";
-	case NM_OC_GPRS_NSVC0:
-		return "GPRS NSVC0";
-	case NM_OC_GPRS_NSVC1:
-		return "GPRS NSVC1";
+	case NM_OC_GPRS_NSVC:
+		return "GPRS NSVC";
 	case NM_OC_BS11:
 		return "SIEMENSHW";
 	}
@@ -2263,14 +2261,14 @@
 	switch (foh->msg_type) {
 	case NM_MT_IPACC_RSL_CONNECT_ACK:
 		DEBUGPC(DNM, "RSL CONNECT ACK ");
-		if (TLVP_PRESENT(&tp, NM_ATT_IPACC_RSL_BSC_IP))
+		if (TLVP_PRESENT(&tp, NM_ATT_IPACC_DST_IP))
 			DEBUGPC(DNM, "IP=%s ",
 				inet_ntoa(*((struct in_addr *) 
-					TLVP_VAL(&tp, NM_ATT_IPACC_RSL_BSC_IP))));
-		if (TLVP_PRESENT(&tp, NM_ATT_IPACC_RSL_BSC_PORT))
+					TLVP_VAL(&tp, NM_ATT_IPACC_DST_IP))));
+		if (TLVP_PRESENT(&tp, NM_ATT_IPACC_DST_IP_PORT))
 			DEBUGPC(DNM, "PORT=%u ",
 				ntohs(*((u_int16_t *) 
-					TLVP_VAL(&tp, NM_ATT_IPACC_RSL_BSC_PORT))));
+					TLVP_VAL(&tp, NM_ATT_IPACC_DST_IP_PORT))));
 		DEBUGPC(DNM, "\n");
 		break;
 	case NM_MT_IPACC_RSL_CONNECT_NACK:
diff --git a/openbsc/src/abis_rsl.c b/openbsc/src/abis_rsl.c
index a5b9a90..cc4a229 100644
--- a/openbsc/src/abis_rsl.c
+++ b/openbsc/src/abis_rsl.c
@@ -103,13 +103,21 @@
 		[RSL_IE_RTD]			= { TLV_TYPE_TV },
 		[RSL_IE_TFO_STATUS]		= { TLV_TYPE_TV },
 		[RSL_IE_LLP_APDU]		= { TLV_TYPE_TLV },
+		[RSL_IE_IPAC_PROXY_UDP]		= { TLV_TYPE_FIXED, 2 },
+		[RSL_IE_IPAC_BSCMPL_TOUT]	= { TLV_TYPE_TV },
 		[RSL_IE_IPAC_REMOTE_IP]		= { TLV_TYPE_FIXED, 4 },
 		[RSL_IE_IPAC_REMOTE_PORT]	= { TLV_TYPE_FIXED, 2 },
-		[RSL_IE_IPAC_LOCAL_IP]		= { TLV_TYPE_FIXED, 4 },
+		[RSL_IE_IPAC_RTP_PAYLOAD]	= { TLV_TYPE_TV },
 		[RSL_IE_IPAC_LOCAL_PORT]	= { TLV_TYPE_FIXED, 2 },
-		[0xf4]				= { TLV_TYPE_TV },
-		[0xf8]				= { TLV_TYPE_FIXED, 2 },
-		[0xfc]				= { TLV_TYPE_TV },
+		[RSL_IE_IPAC_SPEECH_MODE]	= { TLV_TYPE_TV },
+		[RSL_IE_IPAC_LOCAL_IP]		= { TLV_TYPE_FIXED, 4 },
+		[RSL_IE_IPAC_CONN_ID]		= { TLV_TYPE_FIXED, 2 },
+		[RSL_IE_IPAC_RTP_CSD_FMT]	= { TLV_TYPE_TV },
+		[RSL_IE_IPAC_RTP_JIT_BUF]	= { TLV_TYPE_FIXED, 2 },
+		[RSL_IE_IPAC_RTP_COMPR]		= { TLV_TYPE_TV },
+		[RSL_IE_IPAC_RTP_PAYLOAD2]	= { TLV_TYPE_TV },
+		[RSL_IE_IPAC_RTP_MPLEX]		= { TLV_TYPE_FIXED, 8 },
+		[RSL_IE_IPAC_RTP_MPLEX_ID]	= { TLV_TYPE_TV },
 	},
 };
 #define rsl_tlv_parse(dec, buf, len)     \
@@ -644,6 +652,25 @@
 	return abis_rsl_sendmsg(msg);
 }
 
+/* Chapter 8.4.5 */
+int rsl_deact_sacch(struct gsm_lchan *lchan)
+{
+	struct abis_rsl_dchan_hdr *dh;
+	struct msgb *msg = rsl_msgb_alloc();
+
+	dh = (struct abis_rsl_dchan_hdr *) msgb_put(msg, sizeof(*dh));
+	init_dchan_hdr(dh, RSL_MT_DEACTIVATE_SACCH);
+	dh->chan_nr = lchan2chan_nr(lchan);
+
+	msg->lchan = lchan;
+	msg->trx = lchan->ts->trx;
+
+	DEBUGP(DRSL, "DEACTivate SACCH CMD channel=%s chan_nr=0x%02x\n",
+		gsm_ts_name(lchan->ts), dh->chan_nr);
+
+	return abis_rsl_sendmsg(msg);
+}
+
 /* Chapter 9.1.7 of 04.08 */
 int rsl_chan_release(struct gsm_lchan *lchan)
 {
@@ -850,7 +877,7 @@
 		DEBUGPC(DMEAS, "MS_TO=%d ", 
 			*TLVP_VAL(&tp, RSL_IE_MS_TIMING_OFFSET));
 	if (TLVP_PRESENT(&tp, RSL_IE_L1_INFO)) {
-		u_int8_t *val = TLVP_VAL(&tp, RSL_IE_L1_INFO);
+		const u_int8_t *val = TLVP_VAL(&tp, RSL_IE_L1_INFO);
 		u_int8_t pwr_lvl = val[0] >> 3;
 		DEBUGPC(DMEAS, "L1_MS_PWR=%ddBm ",
 			ms_pwr_dbm(msg->trx->bts->band, pwr_lvl));
@@ -1183,7 +1210,8 @@
 	return abis_rsl_sendmsg(msg);
 }
 
-int rsl_ipacc_connect(struct gsm_lchan *lchan, u_int32_t ip, u_int16_t port, u_int16_t f8, u_int8_t fc)
+int rsl_ipacc_connect(struct gsm_lchan *lchan, u_int32_t ip, u_int16_t port,
+		      u_int16_t conn_id, u_int8_t rtp_payload2)
 {
 	struct msgb *msg = rsl_msgb_alloc();
 	struct abis_rsl_dchan_hdr *dh;
@@ -1194,10 +1222,10 @@
 	dh->c.msg_discr = ABIS_RSL_MDISC_IPACCESS;
 	dh->chan_nr = lchan2chan_nr(lchan);
 
-	att_f8 = msgb_put(msg, sizeof(f8)+1);
-	att_f8[0] = 0xf8;
-	att_f8[1] = f8 >> 8;
-	att_f8[2] = f8 & 0xff;
+	att_f8 = msgb_put(msg, sizeof(conn_id)+1);
+	att_f8[0] = RSL_IE_IPAC_CONN_ID;
+	att_f8[1] = conn_id >> 8;
+	att_f8[2] = conn_id & 0xff;
 
 	att_ip = msgb_put(msg, sizeof(ip)+1);
 	att_ip[0] = RSL_IE_IPAC_REMOTE_IP;
@@ -1212,8 +1240,8 @@
 	att_port[1] = port >> 8;
 	att_port[2] = port & 0xff;
 
-	msgb_tv_put(msg, 0xf4, 1);	/* F4 01 */
-	msgb_tv_put(msg, 0xfc, fc);	/* FC 7F */
+	msgb_tv_put(msg, RSL_IE_IPAC_SPEECH_MODE, 1);	/* F4 01 */
+	msgb_tv_put(msg, RSL_IE_IPAC_RTP_PAYLOAD2, rtp_payload2); /* FC 7F */
 	msg->trx = lchan->ts->trx;
 
 	return abis_rsl_sendmsg(msg);
@@ -1234,8 +1262,8 @@
 	rsl_tlv_parse(&tv, dh->data, msgb_l2len(msg)-sizeof(*dh));
 	if (!TLVP_PRESENT(&tv, RSL_IE_IPAC_LOCAL_PORT) ||
 	    !TLVP_PRESENT(&tv, RSL_IE_IPAC_LOCAL_IP) ||
-	    !TLVP_PRESENT(&tv, 0xfc) ||
-	    !TLVP_PRESENT(&tv, 0xf8)) {
+	    !TLVP_PRESENT(&tv, RSL_IE_IPAC_RTP_PAYLOAD2) ||
+	    !TLVP_PRESENT(&tv, RSL_IE_IPAC_CONN_ID)) {
 		DEBUGPC(DRSL, "mandatory IE missing");
 		return -EINVAL;
 	}
@@ -1243,15 +1271,15 @@
 	port = *((u_int16_t *) TLVP_VAL(&tv, RSL_IE_IPAC_LOCAL_PORT));
 	attr_f8 = *((u_int16_t *) TLVP_VAL(&tv, 0xf8));
 
-	DEBUGPC(DRSL, "IP=%s PORT=%d FC=%d F8=%d",
+	DEBUGPC(DRSL, "IP=%s PORT=%d RTP_PAYLOAD2=%d CONN_ID=%d",
 		inet_ntoa(ip), ntohs(port), *TLVP_VAL(&tv, 0xfc),
 		ntohs(attr_f8));
 
 	/* update our local information about this TS */
 	ts->abis_ip.bound_ip = ntohl(ip.s_addr);
 	ts->abis_ip.bound_port = ntohs(port);
-	ts->abis_ip.attr_f8 = ntohs(attr_f8);
-	ts->abis_ip.attr_fc = *TLVP_VAL(&tv, 0xfc);
+	ts->abis_ip.conn_id = ntohs(attr_f8);
+	ts->abis_ip.rtp_payload2 = *TLVP_VAL(&tv, RSL_IE_IPAC_RTP_PAYLOAD2);
 
 	dispatch_signal(SS_ABISIP, S_ABISIP_BIND_ACK, msg->lchan);
 
diff --git a/openbsc/src/bsc_hack.c b/openbsc/src/bsc_hack.c
index 384da54..c100ee4 100644
--- a/openbsc/src/bsc_hack.c
+++ b/openbsc/src/bsc_hack.c
@@ -63,6 +63,15 @@
 static enum gsm_band BAND = GSM_BAND_900;
 static const char *database_name = "hlr.sqlite3";
 
+struct nano_bts_id {
+	struct llist_head entry;
+	int site_id;
+	int bts_id;
+};
+
+static LLIST_HEAD(nanobts_ids);
+
+
 /* The following definitions are for OM and NM packets that we cannot yet
  * generate by code but we just pass on */
 
@@ -219,26 +228,27 @@
 unsigned char msg_3[] = 
 {
 	NM_MT_BS11_SET_ATTR, NM_OC_BS11_HANDOVER, 0x00, 0xFF, 0xFF, 
-		0xD0, 0x00,
-		0x64, 0x00,
-		0x67, 0x00,
-		0x68, 0x00,
-		0x6A, 0x00,
-		0x6C, 0x00,
-		0x6D, 0x00,
-		0x6F, 0x08,
-		0x70, 0x08, 0x01,
+		0xD0, 0x00,		/* enableDelayPowerBudgetHO */
+		0x64, 0x00,		/* enableDistanceHO */
+		0x67, 0x00,		/* enableInternalInterCellHandover */
+		0x68, 0x00,		/* enableInternalInterCellHandover */
+		0x6A, 0x00,		/* enablePowerBudgetHO */
+		0x6C, 0x00,		/* enableRXLEVHO */
+		0x6D, 0x00,		/* enableRXQUALHO */
+		0x6F, 0x08,		/* hoAveragingDistance */
+		0x70, 0x08, 0x01,	/* hoAveragingLev */
 		0x71, 0x10, 0x10, 0x10,
-		0x72, 0x08, 0x02,
-		0x73, 0x0A,
-		0x74, 0x05,
-		0x75, 0x06,
-		0x76, 0x06,
-		0x78, 0x14,
-		0x79, 0x14,
-		0x7A, 0x14,
-		0x7D, 0x06,
-		0x92, 0x03, 0x20, 0x01, 0x00,
+		0x72, 0x08, 0x02,	/* hoAveragingQual */
+		0x73, 0x0A,		/* hoLowerThresholdLevDL */
+		0x74, 0x05,		/* hoLowerThresholdLevUL */
+		0x75, 0x06,		/* hoLowerThresholdQualDL */
+		0x76, 0x06,		/* hoLowerThresholdQualUL */
+		0x78, 0x14,		/* hoThresholdLevDLintra */
+		0x79, 0x14,		/* hoThresholdLevULintra */
+		0x7A, 0x14,		/* hoThresholdMsRangeMax */
+		0x7D, 0x06,		/* nCell */
+		NM_ATT_BS11_TIMER_HO_REQUEST, 0x03,
+		0x20, 0x01, 0x00,
 		0x45, 0x01, 0x00,
 		0x48, 0x01, 0x00,
 		0x5A, 0x01, 0x00,
@@ -291,22 +301,22 @@
 	NM_MT_BS11_SET_ATTR, NM_OC_BS11_PWR_CTRL, 0x00, 0xFF, 0xFF, 
 		NM_ATT_BS11_ENA_MS_PWR_CTRL, 0x00,
 		NM_ATT_BS11_ENA_PWR_CTRL_RLFW, 0x00,
-		0x7E, 0x04, 0x01,
-		0x7F, 0x04, 0x02,
-		0x80, 0x0F,
-		0x81, 0x0A,
-		0x82, 0x05,
-		0x83, 0x05,
-		0x84, 0x0C, 
-		0x85, 0x14, 
-		0x86, 0x0F, 
-		0x87, 0x04,
-		0x88, 0x04,
-		0x89, 0x02,
-		0x8A, 0x02,
-		0x8B, 0x02,
-		0x8C, 0x01,
-		0x8D, 0x40,
+		0x7E, 0x04, 0x01,	/* pcAveragingLev */
+		0x7F, 0x04, 0x02,	/* pcAveragingQual */
+		0x80, 0x0F,		/* pcLowerThresholdLevDL */
+		0x81, 0x0A,		/* pcLowerThresholdLevUL */
+		0x82, 0x05,		/* pcLowerThresholdQualDL */
+		0x83, 0x05,		/* pcLowerThresholdQualUL */
+		0x84, 0x0C, 		/* pcRLFThreshold */
+		0x85, 0x14, 		/* pcUpperThresholdLevDL */
+		0x86, 0x0F, 		/* pcUpperThresholdLevUL */
+		0x87, 0x04,		/* pcUpperThresholdQualDL */
+		0x88, 0x04,		/* pcUpperThresholdQualUL */
+		0x89, 0x02,		/* powerConfirm */
+		0x8A, 0x02,		/* powerConfirmInterval */
+		0x8B, 0x02,		/* powerIncrStepSize */
+		0x8C, 0x01,		/* powerRedStepSize */
+		0x8D, 0x40,		/* radioLinkTimeoutBs */
 		0x65, 0x01, 0x00 // set to 0x01 to enable BSPowerControl
 };
 
@@ -362,8 +372,8 @@
 };
 
 static unsigned char nanobts_attr_e0[] = {
-	0x85, 0x00,
-	0x81, 0x0b, 0xbb,	/* TCP PORT for RSL */
+	NM_ATT_IPACC_STREAM_ID, 0x00,
+	NM_ATT_IPACC_DST_IP_PORT, 0x0b, 0xbb,	/* TCP PORT for RSL */
 };
 
 /* Callback function to be called whenever we get a GSM 12.21 state change event */
@@ -963,8 +973,6 @@
 
 static int bootstrap_network(void)
 {
-	struct gsm_bts *bts;
-
 	switch(BTS_TYPE) {
 	case GSM_BTS_TYPE_NANOBTS_1800:
 		if (ARFCN < 512 || ARFCN > 885) {
@@ -993,9 +1001,6 @@
 	gsmnet->name_long = "OpenBSC";
 	gsmnet->name_short = "OpenBSC";
 
-	bts = gsm_bts_alloc(gsmnet, BTS_TYPE, HARDCODED_TSC, HARDCODED_BSIC);
-	bootstrap_bts(bts);
-
 	if (db_init(database_name)) {
 		printf("DB: Failed to init database. Please check the option settings.\n");
 		return -1;
@@ -1014,17 +1019,27 @@
 
 	/* E1 mISDN input setup */
 	if (BTS_TYPE == GSM_BTS_TYPE_BS11) {
+		struct gsm_bts *bts = gsm_bts_alloc(gsmnet, BTS_TYPE, HARDCODED_TSC, HARDCODED_BSIC);
+		bootstrap_bts(bts);
+
 		gsmnet->num_bts = 1;
 		return e1_config(bts, cardnr, release_l2);
 	} else {
-		/* FIXME: do this dynamic */
-		bts->ip_access.site_id = 1801;
-		bts->ip_access.bts_id = 0;
+		struct nano_bts_id *bts_id;
+		struct gsm_bts *bts;
 
-		bts = gsm_bts_alloc(gsmnet, BTS_TYPE, HARDCODED_TSC, HARDCODED_BSIC);
-		bootstrap_bts(bts);
-		bts->ip_access.site_id = 1800;
-		bts->ip_access.bts_id = 0;
+		if (llist_empty(&nanobts_ids)) {
+			fprintf(stderr, "You need to specify -i DEVICE_1 -i DEVICE_2 for nanoBTS.\n");
+			return -EINVAL;
+		}
+
+		llist_for_each_entry(bts_id, &nanobts_ids, entry) {
+			bts = gsm_bts_alloc(gsmnet, BTS_TYPE, HARDCODED_TSC, HARDCODED_BSIC);
+			bootstrap_bts(bts);
+			bts->ip_access.site_id = bts_id->site_id;
+			bts->ip_access.bts_id = 0;
+		}
+
 		return ipaccess_setup(gsmnet);
 	}
 }
@@ -1061,6 +1076,7 @@
 	printf("  -r --reject-cause number The reject cause for LOCATION UPDATING REJECT.\n");
 	printf("  -p --pcap file  The filename of the pcap file\n");
 	printf("  -t --bts-type type The BTS type (bs11, nanobts900, nanobts1800)\n");
+	printf("  -i --bts-id=NUMBER The known nanoBTS device numbers. Can be specified multiple times.\n");
 	printf("  -C --cardnr number  For bs11 select E1 card number other than 0\n");
 	printf("  -R --release-l2 Releases mISDN layer 2 after exit, to unload driver.\n");
 	printf("  -h --help this text\n");
@@ -1087,10 +1103,11 @@
 			{"release-l2", 0, 0, 'R'},
 			{"timestamp", 0, 0, 'T'},
 			{"band", 0, 0, 'b'},
+			{"bts-id", 1, 0, 'i'},
 			{0, 0, 0, 0}
 		};
 
-		c = getopt_long(argc, argv, "hc:n:d:sar:p:f:t:C:RL:l:Tb:",
+		c = getopt_long(argc, argv, "hc:n:d:sar:p:f:t:C:RL:l:Tb:i:",
 				long_options, &option_index);
 		if (c == -1)
 			break;
@@ -1145,6 +1162,17 @@
 		case 'b':
 			BAND = gsm_band_parse(atoi(optarg));
 			break;
+		case 'i': {
+			struct nano_bts_id *bts_id = talloc_zero(tall_bsc_ctx, struct nano_bts_id);
+			if (!bts_id) {
+				fprintf(stderr, "Failed to allocate bts id\n");
+				exit(-1);
+			}
+
+			bts_id->site_id = atoi(optarg);
+			llist_add(&bts_id->entry, &nanobts_ids);
+			break;
+		}
 		default:
 			/* ignore */
 			break;
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index f012f3c..34e5855 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -1349,7 +1349,7 @@
 		name_len = strlen(net->name_short);
 		/* 10.5.3.5a */
 		ptr8 = (u_int8_t *) msgb_put(msg, 3);
-		ptr8[0] = GSM48_IE_NAME_LONG;
+		ptr8[0] = GSM48_IE_NAME_SHORT;
 		ptr8[1] = name_len*2 + 1;
 		ptr8[2] = 0x90; /* UCS2, no spare bits, no CI */
 
@@ -1769,7 +1769,11 @@
 	DEBUGP(DRR, "Sending Channel Release: Chan: Number: %d Type: %d\n",
 		lchan->nr, lchan->type);
 
-	return gsm48_sendmsg(msg);
+	/* Send actual release request to MS */
+	gsm48_sendmsg(msg);
+
+	/* Deactivate the SACCH on the BTS side */
+	return rsl_deact_sacch(lchan);
 }
 
 /* Call Control */
@@ -2001,12 +2005,16 @@
 	case GSM_BTS_TYPE_NANOBTS_900:
 	case GSM_BTS_TYPE_NANOBTS_1800:
 		ts = remote_lchan->ts;
-		rsl_ipacc_connect(lchan, ts->abis_ip.bound_ip, ts->abis_ip.bound_port,
-				  lchan->ts->abis_ip.attr_f8, ts->abis_ip.attr_fc);
+		rsl_ipacc_connect(lchan, ts->abis_ip.bound_ip,
+				  ts->abis_ip.bound_port,
+				  lchan->ts->abis_ip.conn_id,
+				  ts->abis_ip.rtp_payload2);
 	
 		ts = lchan->ts;
-		rsl_ipacc_connect(remote_lchan, ts->abis_ip.bound_ip, ts->abis_ip.bound_port,
-				  remote_lchan->ts->abis_ip.attr_f8, ts->abis_ip.attr_fc);
+		rsl_ipacc_connect(remote_lchan, ts->abis_ip.bound_ip,
+				  ts->abis_ip.bound_port,
+				  remote_lchan->ts->abis_ip.conn_id,
+				  ts->abis_ip.rtp_payload2);
 		break;
 	case GSM_BTS_TYPE_BS11:
 		trau_mux_map_lchan(lchan, remote_lchan);
diff --git a/openbsc/src/ipaccess-config.c b/openbsc/src/ipaccess-config.c
index 52e9cc9..5ccbaa7 100644
--- a/openbsc/src/ipaccess-config.c
+++ b/openbsc/src/ipaccess-config.c
@@ -111,7 +111,7 @@
 		/* 0x88 + IP + port */
 		len = 1 + sizeof(ia) + 2;
 
-		*cur++ = NM_ATT_IPACC_PRIM_OML_IP;
+		*cur++ = NM_ATT_IPACC_PRIM_OML_CFG_LIST;
 		*cur++ = (len) >> 8;
 		*cur++ = (len) & 0xff;
 		*cur++ = 0x88;
diff --git a/openbsc/src/vty_interface.c b/openbsc/src/vty_interface.c
index 12d5ae9..4626890 100644
--- a/openbsc/src/vty_interface.c
+++ b/openbsc/src/vty_interface.c
@@ -235,9 +235,9 @@
 	net_dump_nmstate(vty, &ts->nm_state);
 	if (is_ipaccess_bts(ts->trx->bts)) {
 		ia.s_addr = ts->abis_ip.bound_ip;
-		vty_out(vty, "  Bound IP: %s Port %u FC=%u F8=%u%s",
+		vty_out(vty, "  Bound IP: %s Port %u RTP_TYPE2=%u CONN_ID=%u%s",
 			inet_ntoa(ia), ts->abis_ip.bound_port,
-			ts->abis_ip.attr_fc, ts->abis_ip.attr_f8,
+			ts->abis_ip.rtp_payload2, ts->abis_ip.conn_id,
 			VTY_NEWLINE);
 	} else {
 		vty_out(vty, "  E1 Line %u, Timeslot %u, Subslot %u%s",
diff --git a/wireshark/abis_oml.patch b/wireshark/abis_oml.patch
index 4d13fa2..f48b3e6 100644
--- a/wireshark/abis_oml.patch
+++ b/wireshark/abis_oml.patch
@@ -1,20 +1,20 @@
 Index: wireshark/epan/dissectors/Makefile.common
 ===================================================================
---- wireshark.orig/epan/dissectors/Makefile.common	2009-07-03 22:20:16.000000000 +0200
-+++ wireshark/epan/dissectors/Makefile.common	2009-07-04 03:46:47.000000000 +0200
-@@ -926,6 +926,7 @@
- # Dissectors with warnings.
- #
- DIRTY_DISSECTOR_SRC =	\
+--- wireshark.orig/epan/dissectors/Makefile.common	2009-07-12 14:07:53.000000000 +0200
++++ wireshark/epan/dissectors/Makefile.common	2009-07-12 14:52:09.000000000 +0200
+@@ -472,6 +472,7 @@
+ 	packet-gsm_a_rp.c		\
+ 	packet-gsm_a_rr.c	\
+ 	packet-gsm_abis_ip.c	\
 +	packet-gsm_abis_oml.c	\
- 	packet-isakmp.c		\
- 	packet-k12.c 		\
- 	packet-nbd.c		\
+ 	packet-gsm_bsslap.c		\
+ 	packet-gsm_bssmap_le.c	\
+ 	packet-gsm_sms.c	\
 Index: wireshark/epan/dissectors/packet-gsm_abis_oml.c
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ wireshark/epan/dissectors/packet-gsm_abis_oml.c	2009-07-04 03:47:46.000000000 +0200
-@@ -0,0 +1,1241 @@
++++ wireshark/epan/dissectors/packet-gsm_abis_oml.c	2009-07-12 20:41:18.000000000 +0200
+@@ -0,0 +1,1363 @@
 +/* packet-abis_oml.c
 + * Routines for packet dissection of GSM A-bis over IP (3GPP TS 12.21)
 + * Copyright 2009 by Harald Welte <laforge@gnumonks.org>
@@ -72,6 +72,7 @@
 +static int hf_oml_fom_attr_val = -1;
 +/* FOM attributes */
 +static int hf_attr_adm_state = -1;
++static int hf_attr_arfcn = -1;
 +static int hf_attr_oper_state = -1;
 +static int hf_attr_avail_state = -1;
 +static int hf_attr_event_type = -1;
@@ -113,6 +114,13 @@
 +static int hf_attr_ipa_unit_name = -1;
 +static int hf_attr_ipa_nv_flags = -1;
 +static int hf_attr_ipa_nv_mask = -1;
++static int hf_attr_ipa_nsl_sport = -1;
++static int hf_attr_ipa_nsl_daddr = -1;
++static int hf_attr_ipa_nsl_dport = -1;
++static int hf_attr_ipa_nsei = -1;
++static int hf_attr_ipa_nsvci = -1;
++static int hf_attr_ipa_bvci = -1;
++static int hf_attr_ipa_rac = -1;
 +
 +/* initialize the subtree pointers */
 +static int ett_oml = -1;
@@ -248,6 +256,9 @@
 +	{ NM_MT_IPACC_CONN_TRAF,	"IPA Connect Traffic" },
 +	{ NM_MT_IPACC_CONN_TRAF_ACK,	"IPA Connect Traffic ACK" },
 +	{ NM_MT_IPACC_CONN_TRAF_NACK,	"IPA Connect Traffic NACK" },
++	{ NM_MT_IPACC_DISC_TRAF,	"IPA Disconnect Traffic" },
++	{ NM_MT_IPACC_DISC_TRAF_ACK,	"IPA Disconnect Traffic ACK" },
++	{ NM_MT_IPACC_DISC_TRAF_NACK,	"IPA Disconnect Traffic NACK" },
 +	{ NM_MT_IPACC_DEF_BOOT_SW,	"IPA Default Boot Software" },
 +	{ NM_MT_IPACC_DEF_BOOT_SW_ACK,	"IPA Default Boot Software ACK" },
 +	{ NM_MT_IPACC_DEF_BOOT_SW_NACK,	"IPA Default Boot Software NACK" },
@@ -257,6 +268,16 @@
 +	{ NM_MT_IPACC_GET_NVATTR,	"IPA Get NVRAM Attributes" },
 +	{ NM_MT_IPACC_GET_NVATTR_ACK,	"IPA Get NVRAM Attributes ACK" },
 +	{ NM_MT_IPACC_GET_NVATTR_NACK,	"IPA Get NVRAM Attributes NACK" },
++	{ NM_MT_IPACC_SET_ATTR,		"IPA Set Attributes" },
++	{ NM_MT_IPACC_SET_ATTR_ACK,	"IPA Set Attributes ACK" },
++	{ NM_MT_IPACC_SET_ATTR_NACK,	"IPA Set Attributes NACK" },
++	{ NM_MT_IPACC_ATTR_CHG_EVT,	"IPA Attribute Change Event" },
++	{ NM_MT_IPACC_SW_DEACT,		"IPA Software Deactivate" },
++	{ NM_MT_IPACC_SW_DEACT_ACK,	"IPA Software Deactivate ACK" },
++	{ NM_MT_IPACC_SW_DEACT_NACK,	"IPA Software Deactivate NACK" },
++	{ NM_MT_IPACC_MEAS_RES_REQ_NACK,"IPA Measurement Result Request NACK" },
++	{ NM_MT_IPACC_START_MEAS_NACK,	"IPA Start Measurement NACK" },
++	{ NM_MT_IPACC_STOP_MEAS_NACK,	"IPA Stop Measurement NACK" },
 +	{ NM_MT_BS11_RESET_RESOURCE,	"SIE Reset Resource" },
 +	{ NM_MT_BS11_BEGIN_DB_TX,	"SIE Begin Database Transmission" },
 +	{ NM_MT_BS11_BEGIN_DB_TX_ACK,	"SIE Begin Database Transmission ACK" },
@@ -394,24 +415,54 @@
 +	{ NM_ATT_BS11_ENA_RXLEV_HO,	"SIE Enable RxLevel HO" },
 +	{ NM_ATT_BS11_ENA_RXQUAL_HO,	"SIE Enable RxQual HO" },
 +	{ NM_ATT_BS11_FACCH_QUAL,	"SIE FACCH Quality" },
-+	{ NM_ATT_IPACC_RSL_BSC_IP,	"IPA BSC RSL IP Address" },
-+	{ NM_ATT_IPACC_RSL_BSC_PORT,	"IPA BSC RSL TCP Port" },
++	{ NM_ATT_IPACC_DST_IP,		"IPA Destination IP Address" },
++	{ NM_ATT_IPACC_DST_IP_PORT,	"IPA Destionation IP Port" },
++	{ NM_ATT_IPACC_SSRC,		"IPA RTP SSRC" },
++	{ NM_ATT_IPACC_RTP_PAYLD_TYPE,	"IPA RTP Payload Type" },
++	{ NM_ATT_IPACC_BASEB_ID,	"IPA Baseband Identifier" },
++	{ NM_ATT_IPACC_STREAM_ID,	"IPA Stream Identifier" },
 +	{ NM_ATT_IPACC_NV_FLAGS,	"IPA NVRAM Flags" },
 +	{ NM_ATT_IPACC_FREQ_CTRL,	"IPA Frequency Control" },
++	{ NM_ATT_IPACC_PRIM_OML_CFG,	"IPA Primary OML Config" },
++	{ NM_ATT_IPACC_SEC_OML_CFG,	"IPA Secondary OML Config" },
 +	{ NM_ATT_IPACC_IP_IF_CFG,	"IPA IP Interface Config" },
 +	{ NM_ATT_IPACC_IP_GW_CFG,	"IPA IP Gateway Config" },
 +	{ NM_ATT_IPACC_IN_SERV_TIME,	"IPA In Service Time" },
-+	{ NM_ATT_IPACC_LOCATION,	"IPA Location Name" },
++	{ NM_ATT_IPACC_TRX_BTS_ASS,	"IPA TRX BTS Assignment" },
++	{ NM_ATT_IPACC_LOCATION,	"IPA BTS Location Name" },
++	{ NM_ATT_IPACC_PAGING_CFG,	"IPA Paging Configuration" },
++	{ NM_ATT_IPACC_FILE_DATA,	"IPA File Data" },
 +	{ NM_ATT_IPACC_UNIT_ID,		"IPA Unit ID" },
++	{ NM_ATT_IPACC_PARENT_UNIT_ID,	"IPA Parent Unit ID" },
 +	{ NM_ATT_IPACC_UNIT_NAME,	"IPA Unit Name" },
 +	{ NM_ATT_IPACC_SNMP_CFG,	"IPA SNMP Config" },
-+	{ NM_ATT_IPACC_PRIM_OML_IP,	"IPA Primary OML IP Address" },
-+	{ NM_ATT_IPACC_SEC_OML_IP,	"IPA Secondary OML IP Address" },
++	{ NM_ATT_IPACC_PRIM_OML_CFG_LIST, "IPA Primary OML Config List" },
++	{ NM_ATT_IPACC_PRIM_OML_FB_TOUT,"IPA Primary OML Fallback Timeout" },
 +	{ NM_ATT_IPACC_CUR_SW_CFG,	"IPA Current Software Config" },
++	{ NM_ATT_IPACC_TIMING_BUS,	"IPA Timing Bus" },
++	{ NM_ATT_IPACC_CGI,		"IPA CGI" },
++	{ NM_ATT_IPACC_RAC,		"IPA RAC" },
++	{ NM_ATT_IPACC_OBJ_VERSION,	"IPA Object Version" },
++	{ NM_ATT_IPACC_GPRS_PAGING_CFG,	"IPA GPRS Paging Configuration" },
++	{ NM_ATT_IPACC_NSEI,		"IPA NSEI" },
++	{ NM_ATT_IPACC_BVCI,		"IPA BVCI" },
++	{ NM_ATT_IPACC_NSVCI,		"IPA NSVCI" },
++	{ NM_ATT_IPACC_NS_CFG,		"IPA NS Configuration" },
++	{ NM_ATT_IPACC_BSSGP_CFG,	"IPA BSSGP Configuration" },
++	{ NM_ATT_IPACC_NS_LINK_CFG,	"IPA NS Link Configuration" },
++	{ NM_ATT_IPACC_RLC_CFG,		"IPA RLC Configuration" },
 +	{ NM_ATT_IPACC_ALM_THRESH_LIST,	"IPA Alarm Threshold List" },
++	{ NM_ATT_IPACC_MONIT_VAL_LIST,	"IPA Monitored Value List" },
++	{ NM_ATT_IPACC_TIB_CONTROL,	"IPA Timing Interface Bus Control" },
++	{ NM_ATT_IPACC_SUPP_FEATURES,	"IPA Supported Features" },
++	{ NM_ATT_IPACC_CODING_SCHEMES,	"IPA Coding Schemes" },
++	{ NM_ATT_IPACC_RLC_CFG_2,	"IPA RLC Configuration 2" },
++	{ NM_ATT_IPACC_HEARTB_TOUT,	"IPA Heartbeat Timeout" },
 +	{ NM_ATT_IPACC_UPTIME,		"IPA Uptime" },
++	{ NM_ATT_IPACC_RLC_CFG_3,	"IPA RLC Configuration 3" },
 +	{ NM_ATT_IPACC_SSL_CFG,		"IPA SSL Configuration" },
-+	{ NM_ATT_IPACC_SEC_POSSIBLE,	"IPA Security Possoble" },
++	{ NM_ATT_IPACC_SEC_POSSIBLE,	"IPA Security Possible" },
++	{ NM_ATT_IPACC_IML_SSL_STATE,	"IPA IML SSL State" },
 +	{ NM_ATT_IPACC_REVOC_DATE,	"IPA Revocation Date" },
 +	/* FIXME: More SIE */
 +};
@@ -512,11 +563,16 @@
 +};
 +
 +static const value_string oml_test_no_vals[] = {
++	{ NM_IPACC_TESTNO_RLOOP_ANT,	"Radio Loop test via antenna" },
++	{ NM_IPACC_TESTNO_RLOOP_XCVR,	"Radio Loop test via transceiver" },
++	{ NM_IPACC_TESTNO_FUNC_OBJ,	"BTS Functional object self test" },
 +	{ NM_IPACC_TESTNO_CHAN_USAGE,	"Channel Usage" },
 +	{ NM_IPACC_TESTNO_BCCH_CHAN_USAGE, "BCCH Channel Usage" },
 +	{ NM_IPACC_TESTNO_FREQ_SYNC,	"Frequency Synchronization" },
 +	{ NM_IPACC_TESTNO_BCCH_INFO,	"BCCH Information" },
-+	{ NM_IPACC_TESTNO_TX_BEACON,	"Tx Beacon" },
++	{ NM_IPACC_TESTNO_TX_BEACON,	"Transmit Beacon" },
++	{ NM_IPACC_TESTNO_SYSINFO_MONITOR, "SysInfo Monitor" },
++	{ NM_IPACC_TESTNO_BCCCH_MONITOR, "BCCH & CCCH Monitor" },
 +};
 +
 +static const value_string ipacc_test_res_vals[] = {
@@ -634,7 +690,6 @@
 +dissect_ipacc_test_rep(proto_tree *tree, tvbuff_t *tvb)
 +{
 +	gint offset = 0;
-+	guint8 test_res = tvb_get_guint8(tvb, offset);
 +
 +	proto_tree_add_item(tree, hf_attr_ipa_test_res, tvb, offset++,
 +			    1, FALSE);
@@ -665,6 +720,7 @@
 +			break;
 +		}
 +	}
++	return offset;
 +}
 +
 +/* Dissect OML FOM Attributes after OML + FOM header */
@@ -675,7 +731,10 @@
 +	int offset = base_offs;
 +
 +	while (tvb_reported_length_remaining(tvb, offset) != 0) {
++		guint i;
 +		guint8 tag, val8;
++		guint16 val16;
++		guint32 val32;
 +		unsigned int len, len_len, hlen;
 +		const struct tlv_def *tdef;
 +		proto_item *ti;
@@ -712,6 +771,10 @@
 +			len = tvb_get_guint8(tvb, offset+1) << 8 |
 +						tvb_get_guint8(tvb, offset+2);
 +			break;
++		default:
++			hlen = len_len = len = 0;
++			DISSECTOR_ASSERT_NOT_REACHED();
++			break;
 +		}
 +
 +		ti = proto_tree_add_item(tree, hf_oml_fom_attr_tag, tvb,
@@ -736,31 +799,30 @@
 +		case NM_ATT_ADM_STATE:
 +			proto_tree_add_item(att_tree, hf_attr_adm_state, tvb,
 +					    offset, len, FALSE);
-+			if (check_col(pinfo->cinfo, COL_INFO)) {
-+				val8 = tvb_get_guint8(tvb, offset);
-+				col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
-+						val_to_str(val8,
-+							   oml_adm_state_vals,
-+							   "%02x"));
-+			}
++			val8 = tvb_get_guint8(tvb, offset);
++			col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
++					val_to_str(val8, oml_adm_state_vals,
++						   "%02x"));
 +			break;
 +		case NM_ATT_ARFCN_LIST:
++			for (i = 0; i < len; i += 2) {
++				val16 = tvb_get_ntohs(tvb, offset + i);
++				proto_tree_add_uint(att_tree, hf_attr_arfcn,
++						    tvb, offset + i, 2, val16);
++			}
 +			break;
 +		case NM_ATT_AVAIL_STATUS:
-+			proto_tree_add_item(att_tree, hf_attr_avail_state, tvb,
-+					    offset, len, FALSE);
-+			if (check_col(pinfo->cinfo, COL_INFO)) {
-+				/* Availability status can have length 0 */
-+				if (len)
-+					val8 = tvb_get_guint8(tvb, offset);
-+				else
-+					val8 = 0xff;
-+				col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
-+						val_to_str(val8,
-+							   oml_avail_state_vals,
-+							   "%02x"));
-+			}
-+
++			/* Availability status can have length 0 */
++			if (len) {
++				val8 = tvb_get_guint8(tvb, offset);
++				proto_tree_add_item(att_tree,
++						    hf_attr_avail_state, tvb,
++					    	    offset, len, FALSE);
++			} else
++				val8 = 0xff;
++			col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
++					val_to_str(val8, oml_avail_state_vals,
++						   "%02x"));
 +			break;
 +		case NM_ATT_BCCH_ARFCN:
 +			proto_tree_add_item(att_tree, hf_attr_bcch_arfcn, tvb,
@@ -785,13 +847,10 @@
 +		case NM_ATT_OPER_STATE:
 +			proto_tree_add_item(att_tree, hf_attr_oper_state, tvb,
 +					    offset, len, FALSE);
-+			if (check_col(pinfo->cinfo, COL_INFO)) {
-+				val8 = tvb_get_guint8(tvb, offset);
-+				col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
-+						val_to_str(val8,
-+							   oml_oper_state_vals,
-+							   "%02x"));
-+			}
++			val8 = tvb_get_guint8(tvb, offset);
++			col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
++					val_to_str(val8, oml_oper_state_vals,
++						   "%02x"));
 +			break;
 +		case NM_ATT_TEI:
 +			proto_tree_add_item(att_tree, hf_attr_tei, tvb,
@@ -811,23 +870,22 @@
 +		case NM_ATT_TEST_NO:
 +			proto_tree_add_item(att_tree, hf_attr_test_no, tvb,
 +					    offset, len, TRUE);
-+			if (check_col(pinfo->cinfo, COL_INFO)) {
-+				val8 = tvb_get_guint8(tvb, offset);
-+				col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
-+						val_to_str(val8,
-+							   oml_test_no_vals,
-+							   "%02x"));
-+			}
++			val8 = tvb_get_guint8(tvb, offset);
++			col_append_fstr(pinfo->cinfo, COL_INFO, "%s ",
++					val_to_str(val8, oml_test_no_vals,
++						   "%02x"));
 +			break;
 +
 +		/* proprietary ip.access extensions */
-+		case NM_ATT_IPACC_RSL_BSC_IP:
-+			proto_tree_add_item(att_tree, hf_attr_ipa_rsl_ip, tvb,
-+					    offset, len, TRUE);
++		case NM_ATT_IPACC_DST_IP:
++			val32 = tvb_get_ntohl(tvb, offset);
++			proto_tree_add_ipv4(att_tree, hf_attr_ipa_rsl_ip, tvb,
++					    offset, len, val32);
 +			break;
-+		case NM_ATT_IPACC_RSL_BSC_PORT:
-+			proto_tree_add_item(att_tree, hf_attr_ipa_rsl_port, tvb,
-+					    offset, len, TRUE);
++		case NM_ATT_IPACC_DST_IP_PORT:
++			val16 = tvb_get_ntohs(tvb, offset);
++			proto_tree_add_uint(att_tree, hf_attr_ipa_rsl_port, tvb,
++					    offset, len, val16);
 +			break;
 +		case NM_ATT_IPACC_LOCATION:
 +			proto_tree_add_item(att_tree, hf_attr_ipa_location_name,
@@ -841,15 +899,12 @@
 +			proto_tree_add_item(att_tree, hf_attr_ipa_unit_name,
 +					    tvb, offset, len, TRUE);
 +			break;
-+		case NM_ATT_IPACC_PRIM_OML_IP:
++		case NM_ATT_IPACC_PRIM_OML_CFG_LIST:
 +			proto_tree_add_item(att_tree, hf_attr_ipa_prim_oml_ip,
 +					    tvb, offset+1, 4, TRUE);
 +			proto_tree_add_item(att_tree, hf_attr_ipa_prim_oml_port,
 +					    tvb, offset+1+4, 2, TRUE);
 +			break;
-+		case NM_ATT_IPACC_SEC_OML_IP:
-+			/* FIXME */
-+			break;
 +		case NM_ATT_IPACC_NV_FLAGS:
 +			{
 +				guint flags, mask;
@@ -863,6 +918,36 @@
 +						    tvb, offset+1, 3, mask);
 +			}
 +			break;
++		case NM_ATT_IPACC_RAC:
++			proto_tree_add_item(att_tree, hf_attr_ipa_rac,
++					    tvb, offset, 1, TRUE);
++			break;
++		case NM_ATT_IPACC_NSEI:
++			val16 = tvb_get_ntohs(tvb, offset);
++			proto_tree_add_uint(att_tree, hf_attr_ipa_nsei,
++					   tvb, offset, 2, val16);
++			break;
++		case NM_ATT_IPACC_NSVCI:
++			val16 = tvb_get_ntohs(tvb, offset);
++			proto_tree_add_uint(att_tree, hf_attr_ipa_nsvci,
++					   tvb, offset, 2, val16);
++			break;
++		case NM_ATT_IPACC_BVCI:
++			val16 = tvb_get_ntohs(tvb, offset);
++			proto_tree_add_uint(att_tree, hf_attr_ipa_bvci,
++					   tvb, offset, 2, val16);
++			break;
++		case NM_ATT_IPACC_NS_LINK_CFG:
++			val16 = tvb_get_ntohs(tvb, offset);
++			proto_tree_add_uint(att_tree, hf_attr_ipa_nsl_sport,
++					   tvb, offset, 2, val16);
++			val32 = tvb_get_ipv4(tvb, offset+2);
++			proto_tree_add_ipv4(att_tree, hf_attr_ipa_nsl_daddr,
++					   tvb, offset+2, 4, val32);
++			val16 = tvb_get_ntohs(tvb, offset+6);
++			proto_tree_add_uint(att_tree, hf_attr_ipa_nsl_dport,
++					   tvb, offset+6, 2, val16);
++			break;
 +		default:
 +			proto_tree_add_item(att_tree, hf_oml_fom_attr_val, tvb,
 +					    offset, len, FALSE);
@@ -873,7 +958,8 @@
 +}
 +
 +static int
-+dissect_oml_fom(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
++dissect_oml_fom(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
++		int offset, proto_item *top_ti)
 +{
 +	guint8 msg_type, obj_class, bts_nr, trx_nr, ts_nr;
 +	proto_item *ti;
@@ -884,13 +970,16 @@
 +	bts_nr = tvb_get_guint8(tvb, offset+2);
 +	trx_nr = tvb_get_guint8(tvb, offset+3);
 +	ts_nr = tvb_get_guint8(tvb, offset+4);
-+	if (check_col(pinfo->cinfo, COL_INFO)) {
-+		col_append_fstr(pinfo->cinfo, COL_INFO, "%s(%02x,%02x,%02x) %s ",
-+				val_to_str(obj_class, oml_fom_objclass_vals, "%02x"),
-+				bts_nr, trx_nr, ts_nr,
-+				val_to_str(msg_type, oml_fom_msgtype_vals,
-+					   "unknown 0x%x"));
-+	}
++	proto_item_append_text(top_ti, ", %s(%02x,%02x,%02x) %s ",
++			val_to_str(obj_class, oml_fom_objclass_vals, "%02x"),
++			bts_nr, trx_nr, ts_nr,
++			val_to_str(msg_type, oml_fom_msgtype_vals,
++				   "unknown 0x%x"));
++	col_append_fstr(pinfo->cinfo, COL_INFO, "%s(%02x,%02x,%02x) %s ",
++			val_to_str(obj_class, oml_fom_objclass_vals, "%02x"),
++			bts_nr, trx_nr, ts_nr,
++			val_to_str(msg_type, oml_fom_msgtype_vals,
++				   "unknown 0x%x"));
 +	ti = proto_tree_add_item(tree, hf_oml_fom_msgtype, tvb, offset++, 1, FALSE);
 +	fom_tree = proto_item_add_subtree(ti, ett_oml_fom);
 +	proto_tree_add_item(fom_tree, hf_oml_fom_objclass, tvb, offset++, 1, FALSE);
@@ -908,7 +997,8 @@
 +static const guint8 ipaccess_magic[] = "com.ipaccess";
 +
 +static int
-+dissect_oml_manuf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
++dissect_oml_manuf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
++		  int offset, proto_item *top_ti)
 +{
 +	if (tvb_get_guint8(tvb, offset) != 0x0d ||
 +	    tvb_memeql(tvb, offset+1, ipaccess_magic, sizeof(ipaccess_magic)))
@@ -916,7 +1006,7 @@
 +
 +	offset += sizeof(ipaccess_magic) + 1;
 +
-+	return dissect_oml_fom(tvb, pinfo, tree, offset);
++	return dissect_oml_fom(tvb, pinfo, tree, offset, top_ti);
 +}
 +
 +static void
@@ -927,12 +1017,7 @@
 +
 +	int offset = 0;
 +
-+	if (check_col(pinfo->cinfo, COL_PROTOCOL))
-+		col_set_str(pinfo->cinfo, COL_PROTOCOL, "OML");
-+#if 0
-+	if (check_col(pinfo->cinfo, COL_INFO))
-+		col_clear(pinfo->cinfo, COL_INFO);
-+#endif
++	col_set_str(pinfo->cinfo, COL_PROTOCOL, "OML");
 +
 +	top_tree = tree;
 +	if (tree) {
@@ -952,10 +1037,11 @@
 +
 +		switch (msg_disc) {
 +		case ABIS_OM_MDISC_FOM:
-+			offset = dissect_oml_fom(tvb, pinfo, oml_tree, offset);
++			offset = dissect_oml_fom(tvb, pinfo, oml_tree,
++						 offset, ti);
 +			break;
 +		case ABIS_OM_MDISC_MANUF:
-+			offset = dissect_oml_manuf(tvb, pinfo, oml_tree, offset);
++			offset = dissect_oml_manuf(tvb, pinfo, oml_tree,							       offset, ti);
 +			break;
 +		case ABIS_OM_MDISC_MMI:
 +		case ABIS_OM_MDISC_TRAU:
@@ -1038,6 +1124,10 @@
 +			  FT_UINT8, BASE_HEX, VALS(oml_adm_state_vals), 0,
 +			  NULL, HFILL }
 +		},
++		{ &hf_attr_arfcn,
++			{ "ARFCN", "oml.fom.attr.arfcn",
++			  FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
++		},
 +		{ &hf_attr_oper_state,
 +			{ "Operational State", "oml.fom.attr.oper_state",
 +			  FT_UINT8, BASE_HEX, VALS(oml_oper_state_vals), 0,
@@ -1232,6 +1322,38 @@
 +						"oml.fom.attr.ipa.chan_desc",
 +			  FT_BYTES, BASE_HEX, NULL, 0, NULL, HFILL }
 +		},
++		{ &hf_attr_ipa_nsl_sport,
++			{ "NS Link IP Source Port",
++						"oml.fom.attr.ipa.nsl_sport",
++			  FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
++		},
++		{ &hf_attr_ipa_nsl_daddr,
++			{ "NS Link IP Destination Addr",
++						"oml.fom.attr.ipa.nsl_daddr",
++			  FT_IPv4, BASE_NONE, NULL, 0, NULL, HFILL }
++		},
++		{ &hf_attr_ipa_nsl_dport,
++			{ "NS Link IP Destination Port",
++						"oml.fom.attr.ipa.nsl_dport",
++			  FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
++		},
++		{ &hf_attr_ipa_nsei,
++			{ "NSEI", "oml.fom.attr.ipa.nsei",
++			  FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
++		},
++		{ &hf_attr_ipa_nsvci,
++			{ "NSVCI", "oml.fom.attr.ipa.nsvci",
++			  FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
++		},
++		{ &hf_attr_ipa_bvci,
++			{ "BVCI", "oml.fom.attr.ipa.bvci",
++			  FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }
++		},
++		{ &hf_attr_ipa_rac,
++			{ "RAC", "oml.fom.attr.ipa.rac",
++			  FT_UINT8, BASE_HEX, NULL, 0,
++			  "Routing Area Code", HFILL }
++		},
 +	};
 +	static gint *ett[] = {
 +		&ett_oml,
@@ -1259,8 +1381,8 @@
 Index: wireshark/epan/dissectors/packet-gsm_abis_oml.h
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ wireshark/epan/dissectors/packet-gsm_abis_oml.h	2009-07-04 03:46:47.000000000 +0200
-@@ -0,0 +1,726 @@
++++ wireshark/epan/dissectors/packet-gsm_abis_oml.h	2009-07-12 17:18:20.000000000 +0200
+@@ -0,0 +1,786 @@
 +/* GSM Network Management messages on the A-bis interface
 + * 3GPP TS 12.21 version 8.0.0 Release 1999 / ETSI TS 100 623 V8.0.0 */
 +
@@ -1482,6 +1604,9 @@
 +	NM_MT_IPACC_CONN_TRAF		= 0xe6,
 +	NM_MT_IPACC_CONN_TRAF_ACK,
 +	NM_MT_IPACC_CONN_TRAF_NACK,
++	NM_MT_IPACC_DISC_TRAF		= 0xe9,
++	NM_MT_IPACC_DISC_TRAF_ACK,
++	NM_MT_IPACC_DISC_TRAF_NACK,
 +	NM_MT_IPACC_DEF_BOOT_SW		= 0xec,
 +	NM_MT_IPACC_DEF_BOOT_SW_ACK,
 +	NM_MT_IPACC_DEF_BOOT_SW_NACK,
@@ -1491,6 +1616,16 @@
 +	NM_MT_IPACC_GET_NVATTR		= 0xf2,
 +	NM_MT_IPACC_GET_NVATTR_ACK,
 +	NM_MT_IPACC_GET_NVATTR_NACK,
++	NM_MT_IPACC_SET_ATTR		= 0xf5,
++	NM_MT_IPACC_SET_ATTR_ACK,
++	NM_MT_IPACC_SET_ATTR_NACK,
++	NM_MT_IPACC_ATTR_CHG_EVT	= 0xf8,
++	NM_MT_IPACC_SW_DEACT		= 0xf9,
++	NM_MT_IPACC_SW_DEACT_ACK,
++	NM_MT_IPACC_SW_DEACT_NACK,
++	NM_MT_IPACC_MEAS_RES_REQ_NACK	= 0xfc,
++	NM_MT_IPACC_START_MEAS_NACK,
++	NM_MT_IPACC_STOP_MEAS_NACK,
 +};
 +
 +enum abis_nm_bs11_cell_alloc {
@@ -1619,26 +1754,54 @@
 +	NM_ATT_BS11_ENA_RXQUAL_HO	= 0x6d,
 +	NM_ATT_BS11_FACCH_QUAL		= 0x6e,
 +
-+	NM_ATT_IPACC_RSL_BSC_IP		= 0x80,
-+	NM_ATT_IPACC_RSL_BSC_PORT	= 0x81,
++	NM_ATT_IPACC_DST_IP		= 0x80,
++	NM_ATT_IPACC_DST_IP_PORT	= 0x81,
++	NM_ATT_IPACC_SSRC		= 0x82,		/* RTP Sync Source */
++	NM_ATT_IPACC_RTP_PAYLD_TYPE	= 0x83,
++	NM_ATT_IPACC_BASEB_ID		= 0x84,
++	NM_ATT_IPACC_STREAM_ID		= 0x85,
 +	NM_ATT_IPACC_NV_FLAGS		= 0x86,
 +	NM_ATT_IPACC_FREQ_CTRL		= 0x87,
++	NM_ATT_IPACC_PRIM_OML_CFG	= 0x88,
 +	NM_ATT_IPACC_SEC_OML_CFG	= 0x89,
 +	NM_ATT_IPACC_IP_IF_CFG		= 0x8a,		/* IP interface */
 +	NM_ATT_IPACC_IP_GW_CFG		= 0x8b,		/* IP gateway */
 +	NM_ATT_IPACC_IN_SERV_TIME	= 0x8c,
++	NM_ATT_IPACC_TRX_BTS_ASS	= 0x8d,
 +	NM_ATT_IPACC_LOCATION		= 0x8e,		/* string describing location */
++	NM_ATT_IPACC_PAGING_CFG		= 0x8f,
++	NM_ATT_IPACC_FILE_DATA		= 0x90,
 +	NM_ATT_IPACC_UNIT_ID		= 0x91,		/* Site/BTS/TRX */
++	NM_ATT_IPACC_PARENT_UNIT_ID	= 0x92,
 +	NM_ATT_IPACC_UNIT_NAME		= 0x93,		/* default: nbts-<mac-as-string> */
 +	NM_ATT_IPACC_SNMP_CFG		= 0x94,
-+	NM_ATT_IPACC_PRIM_OML_IP	= 0x95,
-+	NM_ATT_IPACC_SEC_OML_IP		= 0x96,
++	NM_ATT_IPACC_PRIM_OML_CFG_LIST	= 0x95,
++	NM_ATT_IPACC_PRIM_OML_FB_TOUT	= 0x96,		/* fallback timeout */
 +	NM_ATT_IPACC_CUR_SW_CFG		= 0x97,
-+
++	NM_ATT_IPACC_TIMING_BUS		= 0x98,
++	NM_ATT_IPACC_CGI		= 0x99,		/* Cell Global ID */
++	NM_ATT_IPACC_RAC		= 0x9a,
++	NM_ATT_IPACC_OBJ_VERSION	= 0x9b,
++	NM_ATT_IPACC_GPRS_PAGING_CFG	= 0x9c,
++	NM_ATT_IPACC_NSEI		= 0x9d,
++	NM_ATT_IPACC_BVCI		= 0x9e,
++	NM_ATT_IPACC_NSVCI		= 0x9f,
++	NM_ATT_IPACC_NS_CFG		= 0xa0,
++	NM_ATT_IPACC_BSSGP_CFG		= 0xa1,
++	NM_ATT_IPACC_NS_LINK_CFG	= 0xa2,
++	NM_ATT_IPACC_RLC_CFG		= 0xa3,
 +	NM_ATT_IPACC_ALM_THRESH_LIST	= 0xa4,
++	NM_ATT_IPACC_MONIT_VAL_LIST	= 0xa5,
++	NM_ATT_IPACC_TIB_CONTROL	= 0xa6,
++	NM_ATT_IPACC_SUPP_FEATURES	= 0xa7,
++	NM_ATT_IPACC_CODING_SCHEMES	= 0xa8,
++	NM_ATT_IPACC_RLC_CFG_2		= 0xa9,
++	NM_ATT_IPACC_HEARTB_TOUT	= 0xaa,
 +	NM_ATT_IPACC_UPTIME		= 0xab,
++	NM_ATT_IPACC_RLC_CFG_3		= 0xac,
 +	NM_ATT_IPACC_SSL_CFG		= 0xad,
 +	NM_ATT_IPACC_SEC_POSSIBLE	= 0xae,
++	NM_ATT_IPACC_IML_SSL_STATE	= 0xaf,
 +	NM_ATT_IPACC_REVOC_DATE		= 0xb0,
 +
 +
@@ -1847,11 +2010,16 @@
 +};
 +
 +enum abis_nm_ipacc_test_no {
++	NM_IPACC_TESTNO_RLOOP_ANT	= 0x01,
++	NM_IPACC_TESTNO_RLOOP_XCVR	= 0x02,
++	NM_IPACC_TESTNO_FUNC_OBJ	= 0x03,
 +	NM_IPACC_TESTNO_CHAN_USAGE	= 0x40,
 +	NM_IPACC_TESTNO_BCCH_CHAN_USAGE	= 0x41,
 +	NM_IPACC_TESTNO_FREQ_SYNC	= 0x42,
 +	NM_IPACC_TESTNO_BCCH_INFO	= 0x43,
 +	NM_IPACC_TESTNO_TX_BEACON	= 0x44,
++	NM_IPACC_TESTNO_SYSINFO_MONITOR	= 0x45,
++	NM_IPACC_TESTNO_BCCCH_MONITOR	= 0x46,
 +};
 +
 +/* first byte after length inside NM_ATT_TEST_REPORT */
@@ -1877,112 +2045,126 @@
 +	.def = {
 +		[NM_ATT_ABIS_CHANNEL] =		{ TLV_TYPE_FIXED, 3 },
 +		[NM_ATT_ADD_INFO] =		{ TLV_TYPE_TL16V, 0 },
-+		[NM_ATT_ADD_TEXT] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_ADM_STATE] =		{ TLV_TYPE_TV },
-+		[NM_ATT_ARFCN_LIST]=		{ TLV_TYPE_TL16V },
-+		[NM_ATT_AUTON_REPORT] =		{ TLV_TYPE_TV },
-+		[NM_ATT_AVAIL_STATUS] =		{ TLV_TYPE_TL16V },
++		[NM_ATT_ADD_TEXT] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_ADM_STATE] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_ARFCN_LIST]=		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_AUTON_REPORT] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_AVAIL_STATUS] =		{ TLV_TYPE_TL16V, 0 },
 +		[NM_ATT_BCCH_ARFCN] =		{ TLV_TYPE_FIXED, 2 },
-+		[NM_ATT_BSIC] =			{ TLV_TYPE_TV },
-+		[NM_ATT_BTS_AIR_TIMER] =	{ TLV_TYPE_TV },
-+		[NM_ATT_CCCH_L_I_P] =		{ TLV_TYPE_TV },
-+		[NM_ATT_CCCH_L_T] =		{ TLV_TYPE_TV },
-+		[NM_ATT_CHAN_COMB] =		{ TLV_TYPE_TV },
-+		[NM_ATT_CONN_FAIL_CRIT] =	{ TLV_TYPE_TL16V },
-+		[NM_ATT_DEST] =			{ TLV_TYPE_TL16V },
-+		[NM_ATT_EVENT_TYPE] =		{ TLV_TYPE_TV },
-+		[NM_ATT_FILE_DATA] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_FILE_ID] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_FILE_VERSION] =		{ TLV_TYPE_TL16V },
++		[NM_ATT_BSIC] =			{ TLV_TYPE_TV, 0 },
++		[NM_ATT_BTS_AIR_TIMER] =	{ TLV_TYPE_TV, 0 },
++		[NM_ATT_CCCH_L_I_P] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_CCCH_L_T] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_CHAN_COMB] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_CONN_FAIL_CRIT] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_DEST] =			{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_EVENT_TYPE] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_FILE_ID] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_FILE_VERSION] =		{ TLV_TYPE_TL16V, 0 },
 +		[NM_ATT_GSM_TIME] =		{ TLV_TYPE_FIXED, 2 },
-+		[NM_ATT_HSN] =			{ TLV_TYPE_TV },
-+		[NM_ATT_HW_CONFIG] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_HW_DESC] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_INTAVE_PARAM] =		{ TLV_TYPE_TV },
++		[NM_ATT_HSN] =			{ TLV_TYPE_TV, 0 },
++		[NM_ATT_HW_CONFIG] =		{ TLV_TYPE_TL16V, 0 },
++		//BS11 [NM_ATT_HW_DESC] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_HW_DESC] =		{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_INTAVE_PARAM] =		{ TLV_TYPE_TV, 0 },
 +		[NM_ATT_INTERF_BOUND] =		{ TLV_TYPE_FIXED, 6 },
-+		[NM_ATT_LIST_REQ_ATTR] =	{ TLV_TYPE_TL16V },
-+		[NM_ATT_MAIO] =			{ TLV_TYPE_TV },
-+		[NM_ATT_MANUF_STATE] =		{ TLV_TYPE_TV },
-+		[NM_ATT_MANUF_THRESH] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_MANUF_ID] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_MAX_TA] =		{ TLV_TYPE_TV },
++		[NM_ATT_LIST_REQ_ATTR] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_MAIO] =			{ TLV_TYPE_TV, 0 },
++		[NM_ATT_MANUF_STATE] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_MANUF_THRESH] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_MANUF_ID] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_MAX_TA] =		{ TLV_TYPE_TV, 0 },
 +		[NM_ATT_MDROP_LINK] =		{ TLV_TYPE_FIXED, 2 },
 +		[NM_ATT_MDROP_NEXT] =		{ TLV_TYPE_FIXED, 2 },
-+		[NM_ATT_NACK_CAUSES] =		{ TLV_TYPE_TV },
-+		[NM_ATT_NY1] =			{ TLV_TYPE_TV },
-+		[NM_ATT_OPER_STATE] =		{ TLV_TYPE_TV },
-+		[NM_ATT_OVERL_PERIOD] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_PHYS_CONF] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_POWER_CLASS] =		{ TLV_TYPE_TV },
++		[NM_ATT_NACK_CAUSES] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_NY1] =			{ TLV_TYPE_TV, 0 },
++		[NM_ATT_OPER_STATE] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_OVERL_PERIOD] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_PHYS_CONF] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_POWER_CLASS] =		{ TLV_TYPE_TV, 0 },
 +		[NM_ATT_POWER_THRESH] =		{ TLV_TYPE_FIXED, 3 },
 +		[NM_ATT_PROB_CAUSE] =		{ TLV_TYPE_FIXED, 3 },
-+		[NM_ATT_RACH_B_THRESH] =	{ TLV_TYPE_TV },
++		[NM_ATT_RACH_B_THRESH] =	{ TLV_TYPE_TV, 0 },
 +		[NM_ATT_LDAVG_SLOTS] =		{ TLV_TYPE_FIXED, 2 },
-+		[NM_ATT_RAD_SUBC] =		{ TLV_TYPE_TV },
-+		[NM_ATT_RF_MAXPOWR_R] =		{ TLV_TYPE_TV },
-+		[NM_ATT_SITE_INPUTS] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_SITE_OUTPUTS] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_SOURCE] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_SPEC_PROB] =		{ TLV_TYPE_TV },
++		[NM_ATT_RAD_SUBC] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_RF_MAXPOWR_R] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_SITE_INPUTS] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_SITE_OUTPUTS] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_SOURCE] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_SPEC_PROB] =		{ TLV_TYPE_TV, 0 },
 +		[NM_ATT_START_TIME] =		{ TLV_TYPE_FIXED, 2 },
 +		[NM_ATT_T200] =			{ TLV_TYPE_FIXED, 7 },
-+		[NM_ATT_TEI] =			{ TLV_TYPE_TV },
++		[NM_ATT_TEI] =			{ TLV_TYPE_TV, 0 },
 +		[NM_ATT_TEST_DUR] =		{ TLV_TYPE_FIXED, 2 },
-+		[NM_ATT_TEST_NO] =		{ TLV_TYPE_TV },
-+		[NM_ATT_TEST_REPORT] =		{ TLV_TYPE_TL16V, },
++		[NM_ATT_TEST_NO] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_TEST_REPORT] =		{ TLV_TYPE_TL16V, 0 },
 +		[NM_ATT_VSWR_THRESH] =		{ TLV_TYPE_FIXED, 2 },
-+		[NM_ATT_WINDOW_SIZE] = 		{ TLV_TYPE_TV },
-+		[NM_ATT_TSC] =			{ TLV_TYPE_TV },
-+		[NM_ATT_SW_CONFIG] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_SEVERITY] = 		{ TLV_TYPE_TV },
-+		[NM_ATT_GET_ARI] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_HW_CONF_CHG] = 		{ TLV_TYPE_TL16V },
-+		[NM_ATT_OUTST_ALARM] =		{ TLV_TYPE_TV },
-+		[NM_ATT_FILE_DATA] =		{ TLV_TYPE_TL16V },
-+		[NM_ATT_MEAS_RES] =		{ TLV_TYPE_TL16V },
++		[NM_ATT_WINDOW_SIZE] = 		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_TSC] =			{ TLV_TYPE_TV, 0 },
++		[NM_ATT_SW_CONFIG] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_SEVERITY] = 		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_GET_ARI] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_HW_CONF_CHG] = 		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_OUTST_ALARM] =		{ TLV_TYPE_TV, 0 },
++		[NM_ATT_FILE_DATA] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_MEAS_RES] =		{ TLV_TYPE_TL16V, 0 },
++#if 0
 +		/* BS11 specifics */
-+		[NM_ATT_BS11_ESN_FW_CODE_NO] =	{ TLV_TYPE_TLV },
-+		[NM_ATT_BS11_ESN_HW_CODE_NO] =	{ TLV_TYPE_TLV },
-+		[NM_ATT_BS11_ESN_PCB_SERIAL] =	{ TLV_TYPE_TLV },
-+		[NM_ATT_BS11_BOOT_SW_VERS] =	{ TLV_TYPE_TLV },
-+		[0xd5] =			{ TLV_TYPE_TLV },
-+		[0xa8] =			{ TLV_TYPE_TLV },
-+		[NM_ATT_BS11_PASSWORD] =	{ TLV_TYPE_TLV },
-+		[NM_ATT_BS11_TXPWR] =		{ TLV_TYPE_TLV },
-+		[NM_ATT_BS11_RSSI_OFFS] =	{ TLV_TYPE_TLV },
-+		[NM_ATT_BS11_LINE_CFG] = 	{ TLV_TYPE_TV },
-+		[NM_ATT_BS11_L1_PROT_TYPE] =	{ TLV_TYPE_TV },
++		[NM_ATT_BS11_ESN_FW_CODE_NO] =	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_ESN_HW_CODE_NO] =	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_ESN_PCB_SERIAL] =	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_BOOT_SW_VERS] =	{ TLV_TYPE_TLV, 0 },
++		[0xd5] =			{ TLV_TYPE_TLV, 0 },
++		[0xa8] =			{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_PASSWORD] =	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_TXPWR] =		{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_RSSI_OFFS] =	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_LINE_CFG] = 	{ TLV_TYPE_TV, 0 },
++		[NM_ATT_BS11_L1_PROT_TYPE] =	{ TLV_TYPE_TV, 0 },
 +		[NM_ATT_BS11_BIT_ERR_THESH] =	{ TLV_TYPE_FIXED, 2 },
-+		[NM_ATT_BS11_DIVERSITY] =	{ TLV_TYPE_TLV },
-+		[NM_ATT_BS11_LMT_LOGON_SESSION]={ TLV_TYPE_TLV },
-+		[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 },
-+		[NM_ATT_BS11_PLL_MODE]	=	{ TLV_TYPE_TLV },
-+		[NM_ATT_BS11_PLL]	=	{ TLV_TYPE_TLV },
-+		[NM_ATT_BS11_CCLK_ACCURACY] =	{ TLV_TYPE_TV },
-+		[NM_ATT_BS11_CCLK_TYPE] =	{ TLV_TYPE_TV },
++		[NM_ATT_BS11_DIVERSITY] =	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_LMT_LOGON_SESSION]={ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_LMT_LOGIN_TIME] =	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_LMT_USER_ACC_LEV] ={ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_LMT_USER_NAME] =	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_BTS_STATE]	=	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_E1_STATE]	=	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_PLL_MODE]	=	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_PLL]	=	{ TLV_TYPE_TLV, 0 },
++		[NM_ATT_BS11_CCLK_ACCURACY] =	{ TLV_TYPE_TV, 0 },
++		[NM_ATT_BS11_CCLK_TYPE] =	{ TLV_TYPE_TV, 0 },
++		[0x95] =			{ TLV_TYPE_FIXED, 2 },
++#endif
 +		/* ip.access specifics */
-+		[NM_ATT_IPACC_RSL_BSC_IP] =	{ TLV_TYPE_FIXED, 4 },
-+		[NM_ATT_IPACC_RSL_BSC_PORT] =	{ TLV_TYPE_FIXED, 2 },
-+		[NM_ATT_IPACC_PRIM_OML_IP] =	{ TLV_TYPE_TL16V },
-+		[NM_ATT_IPACC_NV_FLAGS] =	{ TLV_TYPE_TL16V },
++		[NM_ATT_IPACC_DST_IP] =		{ TLV_TYPE_FIXED, 4 },
++		[NM_ATT_IPACC_DST_IP_PORT] =	{ TLV_TYPE_FIXED, 2 },
++		[NM_ATT_IPACC_PRIM_OML_CFG] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_NV_FLAGS] =	{ TLV_TYPE_TL16V, 0 },
 +		[NM_ATT_IPACC_FREQ_CTRL] =	{ TLV_TYPE_FIXED, 2 },
-+		[NM_ATT_IPACC_SEC_OML_IP] =	{ TLV_TYPE_TL16V }, // wrong name
 +		[NM_ATT_IPACC_SEC_OML_CFG] =	{ TLV_TYPE_FIXED, 6 },
 +		[NM_ATT_IPACC_IP_IF_CFG] =	{ TLV_TYPE_FIXED, 8 },
 +		[NM_ATT_IPACC_IP_GW_CFG] =	{ TLV_TYPE_FIXED, 12 },
-+		[NM_ATT_IPACC_LOCATION] =	{ TLV_TYPE_TL16V },
-+		[NM_ATT_IPACC_UNIT_ID] =	{ TLV_TYPE_TL16V },
-+		[NM_ATT_IPACC_UNIT_NAME] =	{ TLV_TYPE_TL16V },
-+		[NM_ATT_IPACC_SNMP_CFG] =	{ TLV_TYPE_TL16V },
-+		[NM_ATT_IPACC_ALM_THRESH_LIST]= { TLV_TYPE_TL16V },
-+		//[0x95] =			{ TLV_TYPE_FIXED, 2 },
-+		[0x9b] =			{ TLV_TYPE_TL16V },
-+		[0x85] =			{ TLV_TYPE_TV },
-+
++		[NM_ATT_IPACC_LOCATION] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_UNIT_ID] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_UNIT_NAME] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_SNMP_CFG] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_ALM_THRESH_LIST]= { TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_CUR_SW_CFG] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_STREAM_ID] =	{ TLV_TYPE_TV, 0 },
++		[NM_ATT_IPACC_RAC] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_OBJ_VERSION] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_GPRS_PAGING_CFG] ={ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_NSEI] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_BVCI] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_NSVCI] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_NS_CFG] =		{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_BSSGP_CFG] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_NS_LINK_CFG] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_RLC_CFG] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_SUPP_FEATURES] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_CODING_SCHEMES] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_RLC_CFG_2] =	{ TLV_TYPE_TL16V, 0 },
++		[NM_ATT_IPACC_RLC_CFG_3] =	{ TLV_TYPE_TL16V, 0 },
 +	},
 +};
 +
diff --git a/wireshark/abisip.patch b/wireshark/abisip.patch
index 11ab597..44ca3ee 100644
--- a/wireshark/abisip.patch
+++ b/wireshark/abisip.patch
@@ -1,7 +1,7 @@
 Index: epan/dissectors/Makefile.common
 ===================================================================
---- epan/dissectors/Makefile.common.orig	2009-07-03 22:19:54.000000000 +0200
-+++ epan/dissectors/Makefile.common	2009-07-03 22:20:16.000000000 +0200
+--- epan/dissectors/Makefile.common.orig
++++ epan/dissectors/Makefile.common
 @@ -471,6 +471,7 @@
  	packet-gsm_a_gm.c		\
  	packet-gsm_a_rp.c		\
@@ -12,8 +12,8 @@
  	packet-gsm_sms.c	\
 Index: epan/dissectors/packet-rsl.c
 ===================================================================
---- epan/dissectors/packet-rsl.c.orig	2009-07-03 22:19:54.000000000 +0200
-+++ epan/dissectors/packet-rsl.c	2009-07-03 22:20:16.000000000 +0200
+--- epan/dissectors/packet-rsl.c.orig
++++ epan/dissectors/packet-rsl.c
 @@ -3950,6 +3950,7 @@
  	proto_register_field_array(proto_rsl, hf, array_length(hf));
  	proto_register_subtree_array(ett, array_length(ett));
@@ -24,9 +24,9 @@
  
 Index: epan/dissectors/packet-gsm_abis_ip.c
 ===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ epan/dissectors/packet-gsm_abis_ip.c	2009-07-03 22:20:16.000000000 +0200
-@@ -0,0 +1,279 @@
+--- /dev/null
++++ epan/dissectors/packet-gsm_abis_ip.c
+@@ -0,0 +1,284 @@
 +/* packet-gsm_abis_ip.c
 + * Routines for packet dissection of ip.access A-bis over IP
 + * Copyright 2009 by Harald Welte <laforge@gnumonks.org>
@@ -124,7 +124,7 @@
 +static gint
 +dissect_ipa_attr(tvbuff_t *tvb, int base_offs, proto_tree *tree)
 +{
-+	guint8 len, tag, attr_type;
++	guint8 len, attr_type;
 +
 +	int offset = base_offs;
 +
@@ -134,7 +134,6 @@
 +		switch (attr_type) {
 +		case 0x00:	/* a string prefixed by its length */
 +			len = tvb_get_guint8(tvb, offset+1);
-+			tag = tvb_get_guint8(tvb, offset+2);
 +			proto_tree_add_item(tree, hf_ipaccess_attr_tag,
 +					    tvb, offset+2, 1, FALSE);
 +			proto_tree_add_item(tree, hf_ipaccess_attr_string,
@@ -145,6 +144,12 @@
 +			proto_tree_add_item(tree, hf_ipaccess_attr_tag,
 +					    tvb, offset+1, 1, FALSE);
 +			break;
++		default:
++			len = 0;
++			proto_tree_add_text(tree, tvb, offset+1, 1,
++					    "unknonw attribute type 0x%02x",
++					    attr_type);
++			break;
 +		};
 +		offset += len + 2;
 +	};
diff --git a/wireshark/rsl-ipaccess.patch b/wireshark/rsl-ipaccess.patch
index 75de561..17d6441 100644
--- a/wireshark/rsl-ipaccess.patch
+++ b/wireshark/rsl-ipaccess.patch
@@ -1,14 +1,14 @@
 Index: wireshark/epan/dissectors/packet-rsl.c
 ===================================================================
---- wireshark.orig/epan/dissectors/packet-rsl.c	2009-07-03 22:20:16.000000000 +0200
-+++ wireshark/epan/dissectors/packet-rsl.c	2009-07-04 04:06:04.000000000 +0200
+--- wireshark.orig/epan/dissectors/packet-rsl.c	2009-07-12 14:07:48.000000000 +0200
++++ wireshark/epan/dissectors/packet-rsl.c	2009-07-12 21:58:21.000000000 +0200
 @@ -2,6 +2,7 @@
   * Routines for Radio Signalling Link (RSL) dissection.
   *
   * Copyright 2007, Anders Broman <anders.broman@ericsson.com>
 + * Copyright 2009, Harald Welte <laforge@gnumonks.org>
   *
-  * $Id: packet-rsl.c 28770 2009-06-18 21:30:42Z stig $
+  * $Id: packet-rsl.c 29056 2009-07-10 20:00:54Z tuexen $
   *
 @@ -44,6 +45,8 @@
  #include <epan/lapd_sapi.h>
@@ -23,10 +23,10 @@
  static int hf_rsl_rtd				= -1;
  static int hf_rsl_delay_ind			= -1;
  static int hf_rsl_tfo				= -1;
-+static int hf_rsl_f4				= -1;
-+static int hf_rsl_f6				= -1;
-+static int hf_rsl_f8				= -1;
-+static int hf_rsl_fc				= -1;
++static int hf_rsl_speech_mode			= -1;
++static int hf_rsl_conn_stat			= -1;
++static int hf_rsl_conn_id			= -1;
++static int hf_rsl_rtp_payload			= -1;
 +static int hf_rsl_local_port			= -1;
 +static int hf_rsl_remote_port			= -1;
 +static int hf_rsl_local_ip			= -1;
@@ -38,14 +38,14 @@
  static int ett_ie_meas_res_no = -1;
  static int ett_ie_message_id = -1;
  static int ett_ie_sys_info_type = -1;
-+static int ett_ie_f4 = -1;
-+static int ett_ie_f6 = -1;
-+static int ett_ie_f8 = -1;
++static int ett_ie_speech_mode = -1;
++static int ett_ie_conn_stat = -1;
++static int ett_ie_conn_id = -1;
 +static int ett_ie_remote_ip = -1;
 +static int ett_ie_remote_port = -1;
 +static int ett_ie_local_port = -1;
 +static int ett_ie_local_ip = -1;
-+static int ett_ie_fc = -1;
++static int ett_ie_rtp_payload = -1;
 +
  
  proto_tree *top_tree;
@@ -62,13 +62,24 @@
  /*
   * 9.2 MESSAGE TYPE
   */
-@@ -276,6 +299,21 @@
+@@ -276,6 +299,49 @@
  	/* 	0 1 - - - - - - Location Services messages: */
  #define RSL_MSG_LOC_INF					65	/* 8.7.1 */
  
 +/* Vendor-Specific messages of ip.access nanoBTS. There is no public documentation
 + * about those extensions, all information in this dissector is based on lawful
 + * protocol reverse enginering by Harald Welte <laforge@gnumonks.org> */
++#define RSL_MSG_TYPE_IPAC_MEAS_PP_DEF	0x60
++#define RSL_MSG_TYPE_IPAC_HO_CAND_INQ	0x61
++#define RSL_MSG_TYPE_IPAC_HO_CAND_RESP	0x62
++
++#define RSL_MSG_TYPE_IPAC_PDCH_ACT	0x48
++#define RSL_MSG_TYPE_IPAC_PDCH_ACT_ACK	0x49
++#define RSL_MSG_TYPE_IPAC_PDCH_ACT_NACK	0x4a
++#define RSL_MSG_TYPE_IPAC_PDCH_DEACT	0x4b
++#define RSL_MSG_TYPE_IPAC_PDCH_DEACT_ACK 0x4c
++#define RSL_MSG_TYPE_IPAC_PDCH_DEACT_NACK 0x4d
++
 +#define RSL_MSG_TYPE_IPAC_BIND		0x70
 +#define RSL_MSG_TYPE_IPAC_BIND_ACK	0x71
 +#define RSL_MSG_TYPE_IPAC_BIND_NACK	0x72
@@ -76,19 +87,45 @@
 +#define RSL_MSG_TYPE_IPAC_CONNECT_ACK	0x74
 +#define RSL_MSG_TYPE_IPAC_CONNECT_NACK	0x75
 +#define RSL_MSG_TYPE_IPAC_DISC_IND	0x76
++#define RSL_MSG_TYPE_IPAC_DISC		0x77
++#define RSL_MSG_TYPE_IPAC_DISC_ACK	0x78
++#define RSL_MSG_TYPE_IPAC_DISC_NACK	0x79
 +
++#define RSL_IE_IPAC_SRTP_CONFIG		0xe0
++#define RSL_IE_IPAC_PROXY_UDP		0xe1
++#define RSL_IE_IPAC_BSCMPL_TOUT		0xe2
 +#define RSL_IE_IPAC_REMOTE_IP		0xf0
 +#define RSL_IE_IPAC_REMOTE_PORT		0xf1
++#define RSL_IE_IPAC_RTP_PAYLOAD		0xf2
 +#define RSL_IE_IPAC_LOCAL_PORT		0xf3
++#define RSL_IE_IPAC_SPEECH_MODE		0xf4
 +#define RSL_IE_IPAC_LOCAL_IP		0xf5
++#define RSL_IE_IPAC_CONN_STAT		0xf6
++#define RSL_IE_IPAC_HO_C_PARMS		0xf7
++#define RSL_IE_IPAC_CONN_ID		0xf8
++#define RSL_IE_IPAC_RTP_CSD_FMT		0xf9
++#define RSL_IE_IPAC_RTP_JIT_BUF		0xfa
++#define RSL_IE_IPAC_RTP_COMPR		0xfb
++#define RSL_IE_IPAC_RTP_PAYLOAD2	0xfc
++#define RSL_IE_IPAC_RTP_MPLEX		0xfd
++#define RSL_IE_IPAC_RTP_MPLEX_ID	0xfe
  
  static const value_string rsl_msg_type_vals[] = {
  	  /* 	0 0 0 0 - - - - Radio Link Layer Management messages: */
-@@ -338,6 +376,14 @@
+@@ -338,6 +404,26 @@
  	{  0x3f,	"TFO MODification REQuest" },					/* 8.4.31 */
  	/* 	0 1 - - - - - - Location Services messages: */
  	{  0x41,	"Location Information" },						/* 8.7.1 */
 +	/* ip.access */
++	{  0x48,	"ip.access PDCH ACTIVATION" },
++	{  0x49,	"ip.access PDCH ACTIVATION ACK" },
++	{  0x4a,	"ip.access PDCH ACTIVATION NACK" },
++	{  0x4b,	"ip.access PDCH DEACTIVATION" },
++	{  0x4c,	"ip.access PDCH DEACTIVATION ACK" },
++	{  0x4d,	"ip.access PDCH DEACTIVATION NACK" },
++	{  0x60,	"ip.access MEASurement PREPROCessing DeFauLT" },
++	{  0x61,	"ip.access HANDOover CANDidate ENQuiry" },
++	{  0x62,	"ip.access HANDOover CANDidate RESPonse" },
 +	{  0x70,	"ip.access BIND" },
 +	{  0x71,	"ip.access BIND ACK" },
 +	{  0x72,	"ip.access BIND NACK" },
@@ -96,21 +133,53 @@
 +	{  0x74,	"ip.access CONNECT ACK" },
 +	{  0x75,	"ip.access CONNECT NACK" },
 +	{  0x76,	"ip.access DISCONNECT INDication" },
++	{  0x77,	"ip.access DISCONNECT" },
++	{  0x78,	"ip.access DISCONNECT ACK" },
++	{  0x79,	"ip.access DISCONNECT NACK" },
  	{ 0,		NULL }
  };
  
-@@ -477,6 +523,10 @@
+@@ -371,10 +457,10 @@
+ #define RSL_IE_MESSAGE_ID		28
+ 
+ #define RSL_IE_SYS_INFO_TYPE	30
+-
+-
+-
+-
++#define RSL_IE_MS_POWER_PARAM		31
++#define RSL_IE_BS_POWER_PARAM		32
++#define RSL_IE_PREPROC_PARAM		33
++#define RSL_IE_PREPROC_MEAS		34
+ #define RSL_IE_FULL_IMM_ASS_INF			35
+ #define RSL_IE_SMSCB_INF				36
+ #define RSL_IE_FULL_MS_TIMING_OFFSET	37
+@@ -477,6 +563,24 @@
  			Not used
  
  	*/
++	{ 0xe0,		"SRTP Configuration" },
++	{ 0xe1,		"BSC Proxy UDP Port" },
++	{ 0xe2,		"BSC Multiplex Timeout" },
 +	{ 0xf0,		"Remote IP Address" },
 +	{ 0xf1,		"Remote RTP Port" },
++	{ 0xf2,		"RTP Payload Type" },
 +	{ 0xf3,		"Local RTP Port" },
++	{ 0xf4,		"Speech Mode" },
 +	{ 0xf5,		"Local IP Address" },
++	{ 0xf6,		"Connection Statistics" },
++	{ 0xf7,		"Handover C Parameters" },
++	{ 0xf8,		"Connection Identifier" },
++	{ 0xf9,		"RTP CSD Format" },
++	{ 0xfa,		"RTP Jitter Buffer" },
++	{ 0xfb,		"RTP Compression" },
++	{ 0xfc,		"RTP Payload Type 2" },
++	{ 0xfd,		"RTP Multiplex" },
++	{ 0xfe,		"RTP Multiplex Identifier" },
  	{ 0,			NULL }
  };
  
-@@ -513,6 +563,95 @@
+@@ -513,6 +617,95 @@
  	{ 0,			NULL }
  };
  
@@ -163,10 +232,10 @@
 +		[RSL_IE_MEAS_RES_NO]		= { TLV_TYPE_TV, 0 },
 +		[RSL_IE_MESSAGE_ID]		= { TLV_TYPE_TV, 0 },
 +		[RSL_IE_SYS_INFO_TYPE]		= { TLV_TYPE_TV, 0 },
-+		//[RSL_IE_MS_POWER_PARAM]		= { TLV_TYPE_TLV, 0 },
-+		//[RSL_IE_BS_POWER_PARAM]		= { TLV_TYPE_TLV, 0 },
-+		//[RSL_IE_PREPROC_CONFIG]		= { TLV_TYPE_TLV, 0 },
-+		//[RSL_IE_PREPROC_MEAS_RES]		= { TLV_TYPE_TLV, 0 },
++		[RSL_IE_MS_POWER_PARAM]		= { TLV_TYPE_TLV, 0 },
++		[RSL_IE_BS_POWER_PARAM]		= { TLV_TYPE_TLV, 0 },
++		[RSL_IE_PREPROC_PARAM]		= { TLV_TYPE_TLV, 0 },
++		[RSL_IE_PREPROC_MEAS]		= { TLV_TYPE_TLV, 0 },
 +		//[RSL_IE_IMM_ASS_INFO]		= { TLV_TYPE_TLV, 0 },
 +		//[RSL_IE_SMSCB_INFO]		= { TLV_TYPE_FIXED, 23 },
 +		//[RSL_IE_MS_TIMING_OFFSET]	= { TLV_TYPE_TV, 0 },
@@ -197,16 +266,16 @@
 +		[RSL_IE_IPAC_REMOTE_PORT]	= { TLV_TYPE_FIXED, 2 },
 +		[RSL_IE_IPAC_LOCAL_IP]		= { TLV_TYPE_FIXED, 4 },
 +		[RSL_IE_IPAC_LOCAL_PORT]	= { TLV_TYPE_FIXED, 2 },
-+		[0xf4]				= { TLV_TYPE_TV, 0 },
-+		[0xf8]				= { TLV_TYPE_FIXED, 2 },
-+		[0xfc]				= { TLV_TYPE_TV, 0 },
++		[RSL_IE_IPAC_SPEECH_MODE]	= { TLV_TYPE_TV, 0 },
++		[RSL_IE_IPAC_CONN_ID]		= { TLV_TYPE_FIXED, 2 },
++		[RSL_IE_IPAC_RTP_PAYLOAD2]	= { TLV_TYPE_TV, 0 },
 +	},
 +};
 +
  /* 9.3.1 Channel number			9.3.1	M TV 2 */
  static int
  dissect_rsl_ie_ch_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, gboolean is_mandatory)
-@@ -2043,7 +2182,6 @@
+@@ -2043,7 +2236,6 @@
  	proto_item_set_len(ti, length+2);
  
  	proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
@@ -214,7 +283,7 @@
  
  	/* Received Message */
  	offset = dissct_rsl_msg(tvb, pinfo, ie_tree, offset);
-@@ -2907,13 +3045,392 @@
+@@ -2907,13 +3099,425 @@
  	return ie_offset + length;
  }
  
@@ -452,7 +521,7 @@
 +#endif
 +
 +static int
-+dissct_rsl_ipaccess_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
++dissct_rsl_ipaccess_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,				    int offset)
 +{
 +	guint8 msg_type;
 +	guint32 local_addr = 0;
@@ -470,6 +539,15 @@
 +	case RSL_MSG_TYPE_IPAC_CONNECT_ACK:
 +	case RSL_MSG_TYPE_IPAC_CONNECT_NACK:
 +	case RSL_MSG_TYPE_IPAC_DISC_IND:
++	case RSL_MSG_TYPE_IPAC_DISC:
++	case RSL_MSG_TYPE_IPAC_DISC_ACK:
++	case RSL_MSG_TYPE_IPAC_DISC_NACK:
++	case RSL_MSG_TYPE_IPAC_PDCH_ACT:
++	case RSL_MSG_TYPE_IPAC_PDCH_ACT_ACK:
++	case RSL_MSG_TYPE_IPAC_PDCH_ACT_NACK:
++	case RSL_MSG_TYPE_IPAC_PDCH_DEACT:
++	case RSL_MSG_TYPE_IPAC_PDCH_DEACT_ACK:
++	case RSL_MSG_TYPE_IPAC_PDCH_DEACT_NACK:
 +		/* Channel number			9.3.1	M TV 2		*/
 +		offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
 +		break;
@@ -545,6 +623,10 @@
 +			len = tvb_get_guint8(tvb, offset+1) << 8 |
 +					tvb_get_guint8(tvb, offset+2);
 +			break;
++		default:
++			hlen = len_len = len = 0;
++			DISSECTOR_ASSERT_NOT_REACHED();
++			break;
 +		}
 +
 +		ti = proto_tree_add_item(tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
@@ -553,25 +635,45 @@
 +
 +		switch (tag) {
 +		case RSL_IE_CH_NO:
++			dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset, TRUE);
++			break;
++		case RSL_IE_FRAME_NO:
++			dissect_rsl_ie_frame_no(tvb, pinfo, ie_tree, offset, TRUE);
++			break;
++		case RSL_IE_MS_POW:
++			dissect_rsl_ie_ms_pow(tvb, pinfo, ie_tree, offset, TRUE);
 +			break;
 +		case RSL_IE_IPAC_REMOTE_IP:
 +			proto_tree_add_item(ie_tree, hf_rsl_remote_ip, tvb,
-+					    offset, len, FALSE);
++					    offset, len, TRUE);
 +			break;
 +		case RSL_IE_IPAC_REMOTE_PORT:
 +			proto_tree_add_item(ie_tree, hf_rsl_remote_port, tvb,
-+					    offset, len, FALSE);
++					    offset, len, TRUE);
 +			break;
 +		case RSL_IE_IPAC_LOCAL_IP:
 +			proto_tree_add_item(ie_tree, hf_rsl_local_ip, tvb,
-+					    offset, len, FALSE);
++					    offset, len, TRUE);
 +			local_addr = tvb_get_ipv4(tvb, offset);
 +			break;
 +		case RSL_IE_IPAC_LOCAL_PORT:
 +			proto_tree_add_item(ie_tree, hf_rsl_local_port, tvb,
-+					    offset, len, FALSE);
++					    offset, len, TRUE);
 +			local_port = tvb_get_ntohs(tvb, offset);
 +			break;
++		case RSL_IE_IPAC_SPEECH_MODE:
++			proto_tree_add_item(ie_tree, hf_rsl_speech_mode, tvb,
++					    offset, len, TRUE);
++			break;
++		case RSL_IE_IPAC_RTP_PAYLOAD:
++		case RSL_IE_IPAC_RTP_PAYLOAD2:
++			proto_tree_add_item(ie_tree, hf_rsl_rtp_payload, tvb,
++					    offset, len, TRUE);
++			break;
++		case RSL_IE_IPAC_CONN_ID:
++			proto_tree_add_item(ie_tree, hf_rsl_conn_id, tvb,
++					    offset, len, TRUE);
++			break;
 +		}
 +		offset += len;
 +	}
@@ -608,7 +710,26 @@
  	offset++;
  
  	switch (msg_type){
-@@ -3517,7 +4034,6 @@
+@@ -3481,6 +4085,18 @@
+ 		/* LLP APDU 9.3.58 M LV 2-N */
+ 		offset = dissect_rsl_ie_llp_apdu(tvb, pinfo, tree, offset, TRUE);
+ 		break;
++	/* the following messages are ip.access specific but sent without
++	 * ip.access memssage discriminator */
++	case RSL_MSG_TYPE_IPAC_MEAS_PP_DEF:
++	case RSL_MSG_TYPE_IPAC_HO_CAND_INQ:
++	case RSL_MSG_TYPE_IPAC_HO_CAND_RESP:
++	case RSL_MSG_TYPE_IPAC_PDCH_ACT:
++	case RSL_MSG_TYPE_IPAC_PDCH_ACT_ACK:
++	case RSL_MSG_TYPE_IPAC_PDCH_ACT_NACK:
++	case RSL_MSG_TYPE_IPAC_PDCH_DEACT:
++	case RSL_MSG_TYPE_IPAC_PDCH_DEACT_ACK:
++	case RSL_MSG_TYPE_IPAC_PDCH_DEACT_NACK:
++		offset = dissct_rsl_ipaccess_msg(tvb, pinfo, tree, offset-1);
+ 	default:
+ 		break;
+ 	}
+@@ -3517,7 +4133,6 @@
  		/* 9.1 Message discriminator */
  		proto_tree_add_item(rsl_tree, hf_rsl_msg_dsc, tvb, offset, 1, FALSE);
  		proto_tree_add_item(rsl_tree, hf_rsl_T_bit, tvb, offset, 1, FALSE);
@@ -616,29 +737,25 @@
  
  		offset = dissct_rsl_msg(tvb, pinfo, rsl_tree, offset);
  
-@@ -3883,6 +4399,46 @@
+@@ -3883,6 +4498,42 @@
  			FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
  			NULL, HFILL }
  		},
-+		{ &hf_rsl_f4,
-+			{ "unknown F4 IE",	"rsl.ipacc.f4",
-+			  FT_UINT8, BASE_DEC, NULL, 0x0,
-+			  "unknown F4 IE", HFILL }
++		{ &hf_rsl_speech_mode,
++			{ "ip.access Speech Mode", "rsl.ipacc.speech_mode",
++			  FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
 +		},
-+		{ &hf_rsl_f6,
-+			{ "unknown F6 IE",	"rsl.ipacc.f6",
-+			  FT_BYTES, BASE_HEX, NULL, 0x0,
-+			  "unknown F6 IE", HFILL }
++		{ &hf_rsl_conn_stat,
++			{ "ip.access Connection Statistics","rsl.ipacc.conn_stat",
++			  FT_BYTES, BASE_HEX, NULL, 0x0, NULL, HFILL }
 +		},
-+		{ &hf_rsl_f8,
-+			{ "unknown F8 IE",	"rsl.ipacc.f8",
-+			  FT_UINT16, BASE_DEC, NULL, 0x0,
-+			  "unknown F8 IE", HFILL }
++		{ &hf_rsl_conn_id,
++			{ "ip.access Connection ID",	"rsl.ipacc.conn_id",
++			  FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
 +		},
-+		{ &hf_rsl_fc,
-+			{ "unknown FC IE",	"rsl.ipacc.fc",
-+			  FT_UINT8, BASE_DEC, NULL, 0x0,
-+			  "unknown FC IE", HFILL }
++		{ &hf_rsl_rtp_payload,
++			{ "ip.access RTP Payload Type",	"rsl.ipacc.rtp_payload",
++			  FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
 +		},
 +		{ &hf_rsl_local_port,
 +			{ "ip.access Local RTP Port",	"rsl.ipacc.local_port",
@@ -663,18 +780,18 @@
  	};
  	static gint *ett[] = {
  		&ett_rsl,
-@@ -3941,6 +4497,14 @@
+@@ -3941,6 +4592,14 @@
  		&ett_ie_meas_res_no,
  		&ett_ie_message_id,
  		&ett_ie_sys_info_type,
-+		&ett_ie_f4,
-+		&ett_ie_f6,
-+		&ett_ie_f8,
++		&ett_ie_speech_mode,
++		&ett_ie_conn_stat,
++		&ett_ie_conn_id,
 +		&ett_ie_remote_ip,
 +		&ett_ie_remote_port,
 +		&ett_ie_local_port,
 +		&ett_ie_local_ip,
-+		&ett_ie_fc,
++		&ett_ie_rtp_payload,
  	};
  
  	/* Register the protocol name and description */