aboutsummaryrefslogtreecommitdiffstats
path: root/wireshark
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@gnumonks.org>2011-03-31 14:05:08 +0200
committerHarald Welte <laforge@gnumonks.org>2011-04-08 14:05:42 +0200
commitffcf66f30ea1a556db92cdf9c43fbe1ae596208d (patch)
tree6b8ead96bdbe544aebaa9918251cc31d65997c0d /wireshark
parentb326100b125f2061f8158362f3ad8cb500a50fec (diff)
wireshark: update extension of RSL dissector with ip.access nanoBTS support
This patch removes the C99 structure initialization which is not allowed by the wireshark project (since it has to compile with non-C99 compliant compilers). It also adds a new option to enable/disable the dissection of vendor specific ip.access nanoBTS RSL messages. Tested with file: ipaccess-startup-mo_to_mo_call-proxy.pcap
Diffstat (limited to 'wireshark')
-rw-r--r--wireshark/0004-rsl-ipaccess.patch228
1 files changed, 134 insertions, 94 deletions
diff --git a/wireshark/0004-rsl-ipaccess.patch b/wireshark/0004-rsl-ipaccess.patch
index 6f2b8c13..e68c3626 100644
--- a/wireshark/0004-rsl-ipaccess.patch
+++ b/wireshark/0004-rsl-ipaccess.patch
@@ -1,15 +1,16 @@
From 54882db58b6ec12da6b80071e0ac2344d42df24c Mon Sep 17 00:00:00 2001
+
From: Holger Hans Peter Freyther <zecke@selfish.org>
-Date: Tue, 11 Jan 2011 16:22:33 +0100
+
Subject: [PATCH 4/4] rsl-ipaccess
Add vendor specific commands for RSL.
---
- epan/dissectors/packet-rsl.c | 522 +++++++++++++++++++++++++++++++++++++++++-
- 1 files changed, 515 insertions(+), 7 deletions(-)
+ epan/dissectors/packet-rsl.c | 544 +++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 536 insertions(+), 8 deletions(-)
diff --git a/epan/dissectors/packet-rsl.c b/epan/dissectors/packet-rsl.c
-index bf83f6f..d858e1a 100644
+index bf83f6f..213ae28 100644
--- a/epan/dissectors/packet-rsl.c
+++ b/epan/dissectors/packet-rsl.c
@@ -2,6 +2,7 @@
@@ -20,8 +21,11 @@ index bf83f6f..d858e1a 100644
*
* $Id$
*
-@@ -42,6 +43,8 @@
+@@ -40,8 +41,11 @@
+ #include <epan/packet.h>
+ #include <epan/proto.h>
#include <epan/lapd_sapi.h>
++#include <epan/prefs.h>
#include "packet-gsm_a_common.h"
+#include "packet-rtp.h"
@@ -29,7 +33,7 @@ index bf83f6f..d858e1a 100644
/* Initialize the protocol and registered fields */
static int proto_rsl = -1;
-@@ -116,6 +119,24 @@ static int hf_rsl_emlpp_prio = -1;
+@@ -116,6 +120,24 @@ static int hf_rsl_emlpp_prio = -1;
static int hf_rsl_rtd = -1;
static int hf_rsl_delay_ind = -1;
static int hf_rsl_tfo = -1;
@@ -54,7 +58,7 @@ index bf83f6f..d858e1a 100644
/* Initialize the subtree pointers */
static int ett_rsl = -1;
-@@ -173,6 +194,15 @@ static int ett_ie_cause = -1;
+@@ -173,6 +195,15 @@ static int ett_ie_cause = -1;
static int ett_ie_meas_res_no = -1;
static int ett_ie_message_id = -1;
static int ett_ie_sys_info_type = -1;
@@ -70,7 +74,17 @@ index bf83f6f..d858e1a 100644
static proto_tree *top_tree;
static dissector_handle_t gsm_a_ccch_handle;
-@@ -208,8 +238,11 @@ static const value_string rsl_msg_disc_vals[] = {
+@@ -180,6 +211,9 @@ static dissector_handle_t gsm_a_dtap_handle;
+
+ static gboolean is_si2q = FALSE;
+
++/* Decode things as nanoBTS traces */
++static gboolean global_rsl_use_nano_bts = TRUE;
++
+ /* Forward declarations */
+ static int dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset);
+
+@@ -208,8 +242,11 @@ static const value_string rsl_msg_disc_vals[] = {
{ 0x06, "Common Channel Management messages" },
{ 0x08, "TRX Management messages" },
{ 0x16, "Location Services messages" },
@@ -82,7 +96,7 @@ index bf83f6f..d858e1a 100644
/*
* 9.2 MESSAGE TYPE
*/
-@@ -276,6 +309,49 @@ static const value_string rsl_msg_disc_vals[] = {
+@@ -276,6 +313,49 @@ static const value_string rsl_msg_disc_vals[] = {
/* 0 1 - - - - - - Location Services messages: */
#define RSL_MSG_LOC_INF 65 /* 8.7.1 */
@@ -132,7 +146,7 @@ index bf83f6f..d858e1a 100644
static const value_string rsl_msg_type_vals[] = {
/* 0 0 0 0 - - - - Radio Link Layer Management messages: */
-@@ -338,6 +414,26 @@ static const value_string rsl_msg_type_vals[] = {
+@@ -338,6 +418,26 @@ static const value_string rsl_msg_type_vals[] = {
{ 0x3f, "TFO MODification REQuest" }, /* 8.4.31 */
/* 0 1 - - - - - - Location Services messages: */
{ 0x41, "Location Information" }, /* 8.7.1 */
@@ -159,7 +173,7 @@ index bf83f6f..d858e1a 100644
{ 0, NULL }
};
-@@ -371,10 +467,10 @@ static const value_string rsl_msg_type_vals[] = {
+@@ -371,10 +471,10 @@ static const value_string rsl_msg_type_vals[] = {
#define RSL_IE_MESSAGE_ID 28
#define RSL_IE_SYS_INFO_TYPE 30
@@ -174,7 +188,7 @@ index bf83f6f..d858e1a 100644
#define RSL_IE_FULL_IMM_ASS_INF 35
#define RSL_IE_SMSCB_INF 36
#define RSL_IE_FULL_MS_TIMING_OFFSET 37
-@@ -477,6 +573,24 @@ static const value_string rsl_ie_type_vals[] = {
+@@ -477,6 +577,24 @@ static const value_string rsl_ie_type_vals[] = {
Not used
*/
@@ -199,7 +213,7 @@ index bf83f6f..d858e1a 100644
{ 0, NULL }
};
-@@ -513,6 +627,96 @@ static const value_string rsl_ch_no_Cbits_vals[] = {
+@@ -513,6 +631,27 @@ static const value_string rsl_ch_no_Cbits_vals[] = {
{ 0, NULL }
};
@@ -221,82 +235,13 @@ index bf83f6f..d858e1a 100644
+ struct tlv_def def[0xff];
+};
+
-+static const struct tlv_definition rsl_att_tlvdef = {
-+ .def = {
-+ [RSL_IE_CH_NO] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_LINK_ID] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_ACT_TYPE] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_BS_POW] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_CH_ID] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_CH_MODE] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_ENC_INF] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_FRAME_NO] = { TLV_TYPE_FIXED, 2 },
-+ [RSL_IE_HO_REF] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_L1_INF] = { TLV_TYPE_FIXED, 2 },
-+ [RSL_IE_L3_INF] = { TLV_TYPE_TL16V, 0 },
-+ [RSL_IE_MS_ID] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_MS_POW] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_PAGING_GRP] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_PAGING_LOAD] = { TLV_TYPE_FIXED, 2 },
-+ [RSL_IE_PHY_CTX] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_ACCESS_DELAY] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_RACH_LOAD] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_REQ_REF] = { TLV_TYPE_FIXED, 3 },
-+ [RSL_IE_REL_MODE] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_RESOURCE_INF] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_RLM_CAUSE] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_STARTING_TIME] = { TLV_TYPE_FIXED, 2 },
-+ [RSL_IE_TIMING_ADV] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_UPLINK_MEAS] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_CAUSE] = { TLV_TYPE_TLV, 0 },
-+ [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_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 },
-+ [RSL_IE_ERR_MSG] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_FULL_BCCH_INF] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_CH_NEEDED] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_CB_CMD_TYPE] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_SMSCB_MESS] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_FULL_IMM_ASS_INF] = { TLV_TYPE_TLV, 0 },
-+ //[RSL_IE_SACCH_INFO] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_CBCH_LOAD_INF] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_SMSCB_CH_IND] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_GRP_CALL_REF] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_CH_DESC] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_NCH_DRX_INF] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_CMD_IND] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_EMLPP_PRIO] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_UIC] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_MAIN_CH_REF] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_MULTIRATE_CONF] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_MULTIRATE_CNTRL] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_SUP_CODEC_TYPES] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_CODEC_CONF] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_RTD] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_TFO_STATUS] = { TLV_TYPE_TV, 0 },
-+ [RSL_IE_LLP_APDU] = { TLV_TYPE_TLV, 0 },
-+ [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_CONN_STAT] = { TLV_TYPE_TLV, 0 },
-+ [RSL_IE_IPAC_LOCAL_PORT] = { TLV_TYPE_FIXED, 2 },
-+ [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 },
-+ },
-+};
++/* This structure is initialized in proto_register_rsl() */
++static struct tlv_definition rsl_att_tlvdef;
+
/* 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)
-@@ -2045,7 +2249,6 @@ dissect_rsl_ie_err_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
+@@ -2045,7 +2184,6 @@ dissect_rsl_ie_err_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
proto_item_set_len(ti, length+2);
proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
@@ -304,7 +249,7 @@ index bf83f6f..d858e1a 100644
/* Received Message */
offset = dissct_rsl_msg(tvb, pinfo, ie_tree, offset);
-@@ -2910,12 +3113,184 @@ dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
+@@ -2910,12 +3048,184 @@ dissect_rsl_ie_tfo_transp_cont(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
}
static int
@@ -490,7 +435,7 @@ index bf83f6f..d858e1a 100644
offset++;
switch (msg_type){
-@@ -3483,6 +3858,18 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+@@ -3483,6 +3793,18 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* LLP APDU 9.3.58 M LV 2-N */
offset = dissect_rsl_ie_llp_apdu(tvb, pinfo, tree, offset, TRUE);
break;
@@ -509,7 +454,7 @@ index bf83f6f..d858e1a 100644
default:
break;
}
-@@ -3490,6 +3877,40 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
+@@ -3490,6 +3812,40 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
return offset;
}
@@ -550,7 +495,20 @@ index bf83f6f..d858e1a 100644
static void
dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
-@@ -3517,7 +3938,6 @@ dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+@@ -3512,12 +3868,19 @@ dissect_rsl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
+ top_tree = tree;
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_rsl, tvb, 0, -1, FALSE);
++
++ /* if nanoBTS specific vendor messages are not enabled, skip */
++ if (!global_rsl_use_nano_bts) {
++ guint8 msg_disc = tvb_get_guint8(tvb, offset) >> 1;
++
++ if (msg_disc == RSL_MSGDISC_IPACCESS)
++ return;
++ }
+ rsl_tree = proto_item_add_subtree(ti, ett_rsl);
+
/* 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);
@@ -558,7 +516,7 @@ index bf83f6f..d858e1a 100644
offset = dissct_rsl_msg(tvb, pinfo, rsl_tree, offset);
-@@ -3892,6 +4312,86 @@ void proto_register_rsl(void)
+@@ -3892,6 +4255,86 @@ void proto_register_rsl(void)
FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
NULL, HFILL }
},
@@ -645,7 +603,7 @@ index bf83f6f..d858e1a 100644
};
static gint *ett[] = {
&ett_rsl,
-@@ -3949,6 +4449,14 @@ void proto_register_rsl(void)
+@@ -3949,7 +4392,88 @@ void proto_register_rsl(void)
&ett_ie_meas_res_no,
&ett_ie_message_id,
&ett_ie_sys_info_type,
@@ -658,8 +616,90 @@ index bf83f6f..d858e1a 100644
+ &ett_ie_local_ip,
+ &ett_ie_rtp_payload,
};
++ module_t *rsl_module;
++
++#define RSL_ATT_TLVDEF(_attr, _type, _fixed_len) \
++ rsl_att_tlvdef.def[_attr].type = _type; \
++ rsl_att_tlvdef.def[_attr].fixed_len = _fixed_len; \
++
++ RSL_ATT_TLVDEF(RSL_IE_CH_NO, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_LINK_ID, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_ACT_TYPE, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_BS_POW, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_CH_ID, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_CH_MODE, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_ENC_INF, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_FRAME_NO, TLV_TYPE_FIXED, 2);
++ RSL_ATT_TLVDEF(RSL_IE_HO_REF, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_L1_INF, TLV_TYPE_FIXED, 2);
++ RSL_ATT_TLVDEF(RSL_IE_L3_INF, TLV_TYPE_TL16V, 0);
++ RSL_ATT_TLVDEF(RSL_IE_MS_ID, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_MS_POW, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_PAGING_GRP, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_PAGING_LOAD, TLV_TYPE_FIXED, 2);
++ RSL_ATT_TLVDEF(RSL_IE_PHY_CTX, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_ACCESS_DELAY, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_RACH_LOAD, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_REQ_REF, TLV_TYPE_FIXED, 3);
++ RSL_ATT_TLVDEF(RSL_IE_REL_MODE, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_RESOURCE_INF, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_RLM_CAUSE, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_STARTING_TIME, TLV_TYPE_FIXED, 2);
++ RSL_ATT_TLVDEF(RSL_IE_TIMING_ADV, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_UPLINK_MEAS, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_CAUSE, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_MEAS_RES_NO, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_MESSAGE_ID, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_SYS_INFO_TYPE, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_MS_POWER_PARAM, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_BS_POWER_PARAM, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_PREPROC_PARAM, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_PREPROC_MEAS, TLV_TYPE_TLV, 0);
++// RSL_ATT_TLVDEF(RSL_IE_IMM_ASS_INFO, TLV_TYPE_TLV, 0);
++// RSL_ATT_TLVDEF(RSL_IE_SMSCB_INFO, TLV_TYPE_FIXED, 23);
++// RSL_ATT_TLVDEF(RSL_IE_MS_TIMING_OFFSET, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_ERR_MSG, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_FULL_BCCH_INF, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_CH_NEEDED, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_CB_CMD_TYPE, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_SMSCB_MESS, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_FULL_IMM_ASS_INF, TLV_TYPE_TLV, 0);
++// RSL_ATT_TLVDEF(RSL_IE_SACCH_INFO, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_CBCH_LOAD_INF, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_SMSCB_CH_IND, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_GRP_CALL_REF, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_CH_DESC, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_NCH_DRX_INF, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_CMD_IND, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_EMLPP_PRIO, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_UIC, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_MAIN_CH_REF, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_MULTIRATE_CONF, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_MULTIRATE_CNTRL, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_SUP_CODEC_TYPES, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_CODEC_CONF, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_RTD, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_TFO_STATUS, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_LLP_APDU, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_IPAC_REMOTE_IP, TLV_TYPE_FIXED, 4);
++ RSL_ATT_TLVDEF(RSL_IE_IPAC_REMOTE_PORT, TLV_TYPE_FIXED, 2);
++ RSL_ATT_TLVDEF(RSL_IE_IPAC_LOCAL_IP, TLV_TYPE_FIXED, 4);
++ RSL_ATT_TLVDEF(RSL_IE_IPAC_CONN_STAT, TLV_TYPE_TLV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_IPAC_LOCAL_PORT, TLV_TYPE_FIXED, 2);
++ RSL_ATT_TLVDEF(RSL_IE_IPAC_SPEECH_MODE, TLV_TYPE_TV, 0);
++ RSL_ATT_TLVDEF(RSL_IE_IPAC_CONN_ID, TLV_TYPE_FIXED, 2);
++ RSL_ATT_TLVDEF(RSL_IE_IPAC_RTP_PAYLOAD2,TLV_TYPE_TV, 0);
/* Register the protocol name and description */
---
-1.7.3.4
-
+ proto_rsl = proto_register_protocol("Radio Signalling Link (RSL)",
+@@ -3960,5 +4484,9 @@ void proto_register_rsl(void)
+
+ register_dissector("gsm_abis_rsl", dissect_rsl, proto_rsl);
+
++ rsl_module = prefs_register_protocol(proto_rsl, proto_reg_handoff_rsl);
++ prefs_register_bool_preference(rsl_module, "use_ipaccess_rsl",
++ "Use nanoBTS definitions",
++ "Use ipaccess nanoBTS specific definitions for RSL",
++ &global_rsl_use_nano_bts);
+ }
+-