aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-umts_fp.c
diff options
context:
space:
mode:
authoretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2012-07-18 07:45:19 +0000
committeretxrab <etxrab@f5534014-38df-0310-8fa8-9805f1628bb7>2012-07-18 07:45:19 +0000
commit1cccf4762d50ef01337843cb30bf98767342fdbc (patch)
treef0b61bf08487bdfc5943bf3f63313f899d3854fc /epan/dissectors/packet-umts_fp.c
parentea2c2d49ef2364bed25fd51c5cd276f05c49f9a4 (diff)
Merge the rest of Jacob Nordgren and Rishie Sharmas work on
Updateing conversation handling to dissect FP/MAC/RLC (Work in progress). git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@43781 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-umts_fp.c')
-rw-r--r--epan/dissectors/packet-umts_fp.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/epan/dissectors/packet-umts_fp.c b/epan/dissectors/packet-umts_fp.c
index 7bb574b15e..264084a4e5 100644
--- a/epan/dissectors/packet-umts_fp.c
+++ b/epan/dissectors/packet-umts_fp.c
@@ -2992,9 +2992,13 @@ dissect_hsdsch_channel_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
}
macinf->fake_chid[i] = TRUE; /**/
macinf->macdflow_id[i] = p_fp_info->hsdsch_macflowd_id; /*Save the flow ID (+1 to make it human readable (its zero indexed!))*/
- /*Figure out RLC_MODE based on MACd-flow-ID, basically MACd-flow-ID = 0 then its SRB0 == UM else AM*/
- rlcinf->mode[i] = hsdsch_macdflow_id_rlc_map[p_fp_info->hsdsch_macflowd_id];
- /*macinf->ctmux[i] = TRUE;*/
+ /*Figure out RLC_MODE based on MACd-flow-ID, basically MACd-flow-ID = 0 then its SRB0 == UM else AM*/
+ if(p_fp_info->hsdsch_macflowd_id > 15 || i > 64){
+ g_warning("paket nr: %d id:%d i:%d", pinfo->fd->num,p_fp_info->hsdsch_macflowd_id,i);
+ /*exit(0);*/
+ }
+ rlcinf->mode[i] = hsdsch_macdflow_id_rlc_map[p_fp_info->hsdsch_macflowd_id];
+ /*macinf->ctmux[i] = TRUE;*/
rlcinf->urnti[i] = p_fp_info->channel;
rlcinf->li_size[i] = RLC_LI_7BITS;
rlcinf->ciphered[i] = FALSE;
@@ -3673,23 +3677,26 @@ dissect_fp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Look for packet info! */
p_fp_info = (struct fp_info *)p_get_proto_data(pinfo->fd, proto_fp);
- /* Check if we have converstaion info */
+ /* Check if we have conversation info */
p_conv = (conversation_t *)find_conversation(pinfo->fd->num, &pinfo->net_dst, &pinfo->net_src,
pinfo->ptype,
pinfo->destport, pinfo->srcport, NO_ADDR_B);
if (p_conv) {
+ /*Find correct conversation, basically find the on thats closest to this frame*/
+ while(p_conv->next != NULL && p_conv->next->setup_frame < pinfo->fd->num){
+ p_conv = p_conv->next;
+ }
p_conv_data = (umts_fp_conversation_info_t *)conversation_get_proto_data(p_conv, proto_fp);
- if (p_conv_data) {
-
+
+ if (p_conv_data) {
/*Figure out the direction of the link*/
if (ADDRESSES_EQUAL(&(pinfo->net_dst), (&p_conv_data->crnc_address))) {
-
-
+
proto_item* item= proto_tree_add_uint(fp_tree, hf_fp_ul_setup_frame,
tvb, 0, 0, p_conv_data->ul_frame_number);
-
+
PROTO_ITEM_SET_GENERATED(item);
/* CRNC -> Node B */
pinfo->link_dir=P2P_DIR_UL;