aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-umts_fp.c
diff options
context:
space:
mode:
authormartinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7>2010-10-08 11:03:08 +0000
committermartinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7>2010-10-08 11:03:08 +0000
commit63181490850d14b772c8878cb695d0f8537853d7 (patch)
tree9c0d5bd780b9d708fd2f0cc4f4c19ab62caf3041 /epan/dissectors/packet-umts_fp.c
parent06556ad508c3e4fe13250e3e9c40b2c9bf52ef6b (diff)
From Tobias Witek (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5283)
epan/dissectors/packet-umts_fp.c * Added mac subdissector (MAC) call to HSDSCH TYPE2 frames epan/dissectors/packet-umts_mac.c * Added support for HSDSCH TYPE2 frames by means of not nibble-shifting (4 bits) the SDU if MAC-ehs is used epan/dissectors/packet-rlc.c * Added support for "Use special value of the HE field" (3gpp 25.332-7a0 9.2.2.7) commonly used for Release 7 HSDPA. REMARK: although the specification mandates that the special value is only allowed when activated by higher layers (RRC), it is interpreted unconditionally. We assume this is OK, because a different use in future specifications is very unlikely. epan/dissectors/packet-fp_hint.c * Added decoding of MAC-ehs indicator for HSDSCH frames * Bumped fpi->release from 6 to 7 to enable proper HSDSCH TYPE2 frame decoding in the UTMS MAC parser. In general, this appears not to affect decoding of (conformant) FP frames of pevious releases. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@34433 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-umts_fp.c')
-rw-r--r--epan/dissectors/packet-umts_fp.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/epan/dissectors/packet-umts_fp.c b/epan/dissectors/packet-umts_fp.c
index e8682ad578..0f2eb88451 100644
--- a/epan/dissectors/packet-umts_fp.c
+++ b/epan/dissectors/packet-umts_fp.c
@@ -639,6 +639,7 @@ static int dissect_macd_pdu_data_type_2(tvbuff_t *tvb, packet_info *pinfo, proto
proto_item *pdus_ti = NULL;
proto_tree *data_tree = NULL;
int first_offset = offset;
+ gboolean dissected = FALSE;
/* Add data subtree */
if (tree)
@@ -659,6 +660,11 @@ static int dissect_macd_pdu_data_type_2(tvbuff_t *tvb, packet_info *pinfo, proto
pdu_ti = proto_tree_add_item(data_tree, hf_fp_mac_d_pdu, tvb,
offset, length, FALSE);
proto_item_set_text(pdu_ti, "MAC-d PDU (PDU %u)", pdu+1);
+ if (preferences_call_mac_dissectors) {
+ tvbuff_t *next_tvb = tvb_new_subset(tvb, offset, length, -1);
+ call_dissector(mac_fdd_hsdsch_handle, next_tvb, pinfo, top_level_tree);
+ dissected = TRUE;
+ }
}
/* Advance offset */
@@ -669,8 +675,10 @@ static int dissect_macd_pdu_data_type_2(tvbuff_t *tvb, packet_info *pinfo, proto
proto_item_set_len(pdus_ti, offset-first_offset);
/* Show summary in info column */
- col_append_fstr(pinfo->cinfo, COL_INFO, " %u PDUs of %u bits",
- number_of_pdus, length*8);
+ if (!dissected) {
+ col_append_fstr(pinfo->cinfo, COL_INFO, " %u PDUs of %u bits",
+ number_of_pdus, length*8);
+ }
return offset;
}