aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2007-09-23 20:57:00 +0000
committerAnders Broman <anders.broman@ericsson.com>2007-09-23 20:57:00 +0000
commit283b16163c1889670d8b7b6653d0ffadad78a899 (patch)
treec29731edd1aacf5936b6b53443ec1ec37163413f /epan
parent0693598d86fc1dcac6c9575bd2472405913cc927 (diff)
Decode more IE's
svn path=/trunk/; revision=22925
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-gsm_a.c365
-rw-r--r--epan/dissectors/packet-rsl.c444
2 files changed, 740 insertions, 69 deletions
diff --git a/epan/dissectors/packet-gsm_a.c b/epan/dissectors/packet-gsm_a.c
index 121f170e88..816d614847 100644
--- a/epan/dissectors/packet-gsm_a.c
+++ b/epan/dissectors/packet-gsm_a.c
@@ -665,9 +665,21 @@ static const value_string gsm_dtap_elem_strings[] = {
* [3] 10.5.2.54 (void)
* [3] 10.5.2.55 (void)
* [3] 10.5.2.56 3G Target Cell */
+ { 0x00, "Service Support" }, /* [3] 10.5.2.57 *
+ /* 10.5.2.58 MBMS p-t-m Channel Description */
{ 0x00, "Dedicated Service Information" }, /* [3] 10.5.2.59 */
-
-
+/*
+ * 10.5.2.60 MPRACH Description
+ * 10.5.2.61 Restriction Timer
+ * 10.5.2.62 MBMS Session Identity
+ * 10.5.2.63 Reduced group or broadcast call reference
+ * 10.5.2.64 Talker Priority status
+ * 10.5.2.65 Talker Identity
+ * 10.5.2.66 Token
+ * 10.5.2.67 PS Cause
+ * 10.5.2.68 VGCS AMR Configuration
+ * 10.5.2.69 Carrier Indication
+ */
/* Mobility Management Information Elements 10.5.3 */
{ 0x00, "Authentication Parameter RAND" },
{ 0x00, "Authentication Parameter AUTN (UMTS authentication challenge only)" },
@@ -1119,7 +1131,8 @@ static int hf_gsm_a_A5_2_algorithm_sup = -1;
static int hf_gsm_a_odd_even_ind = -1;
static int hf_gsm_a_mobile_identity_type = -1;
-static int hf_gsm_a_L3_protocol_discriminator = -1;
+static int hf_gsm_a_L3_protocol_discriminator = -1;
+static int hf_gsm_a_call_prio = -1;
static int hf_gsm_a_skip_ind = -1;
static int hf_gsm_a_bcc = -1;
@@ -1152,6 +1165,8 @@ static int hf_gsm_a_rr_time_diff = -1;
static int hf_gsm_a_rr_tlli = -1;
static int hf_gsm_a_rr_target_mode = -1;
static int hf_gsm_a_rr_group_cipher_key_number = -1;
+static int hf_gsm_a_rr_MBMS_multicast = -1;
+static int hf_gsm_a_rr_MBMS_broadcast = -1;
static int hf_gsm_a_rr_last_segment = -1;
static int hf_gsm_a_gmm_split_on_ccch = -1;
static int hf_gsm_a_gmm_non_drx_timer = -1;
@@ -3306,8 +3321,24 @@ typedef enum
* [3] 10.5.2.54 (void)
* [3] 10.5.2.55 (void)
* [3] 10.5.2.56 3G Target Cell */
+ DE_RR_SERV_SUP, /* 10.5.2.57 Service Support */
+/* 10.5.2.58 MBMS p-t-m Channel Description
+ */
+
DE_RR_DED_SERV_INF, /* [3] 10.5.2.59 Dedicated Service Information */
+/*
+ * 10.5.2.60 MPRACH Description
+ * 10.5.2.61 Restriction Timer
+ * 10.5.2.62 MBMS Session Identity
+ * 10.5.2.63 Reduced group or broadcast call reference
+ * 10.5.2.64 Talker Priority status
+ * 10.5.2.65 Talker Identity
+ * 10.5.2.66 Token
+ * 10.5.2.67 PS Cause
+ * 10.5.2.68 VGCS AMR Configuration
+ * 10.5.2.69 Carrier Indication
+ */
/* Mobility Management Information Elements 10.5.3 */
DE_AUTH_PARAM_RAND, /* Authentication Parameter RAND */
@@ -3931,45 +3962,28 @@ de_pd_sapi(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *ad
* [3] 10.5.1.11
*/
+static const value_string gsm_a_call_prio_vals[] = {
+ { 0x00, "no priority applied" },
+ { 0x01, "call priority level 4" },
+ { 0x02, "call priority level 3" },
+ { 0x03, "call priority level 2" },
+ { 0x04, "call priority level 1" },
+ { 0x05, "call priority level 0" },
+ { 0x06, "call priority level B" },
+ { 0x07, "call priority level A" },
+ { 0, NULL }
+};
+
static guint8
de_prio(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
- guint8 oct;
guint32 curr_offset;
- const gchar *str;
len = len;
curr_offset = offset;
- oct = tvb_get_guint8(tvb, curr_offset);
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x08, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s : Spare",
- a_bigbuf);
-
- switch (oct & 0x07)
- {
- case 1: str = "Call priority level 4"; break;
- case 2: str = "Call priority level 3"; break;
- case 3: str = "Call priority level 2"; break;
- case 4: str = "Call priority level 1"; break;
- case 5: str = "Call priority level 0"; break;
- case 6: str = "Call priority level B"; break;
- case 7: str = "Call priority level A"; break;
- default:
- str = "No priority applied";
- break;
- }
-
- other_decode_bitfield_value(a_bigbuf, oct, 0x07, 8);
- proto_tree_add_text(tree,
- tvb, curr_offset, 1,
- "%s : %s",
- a_bigbuf,
- str);
-
+ proto_tree_add_item(tree, hf_gsm_a_b8spare, tvb, curr_offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_gsm_a_call_prio, tvb, curr_offset, 1, FALSE);
curr_offset++;
/* no length check possible */
@@ -4954,19 +4968,27 @@ de_rr_mult_all(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar
* [3] 10.5.2.25 P3 Rest Octets
*/
/*
- * [3] 10.5.2.25a Packet Channel Description
+ * [3] 10.5.2.25a Packet Channel Description C V 3
*/
static guint8
de_rr_packet_ch_desc(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
{
+ proto_tree *subtree;
+ proto_item *item;
guint32 curr_offset;
len = len;
curr_offset = offset;
- proto_tree_add_text(tree,tvb, curr_offset, len ,"Data(Not decoded)");
+ item =
+ proto_tree_add_text(tree,
+ tvb, curr_offset, 1,
+ gsm_dtap_elem_strings[DE_RR_PACKET_CH_DESC].strptr);
- curr_offset = curr_offset + 4;
+ subtree = proto_item_add_subtree(item, ett_gsm_dtap_elem[DE_RR_PACKET_CH_DESC]);
+ proto_tree_add_text(tree,tvb, curr_offset, 3 ,"Data(Not decoded)");
+
+ curr_offset = curr_offset + 3;
return(curr_offset - offset);
}
@@ -5156,7 +5178,7 @@ de_rr_pow_cmd_and_acc_type(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guin
* [3] 10.5.2.29 RACH Control Parameters
*/
/*
- * [3] 10.5.2.30 Request Reference
+ * [3] 10.5.2.30 Request Reference M V 3
*/
guint8
de_rr_req_ref(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
@@ -5428,7 +5450,41 @@ de_rr_sus_cau(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar
* [3] 10.5.2.54 (void)
* [3] 10.5.2.55 (void)
* [3] 10.5.2.56 3G Target Cell
-*/
+ */
+/*
+ * 10.5.2.57 Service Support
+ */
+static const true_false_string gsm_a_rr_MBMS_multicast_value = {
+ "mobile station requires notification of multicast MBMS services",
+ "mobile station does not require notification of multicast MBMS services"
+};
+static const true_false_string gsm_a_rr_MBMS_broadcast_value = {
+ "mobile station requires notification of broadcast MBMS services",
+ "mobile station does not require notification of broadcast MBMS services"
+};
+static guint8
+de_rr_serv_sup(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_)
+{
+ guint32 curr_offset;
+
+ len = len;
+ curr_offset = offset;
+ /* bit 1
+ * 0 mobile station does not require notification of broadcast MBMS services
+ * 1 mobile station requires notification of broadcast MBMS services
+ * bit 2
+ * 0 mobile station does not require notification of multicast MBMS services
+ * 1 mobile station requires notification of multicast MBMS services
+ */
+ /* MBMS Multicast */
+ proto_tree_add_item(tree, hf_gsm_a_rr_MBMS_multicast, tvb, curr_offset, 1, FALSE);
+
+ /* MBMS Broadcast */
+ proto_tree_add_item(tree, hf_gsm_a_rr_MBMS_broadcast, tvb, curr_offset, 1, FALSE);
+ curr_offset++;
+ return(curr_offset - offset);
+}
+
/*
* [3] 10.5.2.59 Dedicated Service Information
*/
@@ -12612,8 +12668,24 @@ static guint8 (*dtap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset
* [3] 10.5.2.54 (void)
* [3] 10.5.2.55 (void)
* [3] 10.5.2.56 3G Target Cell
-*/
+ * 10.5.2.57 Service Support */
+ de_rr_serv_sup, /* 10.5.2.57 Service Support */
+/*
+ * 10.5.2.58 MBMS p-t-m Channel Description
+ */
de_rr_ded_serv_inf, /* [3] 10.5.2.59 Dedicated Service Information */
+/*
+ * 10.5.2.60 MPRACH Description
+ * 10.5.2.61 Restriction Timer
+ * 10.5.2.62 MBMS Session Identity
+ * 10.5.2.63 Reduced group or broadcast call reference
+ * 10.5.2.64 Talker Priority status
+ * 10.5.2.65 Talker Identity
+ * 10.5.2.66 Token
+ * 10.5.2.67 PS Cause
+ * 10.5.2.68 VGCS AMR Configuration
+ * 10.5.2.69 Carrier Indication
+ */
/* Mobility Management Information Elements 10.5.3 */
de_auth_param_rand, /* Authentication Parameter RAND */
@@ -12690,8 +12762,8 @@ static guint8 (*dtap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset
de_gmm_rec_npdu_lst, /* Receive N-PDU Numbers List */
de_gmm_ms_net_cap, /* MS Network Capability */
de_gmm_ms_radio_acc_cap, /* MS Radio Access Capability */
- de_gmm_cause, /* GMM Cause */
- de_gmm_rai, /* Routing Area Identification */
+ de_gmm_cause, /* GMM Cause */
+ de_gmm_rai, /* Routing Area Identification */
de_gmm_update_res, /* Update Result */
de_gmm_update_type, /* Update Type */
de_gmm_ac_ref_nr, /* A&C Reference Number */
@@ -14963,6 +15035,7 @@ dtap_mm_loc_upd_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
+
/*
* [4] 9.1.15a
*/
@@ -15034,6 +15107,188 @@ dtap_mm_tmsi_realloc_cmd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint
EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
+
+/*
+ * 9.1.2 Assignment command
+ */
+void
+dtap_rr_ass_cmd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Channel Description 2 10.5.2.5a M V 3 */
+ ELEM_MAND_V(BSSAP_PDU_TYPE_DTAP, DE_RR_CH_DSC2);
+
+ /* Power Command 10.5.2.28 M V 1 */
+ ELEM_MAND_V(BSSAP_PDU_TYPE_DTAP, DE_RR_POW_CMD);
+
+ /* 05 Frequency List 10.5.2.13 C TLV 4-132 */
+ ELEM_OPT_TLV(0x05, BSSAP_PDU_TYPE_DTAP, DE_RR_FREQ_LIST, " - Frequency List, after time");
+
+ /* 62 Cell Channel Description 10.5.2.1b O TV 17 */
+ ELEM_OPT_TLV(0x62, BSSAP_PDU_TYPE_DTAP, DE_RR_CELL_CH_DSC, "");
+
+ /* 10 Multislot Allocation 10.5.2.21b C TLV 3-12 */
+ ELEM_OPT_TLV(0x10,BSSAP_PDU_TYPE_DTAP, DE_RR_MULT_ALL, " - Description of the multislot configuration");
+
+ /* 63 Channel Mode 10.5.2.6 O TV 2 */
+ ELEM_OPT_TV(0x63,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_MODE, " - Mode of the First Channel(Channel Set 1)");
+
+ /* 11 Channel Mode 10.5.2.6 O TV 2 */
+ ELEM_OPT_TV(0x11,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_MODE, " - Mode of Channel Set 2");
+
+ /* 13 Channel Mode 10.5.2.6 O TV 2 */
+ ELEM_OPT_TV(0x13,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_MODE, " - Mode of Channel Set 3");
+
+ /* 14 Channel Mode 10.5.2.6 O TV 2 */
+ ELEM_OPT_TV(0x14,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_MODE, " - Mode of Channel Set 4");
+
+ /* 15 Channel Mode 10.5.2.6 O TV 2 */
+ ELEM_OPT_TV(0x15,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_MODE, " - Mode of Channel Set 5");
+
+ /* 16 Channel Mode 10.5.2.6 O TV 2 */
+ ELEM_OPT_TV(0x16,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_MODE, " - Mode of Channel Set 6");
+
+ /* 17 Channel Mode 10.5.2.6 O TV 2 */
+ ELEM_OPT_TV(0x17,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_MODE, " - Mode of Channel Set 7");
+
+ /* 18 Channel Mode 10.5.2.6 O TV 2 */
+ ELEM_OPT_TV(0x18,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_MODE, " - Mode of Channel Set 8");
+
+ /* 64 Channel Description 10.5.2.5 O TV 4 */
+ ELEM_OPT_TV(0x64,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_DSC, "Description of the Second Channel, after time");
+
+ /* 66 Channe l Mode 2 10.5.2.7 O TV 2 */
+ /* Mode of the Second Channel */
+
+ /* 72 Mobile Allocation 10.5.2.21 C TLV 3-10 */
+ ELEM_OPT_TLV(0x72,BSSAP_PDU_TYPE_DTAP, DE_RR_MOB_ALL, " - Mobile Allocation, after time");
+
+ /* 7C Starting Time 10.5.2.38 O TV 3 */
+ ELEM_OPT_TV(0x7C,BSSAP_PDU_TYPE_DTAP, DE_RR_STARTING_TIME, "");
+
+ /* 19 Frequency List 10.5.2.13 C TLV 4-132 */
+ ELEM_OPT_TLV(0x19, BSSAP_PDU_TYPE_DTAP, DE_RR_FREQ_LIST, " - Frequency List, before time");
+
+ /* 1C Channel Description 2 10.5.2.5a O TV 4 */
+ ELEM_OPT_TV(0x1c,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_DSC2, " - Description of the First Channel, before time");
+
+ /* 1D Channel Description 10.5.2.5 O TV 4 */
+ ELEM_OPT_TV(0x1d,BSSAP_PDU_TYPE_DTAP, DE_RR_CH_DSC, " - Description of the Second Channel, before time");
+
+ /* 1E Frequency channel sequence 10.5.2.12 C TV 10 */
+ ELEM_OPT_TV(0x1e,BSSAP_PDU_TYPE_DTAP, DE_RR_FREQ_CH_SEQ, " - Frequency channel sequence before time");
+
+ /* 21 Mobile Allocation 10.5.2.21 C TLV 3-10 */
+ ELEM_OPT_TLV(0x72,BSSAP_PDU_TYPE_DTAP, DE_RR_MOB_ALL, " - Mobile Allocation, before time");
+
+ /* 9- Cipher Mode Setting 10.5.2.9 O TV 1 */
+ ELEM_OPT_TV_SHORT(0x90,BSSAP_PDU_TYPE_DTAP, DE_RR_CIP_MODE_SET, "");
+ /* 01 VGCS target mode Indication VGCS target mode Indication 10.5.2.42a O TLV 3 */
+ ELEM_OPT_TLV(0x01,BSSAP_PDU_TYPE_DTAP, DE_RR_VGCS_TAR_MODE_IND, "");
+
+ /* 03 Multi-Rate configuration, MultiRate configuration 10.5.2.21aa O TLV 4-8 */
+ ELEM_OPT_TLV(0x03,BSSAP_PDU_TYPE_DTAP, DE_RR_MULTIRATE_CONF, "");
+
+ /* 04 VGCS Ciphering Parameters VGCS Ciphering Parameters 10.5.2.42b O TLV 3-15 */
+ ELEM_OPT_TLV(0x04,BSSAP_PDU_TYPE_DTAP, DE_RR_VGCS_CIP_PAR, "");
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
+
+}
+
+/*
+ * 9.1.3 Assignment complete
+ */
+void
+dtap_rr_ass_comp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* RR Cause RR Cause 10.5.2.31 M V 1 */
+ ELEM_MAND_V(BSSAP_PDU_TYPE_DTAP, DE_RR_CAUSE);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
+
+}
+
+/*
+ * 9.1.4 Assignment failure
+ */
+void
+dtap_rr_ass_fail(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* RR Cause RR Cause 10.5.2.31 M V 1 */
+ ELEM_MAND_V(BSSAP_PDU_TYPE_DTAP, DE_RR_CAUSE);
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
+
+}
+/*
+ * 9.1.11 Classmark change
+ */
+void
+dtap_rr_mm_cm_change(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+
+ curr_offset = offset;
+ curr_len = len;
+
+ /* Mobile Station Classmark 2 10.5.1.6 M LV 4 */
+ ELEM_MAND_LV(BSSAP_PDU_TYPE_DTAP, DE_MS_CM_2, "");
+ /* 20 Mobile Station Classmark 3 10.5.1.7 C TLV 3-34 */
+ ELEM_OPT_TLV(0x20, BSSAP_PDU_TYPE_DTAP, DE_MS_CM_3, "");
+
+ EXTRANEOUS_DATA_CHECK(curr_len, 0);
+
+}
+
+/*
+ * 9.1.13b GPRS suspension request
+ */
+void
+dtap_rr_gprs_sus_req(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
+{
+ guint32 curr_offset;
+ guint32 consumed;
+ guint curr_len;
+ curr_offset = offset;
+ curr_len = len;
+
+ /* TLLI 10.5.2.41a M V 4 */
+ ELEM_MAND_V(BSSAP_PDU_TYPE_DTAP, DE_RR_TLLI);
+
+ /* Routeing Area Identification 10.5.5.15 M V 6 */
+ ELEM_MAND_V(BSSAP_PDU_TYPE_DTAP, DE_RAI);
+ /* Suspension cause 10.5.2.47 M V 1 */
+ ELEM_MAND_V(BSSAP_PDU_TYPE_DTAP, DE_RR_SUS_CAU);
+
+ /* 01 Service Support 10.5.2.57 O TV 2 */
+ ELEM_OPT_TV_SHORT(0x01,BSSAP_PDU_TYPE_DTAP, DE_RR_SERV_SUP,"");
+
+ EXTRANEOUS_DATA_CHECK(len, curr_offset - offset);
+
+}
/* 3GPP TS 24.008 version 4.7.0 Release 4
* [3] 9.1.15
*/
@@ -15214,7 +15469,6 @@ dtap_rr_imm_ass(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len)
if(tvb_length_remaining(tvb,curr_offset) > 0)
ELEM_MAND_V(BSSAP_PDU_TYPE_DTAP, DE_RR_IA_REST_OCT);
- EXTRANEOUS_DATA_CHECK(curr_len, 0);
}
/*
* [4] 9.1.25
@@ -17567,9 +17821,9 @@ static void (*dtap_msg_rr_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset
NULL, /* Configuration Change Ack. */
NULL, /* Configuration Change Reject */
- NULL, /* Assignment Command */
- NULL, /* Assignment Complete */
- NULL, /* Assignment Failure */
+ dtap_rr_ass_cmd, /* 9.1.2 Assignment Command */
+ dtap_rr_ass_comp, /* Assignment Complete */
+ dtap_rr_ass_fail, /* Assignment Failure */
dtap_rr_ho_cmd, /* Handover Command */
NULL, /* Handover Complete */
NULL, /* Handover Failure */
@@ -17628,11 +17882,11 @@ static void (*dtap_msg_rr_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset
NULL, /* Channel Mode Modify Acknowledge */
NULL, /* Frequency Redefinition */
NULL, /* Measurement Report */
- NULL, /* Classmark Change */
+ dtap_rr_mm_cm_change, /* 9.1.11 Classmark Change */
NULL, /* Classmark Enquiry */
NULL, /* Extended Measurement Report */
NULL, /* Extended Measurement Order */
- NULL, /* GPRS Suspension Request */
+ dtap_rr_gprs_sus_req, /* 9.1.13b GPRS Suspension Request */
NULL, /* VGCS Uplink Grant */
NULL, /* Uplink Release */
@@ -18843,6 +19097,11 @@ proto_register_gsm_a(void)
FT_UINT8,BASE_DEC, VALS(protocol_discriminator_vals), 0x0f,
"Protocol discriminator", HFILL }
},
+ { &hf_gsm_a_call_prio,
+ { "Call priority", "gsm_a.call_prio",
+ FT_UINT8, BASE_DEC, VALS(gsm_a_call_prio_vals), 0x07,
+ "Call priority", HFILL }
+ },
{ &hf_gsm_a_skip_ind,
{ "Skip Indicator", "gsm_a.skip.ind",
FT_UINT8, BASE_DEC, NULL, 0xf0,
@@ -19000,6 +19259,16 @@ proto_register_gsm_a(void)
FT_UINT8,BASE_DEC, NULL, 0x3c,
"Group cipher key number", HFILL }
},
+ { &hf_gsm_a_rr_MBMS_broadcast,
+ { "MBMS Broadcast","gsm_a.rr.MBMS_broadcast",
+ FT_BOOLEAN,8, TFS(&gsm_a_rr_MBMS_broadcast_value), 0x01,
+ "MBMS Broadcast", HFILL }
+ },
+ { &hf_gsm_a_rr_MBMS_multicast,
+ { "MBMS Multicast","gsm_a.rr.MBMS_multicast",
+ FT_BOOLEAN,8, TFS(&gsm_a_rr_MBMS_multicast_value), 0x02,
+ "MBMS Multicast", HFILL }
+ },
{ &hf_gsm_a_rr_last_segment,
{ "Last Segment","gsm_a.rr.last_segment",
FT_BOOLEAN,8, TFS(&gsm_a_rr_last_segment_value), 0x01,
diff --git a/epan/dissectors/packet-rsl.c b/epan/dissectors/packet-rsl.c
index 77de9c0adc..e8981884ac 100644
--- a/epan/dissectors/packet-rsl.c
+++ b/epan/dissectors/packet-rsl.c
@@ -43,6 +43,8 @@
#include <epan/proto.h>
#include <epan/lapd_sapi.h>
+#include "packet-gsm_a.h"
+
/* Initialize the protocol and registered fields */
static int proto_rsl = -1;
@@ -66,14 +68,31 @@ static int hf_rsl_prio = -1;
static int hf_rsl_sapi = -1;
static int hf_rsl_cause = -1;
static int hf_rsl_rel_mode = -1;
+static int hf_rsl_meas_res_no = -1;
+static int hf_rsl_extension_bit = -1;
+static int hf_rsl_class = -1;
+static int hf_rsl_paging_grp = -1;
+static int hf_rsl_ch_needed = -1;
+static int hf_rsl_emlpp_prio = -1;
/* Initialize the subtree pointers */
static int ett_rsl = -1;
+static int ett_ie_link_id;
static int ett_ie_ch_no = -1;
+static int ett_ie_frame_no = -1;
+static int ett_ie_L3_inf = -1;
+static int ett_ie_ms_id = -1;
static int ett_ie_phy_ctx = -1;
+static int ett_ie_paging_grp = -1;
static int ett_ie_access_delay = -1;
static int ett_ie_req_ref = -1;
+static int ett_ie_rel_mode = -1;
+static int ett_ie_rlm_cause =-1;
static int ett_ie_full_imm_ass_inf = -1;
+static int ett_ie_ch_needed = -1;
+static int ett_ie_emlpp_prio = -1;
+static int ett_ie_cause = -1;
+static int ett_ie_meas_res_no = -1;
proto_tree *top_tree;
dissector_handle_t gsm_a_ccch_handle = NULL;
@@ -89,6 +108,10 @@ static const true_false_string rsl_na_vals = {
"Not Applicable"
};
+static const true_false_string rsl_extension_bit_value = {
+ "Extension"
+ "No Extension",
+};
/*
* 9.1 Message discriminator
@@ -105,19 +128,31 @@ static const value_string rsl_msg_disc_vals[] = {
/*
* 9.2 MESSAGE TYPE
*/
-#define RSL_MSG_TYPE_DATA_REQ 1
-#define RSL_MSG_TYPE_DATA_IND 2
-#define RSL_MSG_TYPE_ERROR_IND 3
-#define RSL_MSG_TYPE_EST_REQ 4
-#define RSL_MSG_TYPE_EST_CONF 5
-#define RSL_MSG_EST_IND 6
-#define RSL_MSG_REL_REQ 7
-#define RSL_MSG_REL_CONF 8
-#define RSL_MSG_REL_IND 9
-#define RSL_MSG_UNIT_DATA_REQ 10
-
-#define RSL_MSG_CHANRQD 19
-#define RSL_MSG_IMM_ASS_CMD 22
+#define RSL_MSG_TYPE_DATA_REQ 1
+#define RSL_MSG_TYPE_DATA_IND 2
+#define RSL_MSG_TYPE_ERROR_IND 3
+#define RSL_MSG_TYPE_EST_REQ 4
+#define RSL_MSG_TYPE_EST_CONF 5
+#define RSL_MSG_EST_IND 6
+#define RSL_MSG_REL_REQ 7
+#define RSL_MSG_REL_CONF 8
+#define RSL_MSG_REL_IND 9
+#define RSL_MSG_UNIT_DATA_REQ 10
+/* Common Channel Management/TRX Management messages */
+#define RSL_MSG_BCCH_INFO 17
+#define RSL_MSG_CCCH_LOAD_IND 18
+#define RSL_MSG_CHANRQD 19
+#define RSL_MSG_DELETE_IND 20
+#define RSL_MSG_PAGING_CMD 21
+#define RSL_MSG_IMM_ASS_CMD 22
+
+#define RSL_MSG_CHAN_ACTIV 33
+#define RSL_MSG_CHAN_ACTIV_ACK 34
+#define RSL_MSG_CHAN_ACTIV_N_ACK 35
+#define RSL_MSG_CONN_FAIL 36
+#define RSL_MSG_DEACTIVATE_SACCH 37
+
+#define RSL_MSG_MEAS_RES 40
static const value_string rsl_msg_type_vals[] = {
/* 0 0 0 0 - - - - Radio Link Layer Management messages: */
{ 0x01, "DATA REQuest" }, /* 8.3.1 */
@@ -340,7 +375,7 @@ dissect_rsl_ie_link_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
guint8 octet;
ti = proto_tree_add_text(tree, tvb,offset,2,"Link Identifier IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_phy_ctx);
+ ie_tree = proto_item_add_subtree(ti, ett_ie_link_id);
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
@@ -368,6 +403,32 @@ dissect_rsl_ie_link_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
+ /*
+ * 9.3.8 Frame Number
+ */
+static int
+dissect_rsl_ie_frame_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
+{
+ proto_item *ti;
+ proto_tree *ie_tree;
+
+ ti = proto_tree_add_text(tree, tvb,offset,0,"Frame Number");
+ ie_tree = proto_item_add_subtree(ti, ett_ie_frame_no);
+
+ /* Element identifier */
+ proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
+ offset++;
+
+ proto_tree_add_item(ie_tree, hf_rsl_req_ref_T1prim, tvb, offset, 1, FALSE);
+ proto_tree_add_item(ie_tree, hf_rsl_req_ref_T3, tvb, offset, 2, FALSE);
+ offset++;
+ proto_tree_add_item(ie_tree, hf_rsl_req_ref_T2, tvb, offset, 1, FALSE);
+ offset++;
+
+ return offset;
+}
+
+
/*
* 9.3.11 L3 Information 9.3.11 M TLV >=3
*
@@ -384,7 +445,7 @@ dissect_rsl_ie_L3_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o
guint16 length;
ti = proto_tree_add_text(tree, tvb,offset,0,"L3 Information ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_phy_ctx);
+ ie_tree = proto_item_add_subtree(ti, ett_ie_L3_inf);
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
@@ -408,7 +469,60 @@ dissect_rsl_ie_L3_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int o
return offset;
}
+/*
+ * 9.3.12 MS Identity
+ */
+static int
+dissect_rsl_ie_ms_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
+{
+ proto_item *ti;
+ proto_tree *ie_tree;
+ guint length;
+
+ ti = proto_tree_add_text(tree, tvb,offset,0,"MS Identity");
+ ie_tree = proto_item_add_subtree(ti, ett_ie_ms_id);
+
+ /* Element identifier */
+ proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
+ offset++;
+ /* Length */
+ length = tvb_get_guint8(tvb,offset);
+ proto_item_set_len(ti, length+2);
+ proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
+ offset++;
+
+ de_mid(tvb, ie_tree, offset, length, NULL, 0);
+
+ offset = offset + length;
+
+ return offset;
+
+
+}
+/*
+ * 9.3.14 Paging Group M TV 2 2
+ */
+static int
+dissect_rsl_ie_paging_grp(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
+{
+ proto_item *ti;
+ proto_tree *ie_tree;
+
+ ti = proto_tree_add_text(tree, tvb,offset,0,"Paging Group");
+ ie_tree = proto_item_add_subtree(ti, ett_ie_paging_grp);
+
+ /* Element identifier */
+ proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
+ offset++;
+
+ /* The Paging Group field (octet 2) contains the binary representation of the paging
+ * group as defined in 3GPP TS 45.002.
+ */
+ proto_tree_add_item(ie_tree, hf_rsl_paging_grp, tvb, offset, 1, FALSE);
+
+ return offset;
+}
/*
* 9.3.16 Physical Context TLV
*/
@@ -502,7 +616,7 @@ dissect_rsl_ie_rel_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
proto_tree *ie_tree;
ti = proto_tree_add_text(tree, tvb,offset,4,"Release Mode IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_req_ref);
+ ie_tree = proto_item_add_subtree(ti, ett_ie_rel_mode);
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
@@ -518,7 +632,7 @@ dissect_rsl_ie_rel_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
return offset;
}
-static const value_string rsl_cause_vals[] = {
+static const value_string rsl_rlm_cause_vals[] = {
{ 0x00, "reserved" },
{ 0x01, "timer T200 expired (N200+1) times" },
{ 0x02, "re-establishment request" },
@@ -550,7 +664,7 @@ dissect_rsl_ie_rlm_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
guint length;
ti = proto_tree_add_text(tree, tvb,offset,0,"RLM Cause IE ");
- ie_tree = proto_item_add_subtree(ti, ett_ie_full_imm_ass_inf);
+ ie_tree = proto_item_add_subtree(ti, ett_ie_rlm_cause);
/* Element identifier */
proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
@@ -571,6 +685,95 @@ dissect_rsl_ie_rlm_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
return offset;
}
+static const value_string rsl_class_vals[] = {
+ { 0x00, "Normal event" },
+ { 0x01, "Normal event" },
+ { 0x02, "Resource unavailable" },
+ { 0x03, "Service or option not available" },
+ { 0x04, "Service or option not implemented" },
+ { 0x05, "Invalid message (e.g. parameter out of range)" },
+ { 0x06, "Protocol error" },
+ { 0x07, "Interworking" },
+ { 0, NULL }
+};
+
+ /*
+ * 9.3.26 Cause
+ */
+static int
+dissect_rsl_ie_cause(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
+{
+ proto_item *ti;
+ proto_tree *ie_tree;
+ guint length;
+ guint8 octet;
+ int ie_offset;
+
+ ti = proto_tree_add_text(tree, tvb,offset,0,"Cause IE ");
+ ie_tree = proto_item_add_subtree(ti, ett_ie_cause);
+
+ /* Element identifier */
+ proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
+ offset++;
+ /* Length */
+ length = tvb_get_guint8(tvb,offset);
+ proto_item_set_len(ti, length+2);
+ proto_tree_add_item(ie_tree, hf_rsl_ie_length, tvb, offset, 1, FALSE);
+ offset++;
+ ie_offset = offset;
+
+ /* Cause Value */
+ octet = tvb_get_guint8(tvb,offset);
+ proto_tree_add_item(tree, hf_rsl_extension_bit, tvb, offset, 1, FALSE);
+ proto_tree_add_item(tree, hf_rsl_class, tvb, offset, 1, FALSE);
+ if ((octet & 0x80) == 80)
+ offset++;
+
+ /* Cause Extension*/
+ /* Diagnostic(s) if any */
+ return ie_offset+length;
+}
+/*
+ * 9.3.27 Measurement result number
+ */
+static int
+dissect_rsl_ie_meas_res_no(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
+{
+ proto_item *ti;
+ proto_tree *ie_tree;
+ ti = proto_tree_add_text(tree, tvb,offset,0,"Measurement result number IE ");
+ ie_tree = proto_item_add_subtree(ti, ett_ie_meas_res_no);
+
+ /* Element identifier */
+ proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
+ offset++;
+
+ /* Measurement result number */
+ proto_tree_add_item(ie_tree, hf_rsl_meas_res_no, tvb, offset, 1, FALSE);
+ offset++;
+
+ return offset;
+}
+/*
+ * 9.3.28 Message Identifier
+ */
+static int
+dissect_rsl_ie_message_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
+{
+ proto_item *ti;
+ proto_tree *ie_tree;
+ ti = proto_tree_add_text(tree, tvb,offset,0,"Measurement result number IE ");
+ ie_tree = proto_item_add_subtree(ti, ett_ie_meas_res_no);
+
+ /* Element identifier */
+ proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
+ offset++;
+ /* Message Type */
+ proto_tree_add_item(tree, hf_rsl_msg_type, tvb, offset, 1, FALSE);
+ offset++;
+ return offset;
+}
+
/*
* 9.3.35 Full Immediate Assign Info TLV 25
*/
@@ -608,6 +811,78 @@ dissect_rsl_ie_full_imm_ass_inf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
return offset;
}
+
+/*
+ * 9.3.40 Channel Needed
+ */
+static const value_string rsl_ch_needed_vals[] = {
+ { 0x00, "Any Channel" },
+ { 0x01, "SDCCH" },
+ { 0x02, "TCH/F (Full rate)" },
+ { 0x03, "TCH/F or TCH/H (Dual rate)" },
+ { 0, NULL }
+};
+
+static int
+dissect_rsl_ie_ch_needed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
+{
+ proto_item *ti;
+ proto_tree *ie_tree;
+
+
+ ti = proto_tree_add_text(tree, tvb,offset,0,"Channel Needed");
+ ie_tree = proto_item_add_subtree(ti, ett_ie_ch_needed);
+
+ /* Element identifier */
+ proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
+ offset++;
+
+ /* Channel */
+ proto_tree_add_item(ie_tree, hf_rsl_ch_needed, tvb, offset, 1, FALSE);
+ offset++;
+
+ return offset;
+}
+
+/*
+ * 9.3.49 eMLPP Priority
+ */
+static const value_string rsl_emlpp_prio_vals[] = {
+ { 0x00, "no priority applied" },
+ { 0x01, "call priority level 4" },
+ { 0x02, "call priority level 3" },
+ { 0x03, "call priority level 2" },
+ { 0x04, "call priority level 1" },
+ { 0x05, "call priority level 0" },
+ { 0x06, "call priority level B" },
+ { 0x07, "call priority level A" },
+ { 0, NULL }
+};
+
+static int
+dissect_rsl_ie_emlpp_prio(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
+{
+ proto_item *ti;
+ proto_tree *ie_tree;
+
+ ti = proto_tree_add_text(tree, tvb,offset,0,"eMLPP Priority");
+ ie_tree = proto_item_add_subtree(ti, ett_ie_emlpp_prio);
+
+ /* Element identifier */
+ proto_tree_add_item(ie_tree, hf_rsl_ie_id, tvb, offset, 1, FALSE);
+ offset++;
+
+ /* The call priority field (bit 3 to 1 of octet 2) is coded in the same way
+ * as the call priority field (bit 3 to 1 of octet 5) in the
+ * Descriptive group or broadcast call reference information element
+ * as defined in 3GPP TS 24.008.
+ */
+ proto_tree_add_item(ie_tree, hf_rsl_emlpp_prio, tvb, offset, 1, FALSE);
+ offset++;
+
+ return offset;
+}
+
static int
dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
{
@@ -710,7 +985,7 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
/* Common Channel Management/TRX Management messages: */
/* 8.5.3 */
- case RSL_MSG_CHANRQD:
+ case RSL_MSG_CHANRQD: /* 19 */
/* Channel number 9.3.1 M TV 2 */
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset);
/* Request Reference 9.3.19 M TV 4 */
@@ -721,6 +996,28 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
if(tvb_length_remaining(tvb,offset) > 0)
offset = dissect_rsl_ie_phy_ctx(tvb, pinfo, tree, offset);
break;
+ /* 8.5.4 DELETE INDICATION */
+ case RSL_MSG_DELETE_IND: /* 20 */
+ /* Channel number 9.3.1 M TV 2 */
+ offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset);
+ /* Full Imm. Assign Info 9.3.35 M TLV 25 */
+ offset = dissect_rsl_ie_full_imm_ass_inf(tvb, pinfo, tree, offset);
+ break;
+ case RSL_MSG_PAGING_CMD: /* 21 */
+ /* Channel number 9.3.1 M TV 2 */
+ offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset);
+ /* Paging Group 9.3.14 M TV 2 2 */
+ offset = dissect_rsl_ie_paging_grp(tvb, pinfo, tree, offset);
+ /* MS Identity 9.3.12 M TLV 2-10 2 */
+ offset = dissect_rsl_ie_ms_id(tvb, pinfo, tree, offset);
+ /* Channel Needed 9.3.40 O 1) TV 2 2 */
+ if(tvb_length_remaining(tvb,offset) > 0)
+ offset = dissect_rsl_ie_ch_needed(tvb, pinfo, tree, offset);
+ /* eMLPP Priority 9.3.49 O 2) TV 2 2 */
+ if(tvb_length_remaining(tvb,offset) > 0)
+ offset = dissect_rsl_ie_emlpp_prio(tvb, pinfo, tree, offset);
+ break;
+ /* 8.5.6 */
case RSL_MSG_IMM_ASS_CMD:
/* Channel number 9.3.1 M TV 2 */
offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset);
@@ -728,6 +1025,72 @@ dissct_rsl_msg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset)
offset = dissect_rsl_ie_full_imm_ass_inf(tvb, pinfo, tree, offset);
break;
/* Dedicated Channel Management messages: */
+ /* 8.4.1 CHANNEL ACTIVATION 33*/
+ case RSL_MSG_CHAN_ACTIV:
+ break;
+ /* Channel number 9.3.1 M TV 2 */
+ /* Activation Type 9.3.3 M TV 2 */
+ /* Channel Mode 9.3.6 M TLV 8-9 */
+ /* Channel Identification 9.3.5 O 7) TLV 8 */
+ /* Encryption information 9.3.7 O 1) TLV >=3 */
+ /* Handover Reference 9.3.9 C 2) TV 2 */
+ /* BS Power 9.3.4 O 3) TV 2 */
+ /* MS Power 9.3.13 O 3) TV 2 */
+ /* Timing Advance 9.3.24 C 3) 4) TV 2 */
+ /* BS Power Parameters 9.3.32 O 5) TLV >=2 */
+ /* MS Power Parameters 9.3.31 O 5) TLV >=2 */
+ /* Physical Context 9.3.16 O 6) TLV >=2 */
+ /* SACCH Information 9.3.29 O 8) TLV >=3 */
+ /* UIC 9.3.50 O 9) TLV 3 */
+ /* Main channel reference 9.3.51 O 10) TV 2 */
+ /* MultiRate configuration 9.3.52 O 11) TLV >=4 */
+ /* MultiRate Control 9.3.53 O 12) TV 2 */
+ /* Supported Codec Types 9.3.54 O 12) TLV >=5 */
+ /* TFO transparent container 9.3.59 O 12) TLV >=3 */
+
+ /* 8.4.2 CHANNEL ACTIVATION ACKNOWLEDGE 34*/
+ case RSL_MSG_CHAN_ACTIV_ACK:
+ /* Channel number 9.3.1 M TV 2 */
+ offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset);
+ /* Frame number 9.3.8 M TV 3 */
+ offset = dissect_rsl_ie_frame_no(tvb, pinfo, tree, offset);
+ break;
+ case RSL_MSG_CHAN_ACTIV_N_ACK:
+ /* 8.4.3 CHANNEL ACTIVATION NEGATIVE ACKNOWLEDGE */
+ /* Channel number 9.3.1 M TV 2 */
+ offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset);
+ /* Cause 9.3.26 M TLV >=3 */
+ offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset);
+ break;
+ /* 8.4.4 CONNECTION FAILURE INDICATION */
+ case RSL_MSG_CONN_FAIL:
+ /* Channel number 9.3.1 M TV 2 */
+ offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset);
+ /* Cause 9.3.26 M TLV >=3 */
+ offset = dissect_rsl_ie_cause(tvb, pinfo, tree, offset);
+ break;
+ /* 8.4.5 DEACTIVATE SACCH */
+ case RSL_MSG_DEACTIVATE_SACCH:
+ /* Channel number 9.3.1 M TV 2 */
+ offset = dissect_rsl_ie_ch_no(tvb, pinfo, tree, offset);
+ break;
+ /* 8.4.6 ENCRYPTION COMMAND */
+ /* Encryption information 9.3.7 M TLV >=3 */
+ /* Link Identifier 9.3.2 M TV 2 */
+ /* L3 Info (CIPH MOD CMD) 9.3.11 M TLV 6 */
+ /* 8.4.7 HANDOVER DETECTION */
+ /* Channel number 9.3.1 M TV 2 */
+ /* Access Delay 9.3.17 O 1) TV 2 */
+ /* 8.4.8 MEASUREMENT RESULT 40 */
+ case RSL_MSG_MEAS_RES:
+ /* Channel number 9.3.1 M TV 2 */
+ /* Measurement result number 9.3.27 M TV 2 */
+ /* Uplink Measurements 9.3.25 M TLV >=5 */
+ /* BS Power 9.3.4 M TV 2 */
+ /* L1 Information 9.3.10 O 1) TV 3 */
+ /* L3 Info (MEAS REP, EXT MEAS REP or ENH MEAS REP) 9.3.11 O 1) TLV 21*/
+ /* MS Timing Offset 9.3.37 O 2) TV 2 */
+ break;
default:
break;
}
@@ -869,7 +1232,7 @@ void proto_register_rsl(void)
},
{ &hf_rsl_cause,
{ "Cause", "rsl.cause",
- FT_UINT8, BASE_DEC, VALS(rsl_cause_vals), 0x7f,
+ FT_UINT8, BASE_DEC, VALS(rsl_rlm_cause_vals), 0x7f,
"Cause", HFILL }
},
{ &hf_rsl_rel_mode,
@@ -877,15 +1240,54 @@ void proto_register_rsl(void)
FT_UINT8, BASE_DEC, VALS(rel_mode_vals), 0x01,
"Relese Mode", HFILL }
},
-
+ { &hf_rsl_meas_res_no,
+ { "Measurement result number", "rsl.meas_res_no",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Measurement result number", HFILL }
+ },
+ { &hf_rsl_extension_bit,
+ { "Extension", "rsl.extension_bit",
+ FT_BOOLEAN, 8, TFS(&rsl_extension_bit_value), 0x80,
+ "Extension", HFILL }},
+ { &hf_rsl_class,
+ { "Class", "rsl.class",
+ FT_UINT8, BASE_DEC, VALS(rsl_class_vals), 0x70,
+ "Class", HFILL }
+ },
+ { &hf_rsl_paging_grp,
+ { "Paging Group", "rsl.paging_grp",
+ FT_UINT8, BASE_DEC, NULL, 0x0,
+ "Paging Group", HFILL }
+ },
+ { &hf_rsl_ch_needed,
+ { "Channel Needed", "rsl.class",
+ FT_UINT8, BASE_DEC, VALS(rsl_ch_needed_vals), 0x03,
+ "Channel Needed", HFILL }
+ },
+ { &hf_rsl_emlpp_prio,
+ { "eMLPP Priority", "rsl.class",
+ FT_UINT8, BASE_DEC, VALS(rsl_emlpp_prio_vals), 0x03,
+ "eMLPP Priority", HFILL }
+ },
};
static gint *ett[] = {
&ett_rsl,
+ &ett_ie_link_id,
&ett_ie_ch_no,
+ &ett_ie_frame_no,
+ &ett_ie_L3_inf,
+ &ett_ie_ms_id,
&ett_ie_phy_ctx,
+ &ett_ie_paging_grp,
&ett_ie_access_delay,
&ett_ie_req_ref,
+ &ett_ie_rel_mode,
+ &ett_ie_rlm_cause,
&ett_ie_full_imm_ass_inf,
+ &ett_ie_ch_needed,
+ &ett_ie_emlpp_prio,
+ &ett_ie_cause,
+ &ett_ie_meas_res_no,
};
/* Register the protocol name and description */