diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-06-01 13:01:32 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-06-01 13:01:32 +0000 |
commit | 6e3d56f039216ce634878b11d71a6128080ca373 (patch) | |
tree | 01baf049e41f64c939181e7652bd624d2807849e | |
parent | a2f13cad70d7c0d1569a203d1da70944d53ba245 (diff) |
For RLC re-assembly to work we need to fake urnti.
svn path=/trunk/; revision=42970
-rw-r--r-- | epan/dissectors/packet-umts_fp.c | 50 |
1 files changed, 19 insertions, 31 deletions
diff --git a/epan/dissectors/packet-umts_fp.c b/epan/dissectors/packet-umts_fp.c index 0537f1346b..a8f7e09b7e 100644 --- a/epan/dissectors/packet-umts_fp.c +++ b/epan/dissectors/packet-umts_fp.c @@ -3205,6 +3205,8 @@ static fp_info *fp_set_per_packet_inf_from_conv(umts_fp_conversation_info_t *p_c break; } /* rbid[MAX_RLC_CHANS] */ + /* For RLC re-assembly to work we need to fake urnti */ + rlcinf->urnti[0] = fpi->channel; rlcinf->li_size[0] = RLC_LI_7BITS; rlcinf->ciphered[0] = FALSE; rlcinf->deciphered[0] = FALSE; @@ -3226,6 +3228,8 @@ static fp_info *fp_set_per_packet_inf_from_conv(umts_fp_conversation_info_t *p_c p_add_proto_data(pinfo->fd, proto_umts_mac, macinf); rlcinf = se_new0(rlc_info); + /* For RLC re-assembly to work we need to fake urnti */ + rlcinf->urnti[0] = fpi->channel; rlcinf->mode[0] = RLC_AM; rlcinf->li_size[0] = RLC_LI_7BITS; rlcinf->ciphered[0] = FALSE; @@ -3271,6 +3275,8 @@ static fp_info *fp_set_per_packet_inf_from_conv(umts_fp_conversation_info_t *p_c rlcinf->mode[0] = RLC_AM; } /* rbid[MAX_RLC_CHANS] */ + /* For RLC re-assembly to work we need to fake urnti */ + rlcinf->urnti[0] = fpi->channel; rlcinf->li_size[0] = RLC_LI_7BITS; rlcinf->ciphered[0] = FALSE; rlcinf->deciphered[0] = FALSE; @@ -3300,7 +3306,8 @@ static fp_info *fp_set_per_packet_inf_from_conv(umts_fp_conversation_info_t *p_c /* Set RLC data */ rlcinf = se_new0(rlc_info); /* Make configurable ?(avaliable in NBAP?) */ - /* urnti[MAX_RLC_CHANS] */ + /* For RLC re-assembly to work we need to fake urnti */ + rlcinf->urnti[0] = fpi->channel; rlcinf->mode[0] = RLC_AM; /* rbid[MAX_RLC_CHANS] */ rlcinf->li_size[0] = RLC_LI_7BITS; @@ -3328,38 +3335,19 @@ static fp_info *fp_set_per_packet_inf_from_conv(umts_fp_conversation_info_t *p_c return NULL; } - -#if 0 - /* For now cheat */ - if (p_conv_data->dchs_in_flow_list[0] == 31) { - macinf = se_new0(umts_mac_info); - macinf->ctmux[0] = 1; - macinf->content[0] = MAC_CONTENT_DCCH; - p_add_proto_data(pinfo->fd, proto_umts_mac, macinf); + /* Peek at the packet as the per packet info seems not to take the tfi into account */ + for (i=0; i<fpi->num_chans; i++) { + tfi = tvb_get_guint8(tvb,offset); + if (pinfo->link_dir==P2P_DIR_UL) { + fpi->chan_tf_size[i] = p_conv_data->fp_dch_channel_info[i].ul_chan_tf_size[tfi]; + fpi->chan_num_tbs[i] = p_conv_data->fp_dch_channel_info[i].ul_chan_num_tbs[tfi]; } - - guint32 urnti[MAX_RLC_CHANS]; - guint8 mode[MAX_RLC_CHANS]; - guint8 rbid[MAX_RLC_CHANS]; - enum rlc_li_size li_size[MAX_RLC_CHANS]; - gboolean ciphered[MAX_RLC_CHANS]; - gboolean deciphered[MAX_RLC_CHANS]; - -#endif - - /* Peek at the packet as the per packet info seems not to take the tfi into account */ - for (i=0; i<fpi->num_chans; i++) { - tfi = tvb_get_guint8(tvb,offset); - if (pinfo->link_dir==P2P_DIR_UL) { - fpi->chan_tf_size[i] = p_conv_data->fp_dch_channel_info[i].ul_chan_tf_size[tfi]; - fpi->chan_num_tbs[i] = p_conv_data->fp_dch_channel_info[i].ul_chan_num_tbs[tfi]; - } - else{ - fpi->chan_tf_size[i] = p_conv_data->fp_dch_channel_info[i].dl_chan_tf_size[tfi]; - fpi->chan_num_tbs[i] = p_conv_data->fp_dch_channel_info[i].dl_chan_num_tbs[tfi]; - } - offset++; + else{ + fpi->chan_tf_size[i] = p_conv_data->fp_dch_channel_info[i].dl_chan_tf_size[tfi]; + fpi->chan_num_tbs[i] = p_conv_data->fp_dch_channel_info[i].dl_chan_num_tbs[tfi]; } + offset++; + } return fpi; |