aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-umts_fp.c
diff options
context:
space:
mode:
authorsswsdev <sswsdev@gmail.com>2017-04-14 13:41:37 +0300
committerPascal Quantin <pascal.quantin@gmail.com>2017-04-20 20:19:46 +0000
commit2e6cb9dbab154531b306e472642ff6033f0e341c (patch)
tree9c78185dc665b9682d1c97895008f1ee60d13d9e /epan/dissectors/packet-umts_fp.c
parent09e787a8fb4a1a04366e57c059c4997abcd9183e (diff)
UMTS Iub: Added U-RNTI resolving logic for UEs on DCH
The goal is to figure out the U-RNTI for UEs in DCH to preserve a single continous RLC session when the UE moves to FACH (Since the UE ID in FACH is derived from the identity found in the MAC layer, which is sometimes the U-RNTI) UMTS RRC dissector now defines a single 'umts rrc private data' structure as the way to access the actx->private_data field Change-Id: Id0ffcbcdf0a8babe533915855909e250852e46cf Reviewed-on: https://code.wireshark.org/review/21087 Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-umts_fp.c')
-rw-r--r--epan/dissectors/packet-umts_fp.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/epan/dissectors/packet-umts_fp.c b/epan/dissectors/packet-umts_fp.c
index b659b54cb0..bac91ad879 100644
--- a/epan/dissectors/packet-umts_fp.c
+++ b/epan/dissectors/packet-umts_fp.c
@@ -4838,6 +4838,7 @@ fp_set_per_packet_inf_from_conv(conversation_t *p_conv,
rlc_info *rlcinf;
guint8 fake_lchid=0;
gint *cur_val=NULL;
+ guint32 user_identity;
fpi = wmem_new0(wmem_file_scope(), fp_info);
p_add_proto_data(wmem_file_scope(), pinfo, proto_fp, 0, fpi);
@@ -5060,7 +5061,16 @@ fp_set_per_packet_inf_from_conv(conversation_t *p_conv,
}
/*** Set rlc info ***/
- rlcinf->urnti[j+chan] = p_conv_data->com_context_id;
+ /* Trying to resolve the U-RNTI of the user to be used as RLC 'UE-ID' */
+ /* Fallback - The RNC's 'Communication Context' for the user as seen in NBAP messages */
+ user_identity = p_conv_data->com_context_id;
+ if (p_conv_data->scrambling_code != 0) {
+ guint32 * mapped_urnti = (guint32 *)g_tree_lookup(rrc_scrambling_code_urnti, GUINT_TO_POINTER(p_conv_data->scrambling_code));
+ if (mapped_urnti != 0) {
+ user_identity = GPOINTER_TO_UINT(mapped_urnti);
+ }
+ }
+ rlcinf->urnti[j + chan] = user_identity;
rlcinf->li_size[j+chan] = RLC_LI_7BITS;
#if 0
/*If this entry exists, SECRUITY_MODE is completed (signled by RRC)*/