aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-06-01 13:01:32 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-06-01 13:01:32 +0000
commit6e3d56f039216ce634878b11d71a6128080ca373 (patch)
tree01baf049e41f64c939181e7652bd624d2807849e
parenta2f13cad70d7c0d1569a203d1da70944d53ba245 (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.c50
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;