aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-umts_fp.c
diff options
context:
space:
mode:
authorS. Shapira <sswsdev@gmail.com>2017-02-21 20:54:01 +0200
committerAnders Broman <a.broman58@gmail.com>2017-02-22 05:36:46 +0000
commite88d4459811f8cc4715b462d08e0c5bca8875a19 (patch)
treea8c546b42e5b1fdf9a7c8060d98fc39fe92b7aaa /epan/dissectors/packet-umts_fp.c
parent882fa722c02059ed5d59d77a5e3a5d6578eed828 (diff)
Faking different U-RNTIs for different CCCH streams.
Change is in the FP dissector but it's effect is in the RLC dissector's conversation finding logic (which uses the U-RNTI). Bug: 13423 Change-Id: Ice2302a07e644d0cc744e9925df03acb722d3184 Reviewed-on: https://code.wireshark.org/review/20232 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-umts_fp.c')
-rw-r--r--epan/dissectors/packet-umts_fp.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/epan/dissectors/packet-umts_fp.c b/epan/dissectors/packet-umts_fp.c
index 236a4b083d..e384ebcac2 100644
--- a/epan/dissectors/packet-umts_fp.c
+++ b/epan/dissectors/packet-umts_fp.c
@@ -3908,7 +3908,8 @@ make_fake_lchid(packet_info *pinfo _U_, gint trchld)
* for the channel!
*/
static fp_info *
-fp_set_per_packet_inf_from_conv(umts_fp_conversation_info_t *p_conv_data,
+fp_set_per_packet_inf_from_conv(conversation_t *p_conv,
+ umts_fp_conversation_info_t *p_conv_data,
tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree _U_)
{
@@ -4188,8 +4189,8 @@ fp_set_per_packet_inf_from_conv(umts_fp_conversation_info_t *p_conv_data,
/* Set RLC data */
rlcinf = wmem_new0(wmem_file_scope(), rlc_info);
/* Make configurable ?(avaliable in NBAP?) */
- /* For RLC re-assembly to work we need to fake urnti */
- rlcinf->urnti[0] = fpi->channel;
+ /* For RLC re-assembly to work we need to fake urnti: using the conversation's ID and the prefix of 0xFFF */
+ rlcinf->urnti[0] = (p_conv->conv_index | 0xFFF00000);
rlcinf->mode[0] = RLC_AM;
/* rbid[MAX_RLC_CHANS] */
rlcinf->li_size[0] = RLC_LI_7BITS;
@@ -4305,7 +4306,7 @@ dissect_fp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat
/* CRNC -> Node B */
pinfo->link_dir=P2P_DIR_UL;
if (p_fp_info == NULL) {
- p_fp_info = fp_set_per_packet_inf_from_conv(p_conv_data, tvb, pinfo, fp_tree);
+ p_fp_info = fp_set_per_packet_inf_from_conv(p_conv, p_conv_data, tvb, pinfo, fp_tree);
}
}
else {
@@ -4316,7 +4317,7 @@ dissect_fp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat
PROTO_ITEM_SET_GENERATED(item);
pinfo->link_dir=P2P_DIR_DL;
if (p_fp_info == NULL) {
- p_fp_info = fp_set_per_packet_inf_from_conv(p_conv_data, tvb, pinfo, fp_tree);
+ p_fp_info = fp_set_per_packet_inf_from_conv(p_conv, p_conv_data, tvb, pinfo, fp_tree);
}
}
}