diff options
author | Anders Broman <anders.broman@ericsson.com> | 2006-05-17 18:09:14 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2006-05-17 18:09:14 +0000 |
commit | 2002225c7951c80816a7903edffee6005aebb650 (patch) | |
tree | 2890ae6138d5b444017e9cf11fad6ad07b3c295b | |
parent | 1c69907dcd6dc3561a1b49ef1e4b1f1796f63876 (diff) |
Fix BUGs:
955 UMA: Handover Command message not decoded.
956 UMA: multirate-configuration not decoded correctly .
957 UMA: Received Signal Level List not decoded.
svn path=/trunk/; revision=18179
-rw-r--r-- | epan/dissectors/packet-gsm_a.c | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-gsm_a.h | 9 | ||||
-rw-r--r-- | epan/dissectors/packet-uma.c | 90 |
3 files changed, 34 insertions, 71 deletions
diff --git a/epan/dissectors/packet-gsm_a.c b/epan/dissectors/packet-gsm_a.c index 2673703e37..22fb413bde 100644 --- a/epan/dissectors/packet-gsm_a.c +++ b/epan/dissectors/packet-gsm_a.c @@ -4541,7 +4541,7 @@ static const true_false_string gsm_a_rr_set_of_amr_codec_modes = { -static guint8 +guint8 de_rr_multirate_conf(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_) { guint32 curr_offset; @@ -12507,7 +12507,7 @@ static guint8 (*dtap_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, guint32 offset de_mid, /* Mobile Identity */ de_ms_cm_1, /* Mobile Station Classmark 1 */ de_ms_cm_2, /* Mobile Station Classmark 2 */ - NULL, /* Mobile Station Classmark 3 */ + NULL, /* Mobile Station Classmark 3 */ de_d_gb_call_ref, /* Descriptive group or broadcast call reference */ NULL /* handled inline */, /* Group Cipher Key Number */ de_pd_sapi, /* PD and SAPI $(CCBS)$ */ @@ -15041,7 +15041,7 @@ dtap_mm_tmsi_realloc_cmd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint EXTRANEOUS_DATA_CHECK(curr_len, 0); } -/* +/* 3GPP TS 24.008 version 4.7.0 Release 4 * [3] 9.1.15 */ void diff --git a/epan/dissectors/packet-gsm_a.h b/epan/dissectors/packet-gsm_a.h index f809c00d9b..ff98e99884 100644 --- a/epan/dissectors/packet-gsm_a.h +++ b/epan/dissectors/packet-gsm_a.h @@ -81,16 +81,17 @@ guint8 de_gmm_rai(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gc guint8 de_gmm_ms_radio_acc_cap(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint8 de_rr_cause(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); -guint8 de_rr_chnl_needed(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_); -guint8 de_rr_cip_mode_set(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint8 de_rr_cell_dsc(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint8 de_rr_ch_mode(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); +guint8 de_rr_chnl_needed(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_); +guint8 de_rr_cip_mode_set(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint8 de_rr_cm_enq_mask(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); -guint8 de_rr_tlli(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); +guint8 de_rr_multirate_conf(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_); guint8 de_rr_sus_cau(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); -guint8 de_rr_chnl_needed(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_); +guint8 de_rr_tlli(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint8 de_rej_cause(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_); + void dtap_rr_ho_cmd(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len); /* diff --git a/epan/dissectors/packet-uma.c b/epan/dissectors/packet-uma.c index f801377b6e..8ce397bbfd 100644 --- a/epan/dissectors/packet-uma.c +++ b/epan/dissectors/packet-uma.c @@ -172,10 +172,6 @@ static int hf_uma_urr_channel = -1; static int hf_uma_urr_PDU_in_error = -1; static int hf_uma_urr_sample_size = -1; static int hf_uma_urr_payload_type = -1; -static int hf_uma_urr_multirate_speech_ver = -1; -static int hf_uma_urr_NCSB = -1; -static int hf_uma_urr_ICMI = -1; -static int hf_uma_urr_start_mode = -1; static int hf_uma_urr_LLC_PDU = -1; static int hf_uma_urr_LBLI = -1; static int hf_uma_urr_RI = -1; @@ -201,6 +197,7 @@ static int hf_uma_urr_GPRS_port = -1; static int hf_uma_urr_UNC_tcp_port = -1; static int hf_uma_urr_RTP_port = -1; static int hf_uma_urr_RTCP_port = -1; +static int hf_uma_urr_RXLEV_NCELL = -1; /* Initialize the subtree pointers */ static int ett_uma = -1; @@ -714,24 +711,6 @@ static const value_string sample_size_vals[] = { { 0, NULL } }; -/* Multirate speech version Octet 3 Bits 8 7 6 */ -static const value_string multirate_speech_ver_vals[] = { - { 1, "Adaptive Multirate speech version 1"}, - { 2, "Adaptive Multirate speech version 2"}, - { 0, NULL } -}; -/* Bit 5 NSCB: Noise Suppression Control Bit */ -static const value_string NSCB_vals[] = { - { 0, "Noise Suppression can be used (default)"}, - { 1, "Noise Suppression shall be turned off"}, - { 0, NULL } -}; -/* Bit 4 ICMI: Initial Codec Mode Indicator */ -static const value_string ICMI_vals[] = { - { 0, "The initial codec mode is defined by the implicit rule provided in 3GPP TS 05.09"}, - { 1, "The initial codec mode is defined by the Start Mode field"}, - { 0, NULL } -}; /* MPS, Manual PLMN Selection indicator (octet 3) */ static const value_string mps_vals[] = { @@ -1078,8 +1057,8 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) /* Handover From UMAN Command * If the target RAT is GERAN, the rest of the IE is coded as HANDOVER COMMAND message in [TS 44.018] * TODO: Find out RAT target - * dtap_rr_ho_cmd(tvb, urr_ie_tree, offset, ie_len); */ + dtap_rr_ho_cmd(tvb, urr_ie_tree, offset, ie_len); /* * If the target RAT is UTRAN, the rest of the IE is coded as * HANDOVER TO UTRAN COMMAND message in [TS 25.331]. @@ -1190,28 +1169,8 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) case 55: /* Multi-rate Configuration * The rest of the IE is coded as in [TS 44.018], not including IEI and length, if present - * Octet 3 Multirate speech version NSCB ICMI spare Start mode */ - proto_tree_add_item(urr_ie_tree, hf_uma_urr_multirate_speech_ver, tvb, ie_offset, 1, FALSE); - proto_tree_add_item(urr_ie_tree, hf_uma_urr_NCSB, tvb, ie_offset, 1, FALSE); - proto_tree_add_item(urr_ie_tree, hf_uma_urr_ICMI, tvb, ie_offset, 1, FALSE); - /* The initial codec mode is coded as in 3GPP TS 45.009 */ - proto_tree_add_item(urr_ie_tree, hf_uma_urr_start_mode, tvb, ie_offset, 1, FALSE); - octet = ( tvb_get_guint8(tvb,ie_offset) &0xe0 ) >> 5; - ie_offset++; - switch ( octet){ - case 1: - /* Adaptive Multirate speech version 1 */ - /* Set of AMR codec modes */ - break; - case 2: - /* Adaptive Multirate speech version 2 */ - break; - default: - proto_tree_add_text(urr_ie_tree,tvb,ie_offset,ie_len,"Unknown version"); - break; - } - ie_offset++; + de_rr_multirate_conf(tvb, urr_ie_tree, ie_offset, ie_len, NULL, 0); break; case 56: /* Mobile Station Classmark 3 @@ -1320,6 +1279,10 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) /* 11.2.70 Received Signal Level List */ case 70: /* Received Signal Level List */ + while(ie_offset<=(offset + ie_len)){ + proto_tree_add_item(urr_ie_tree, hf_uma_urr_RXLEV_NCELL, tvb, ie_offset, 1, FALSE); + ie_offset++; + } break; /* 11.2.71 Required UMA Services */ case 71: @@ -1491,6 +1454,20 @@ dissect_uma_IE(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset) rtcp_add_address(pinfo, &src_addr, RTCP_UDP_port, 0, "UMA", pinfo->fd->num); } break; + case 106: + /* 11.2.70 GERAN Received Signal Level List */ + while(ie_offset<=(offset + ie_len)){ + proto_tree_add_item(urr_ie_tree, hf_uma_urr_RXLEV_NCELL, tvb, ie_offset, 1, FALSE); + ie_offset++; + } + break; + case 107: + /* 11.2.70 UTRAN Received Signal Level List */ + while(ie_offset<=(offset + ie_len)){ + proto_tree_add_item(urr_ie_tree, hf_uma_urr_RXLEV_NCELL, tvb, ie_offset, 1, FALSE); + ie_offset++; + } + break; default: proto_tree_add_text(urr_ie_tree,tvb,ie_offset,ie_len,"DATA"); break; @@ -2109,26 +2086,6 @@ proto_register_uma(void) FT_UINT8,BASE_DEC, NULL, 0x0, "Payload Type", HFILL } }, - { &hf_uma_urr_multirate_speech_ver, - { "Multirate speech version","uma.urr.multirate_speech_ver", - FT_UINT8,BASE_DEC, VALS(multirate_speech_ver_vals), 0xe0, - "Multirate speech version", HFILL } - }, - { &hf_uma_urr_NCSB, - { "NSCB: Noise Suppression Control Bit","uma.urr.NCSB", - FT_UINT8,BASE_DEC, VALS(NSCB_vals), 0x10, - "NSCB: Noise Suppression Control Bit", HFILL } - }, - { &hf_uma_urr_ICMI, - { "ICMI: Initial Codec Mode Indicator","uma.urr.ICMI", - FT_UINT8,BASE_DEC, VALS(ICMI_vals), 0x8, - "ICMI: Initial Codec Mode Indicator", HFILL } - }, - { &hf_uma_urr_start_mode, - { "Start Mode","uma.urr.start_mode", - FT_UINT8,BASE_DEC, NULL, 0x3, - "Start Mode", HFILL } - }, { &hf_uma_urr_LLC_PDU, { "LLC-PDU","uma.urr.llc_pdu", FT_BYTES,BASE_HEX, NULL, 0x0, @@ -2254,6 +2211,11 @@ proto_register_uma(void) FT_UINT16,BASE_DEC, NULL, 0x0, "RTCP UDP port", HFILL } }, + { &hf_uma_urr_RXLEV_NCELL, + { "RX Level","uma.urr.rxlevel", + FT_UINT8,BASE_DEC, NULL, 0x0, + "RX Level", HFILL } + }, }; /* Setup protocol subtree array */ |