diff options
author | martinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-05-13 09:36:42 +0000 |
---|---|---|
committer | martinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7> | 2009-05-13 09:36:42 +0000 |
commit | 037d5631dc99ac81b623f4a5851102cdbe608e15 (patch) | |
tree | 6262d853d61580fab363d6049f6ba13216960021 /epan/dissectors/packet-catapult-dct2000.c | |
parent | 5d5b7e8a9137ea7a309930e1f4e402c496b1d53a (diff) |
- add direction filter to PDCP
- fix PDCP fields ("pdcp.*" -> "pdcp-lte.*")
- improve PDCP info column output (to be more like RLC)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@28342 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-catapult-dct2000.c')
-rw-r--r-- | epan/dissectors/packet-catapult-dct2000.c | 56 |
1 files changed, 42 insertions, 14 deletions
diff --git a/epan/dissectors/packet-catapult-dct2000.c b/epan/dissectors/packet-catapult-dct2000.c index a42079c52f..49e813735b 100644 --- a/epan/dissectors/packet-catapult-dct2000.c +++ b/epan/dissectors/packet-catapult-dct2000.c @@ -143,16 +143,12 @@ static const value_string bcch_transport_vals[] = { #define RLC_TR_DATA_CONF 0x83 static const value_string rlc_op_vals[] = { - { RLC_AM_DATA_REQ, "AM_DATA_REQ" }, - { RLC_AM_DATA_IND, "AM_DATA_IND" }, - { RLC_UM_DATA_REQ, "UM_DATA_REQ"}, - { RLC_UM_DATA_IND, "UM_DATA_IND"}, - { RLC_TR_DATA_REQ, "TR_DATA_REQ"}, - { RLC_TR_DATA_IND, "TR_DATA_IND"}, - { RLC_AM_DATA_REQ, "AM_DATA_REQ"}, - { RLC_AM_DATA_IND, "AM_DATA_IND"}, - { RLC_UM_DATA_REQ, "UM_DATA_REQ"}, - { RLC_UM_DATA_IND, "UM_DATA_IND"}, + { RLC_AM_DATA_REQ, "[UL] [AM]" }, + { RLC_AM_DATA_IND, "[DL] [AM]" }, + { RLC_UM_DATA_REQ, "[UL] [UM]"}, + { RLC_UM_DATA_IND, "[DL] [UM]"}, + { RLC_TR_DATA_REQ, "[UL] [TM]"}, + { RLC_TR_DATA_IND, "[DL] [TM]"}, { 0, NULL } }; @@ -621,7 +617,8 @@ static gboolean find_sctpprim_variant3_data_offset(tvbuff_t *tvb, int *data_offs /* Dissect an RRC LTE frame by first parsing the header entries then passing - the data to the RRC dissector, according to direction and channel type */ + the data to the RRC dissector, according to direction and channel type. + TODO: factor out common code between this function and dissect_pdcp_lte() */ void dissect_rrc_lte(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree) { @@ -675,11 +672,20 @@ void dissect_rrc_lte(tvbuff_t *tvb, gint offset, switch (tag) { case 0: offset++; + if (check_col(pinfo->cinfo, COL_INFO)) { + col_append_fstr(pinfo->cinfo, COL_INFO, " SRB:%u", + tvb_get_guint8(tvb, offset)); + } proto_tree_add_item(tree, hf_catapult_dct2000_lte_srbid, tvb, offset, 1, FALSE); + break; case 1: offset++; + if (check_col(pinfo->cinfo, COL_INFO)) { + col_append_fstr(pinfo->cinfo, COL_INFO, " DRB:%u", + tvb_get_guint8(tvb, offset)); + } proto_tree_add_item(tree, hf_catapult_dct2000_lte_drbid, tvb, offset, 1, FALSE); break; @@ -706,6 +712,11 @@ void dissect_rrc_lte(tvbuff_t *tvb, gint offset, proto_tree_add_item(tree, hf_catapult_dct2000_lte_rlc_channel_type, tvb, offset, 1, FALSE); logicalChannelType = (LogicalChannelType)tvb_get_guint8(tvb, offset++); + if (check_col(pinfo->cinfo, COL_INFO)) { + col_append_fstr(pinfo->cinfo, COL_INFO, " %s", + val_to_str(logicalChannelType, rlc_logical_channel_vals, + "UNKNOWN-CHANNEL")); + } switch (logicalChannelType) { case Channel_BCCH: @@ -834,10 +845,10 @@ void dissect_pdcp_lte(tvbuff_t *tvb, gint offset, case RLC_AM_DATA_REQ: case RLC_UM_DATA_REQ: case RLC_TR_DATA_REQ: - p_pdcp_lte_info->Direction = DIRECTION_UPLINK; + p_pdcp_lte_info->direction = DIRECTION_UPLINK; default: - p_pdcp_lte_info->Direction = DIRECTION_DOWNLINK; + p_pdcp_lte_info->direction = DIRECTION_DOWNLINK; } /* Parse header */ @@ -863,6 +874,10 @@ void dissect_pdcp_lte(tvbuff_t *tvb, gint offset, /* UEId */ proto_tree_add_item(tree, hf_catapult_dct2000_lte_ueid, tvb, offset, 2, FALSE); + if (check_col(pinfo->cinfo, COL_INFO)) { + col_append_fstr(pinfo->cinfo, COL_INFO, + " UEId=%u", tvb_get_ntohs(tvb, offset)); + } offset += 2; /* Get tag of channel type */ @@ -871,11 +886,19 @@ void dissect_pdcp_lte(tvbuff_t *tvb, gint offset, switch (tag) { case 0: offset++; + if (check_col(pinfo->cinfo, COL_INFO)) { + col_append_fstr(pinfo->cinfo, COL_INFO, " SRB:%u", + tvb_get_guint8(tvb, offset)); + } proto_tree_add_item(tree, hf_catapult_dct2000_lte_srbid, tvb, offset++, 1, FALSE); break; case 1: offset++; + if (check_col(pinfo->cinfo, COL_INFO)) { + col_append_fstr(pinfo->cinfo, COL_INFO, " DRB:%u", + tvb_get_guint8(tvb, offset)); + } proto_tree_add_item(tree, hf_catapult_dct2000_lte_drbid, tvb, offset++, 1, FALSE); break; @@ -902,6 +925,11 @@ void dissect_pdcp_lte(tvbuff_t *tvb, gint offset, proto_tree_add_item(tree, hf_catapult_dct2000_lte_rlc_channel_type, tvb, offset, 1, FALSE); p_pdcp_lte_info->channelType = tvb_get_guint8(tvb, offset++); + if (check_col(pinfo->cinfo, COL_INFO)) { + col_append_fstr(pinfo->cinfo, COL_INFO, " %s", + val_to_str(p_pdcp_lte_info->channelType, rlc_logical_channel_vals, + "UNKNOWN-CHANNEL")); + } switch (p_pdcp_lte_info->channelType) { case Channel_BCCH: @@ -909,7 +937,7 @@ void dissect_pdcp_lte(tvbuff_t *tvb, gint offset, offset++; /* Transport channel type */ - p_pdcp_lte_info->BCCHTransport = tvb_get_guint8(tvb, offset); + p_pdcp_lte_info->BCCHTransport = (LogicalChannelType)tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_catapult_dct2000_lte_bcch_transport, tvb, offset, 1, FALSE); offset++; |