2 # lte-rrc conformation file
3 # Copyright 2008 Vincent Helfre, 2009-2016 Pascal Quantin
12 DRX-Config/setup/drx-InactivityTimer
13 PDCP-Config/eag_3/t-Reordering-r12
15 RRM-Config/ue-InactiveTime
27 HandoverPreparationInformation
28 HandoverPreparationInformation_PDU
29 UERadioAccessCapabilityInformation
30 UERadioAccessCapabilityInformation_PDU
32 UE-EUTRA-Capability_PDU
37 HandoverPreparationInformation
38 UERadioAccessCapabilityInformation
39 BCCH-BCH-Message @bcch.bch
40 BCCH-DL-SCH-Message @bcch.dl.sch
43 DL-CCCH-Message @dl.ccch
44 DL-DCCH-Message @dl.dcch
45 UL-CCCH-Message @ul.ccch
46 UL-DCCH-Message @ul.dcch
47 SC-MCCH-Message @sc.mcch
48 UECapabilityInformation @ue_cap_info
49 UE-EUTRA-Capability @ue_eutra_cap
50 SBCCH-SL-BCH-Message @sbcch.sl.bch
54 # Get rid of unused code warnings
57 CQI-ReportConfigSCell-v13x0
58 CSI-RS-TriggeredList-r12
62 MeasResultServCellListSCG-r12
63 MeasResultServCellListSCG-Ext-r13
64 MeasResultServCellSCG-r12
66 SCellToAddModListSCG-r12
67 SCellToAddModListSCG-Ext-r13
69 SCG-ConfigInfo-r12-IEs
70 SCG-ConfigInfo-v13x0-IEs
71 SCG-ConfigRestrictInfo-r12
73 SL-CommTxPoolIdentity-r13
74 SL-PreconfigCommPool-r12
75 SL-PreconfigCommPoolList4-r12
76 SL-PreconfigCommRxPoolListExt-r13
77 SL-PreconfigCommTxPoolListExt-r13
78 SL-PreconfigDiscPool-r13
79 SL-PreconfigDiscRxPoolList-r13
80 SL-PreconfigDiscTxPoolList-r13
81 SL-PreconfigGeneral-r12
84 SL-Preconfiguration-r12
85 UERadioPagingInformation
86 UERadioPagingInformation-r12-IEs
87 UERadioPagingInformation-v13xy-IEs
88 UplinkPowerControlCommonPSCell-v13xy
89 VarConnEstFailReport-r11
99 VarMobilityHistoryReport-r12
105 EAB-Config-r11/eab-Category-r11
109 Handover/targetRAT-Type TYPE_PREFIX
110 SI-OrPSI-GERAN TYPE_PREFIX
112 #.FN_HDR UL-DCCH-Message
113 actx->pinfo->link_dir = P2P_DIR_UL;
115 #.FN_HDR DL-DCCH-Message
116 actx->pinfo->link_dir = P2P_DIR_DL;
118 #.FN_BODY DedicatedInfoNAS VAL_PTR = &nas_eps_tvb
119 tvbuff_t *nas_eps_tvb=NULL;
122 if ((nas_eps_tvb)&&(nas_eps_handle)) {
123 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_dedicatedInfoNAS);
124 lte_rrc_call_dissector(nas_eps_handle, nas_eps_tvb, actx->pinfo, subtree);
127 #.FN_BODY UE-CapabilityRAT-Container
128 /* Initialise to invalid value */
129 private_data_set_rat_type(actx, 0xFF);
132 #.FN_BODY RAT-Type VAL_PTR = &rat_type
135 private_data_set_rat_type(actx, (guint8)rat_type);
137 #RAT-Type ::= ENUMERATED {
138 # eutra, utra, geran-cs, geran-ps, cdma2000-1XRTT,
139 # spare3, spare2, spare1, ...}
140 # ueCapabilityRAT-Container
141 # Container for the UE capabilities of the indicated RAT. The encoding is defined in the specification of each RAT:
142 # For E-UTRA: the encoding of UE capabilities is defined in IE UE-EUTRA-Capability.
143 # For UTRA: the octet string contains the INTER RAT HANDOVER INFO message defined in TS 25.331 [19].
144 # For GERAN CS: the octet string contains the concatenated string of the Mobile Station Classmark 2 and Mobile
145 # Station Classmark 3. The first 5 octets correspond to Mobile Station Classmark 2 and the following octets correspond
146 # to Mobile Station Classmark 3. The Mobile Station Classmark 2 is formatted as 'TLV' and is coded in the same way as
147 # the Mobile Station Classmark 2 information element in TS 24.008 [49]. The first octet is the Mobile station classmark 2
148 # IEI and its value shall be set to 33H. The second octet is the Length of mobile station classmark 2 and its value shall
149 # be set to 3. The octet 3 contains the first octet of the value part of the Mobile Station Classmark 2 information element,
150 # the octet 4 contains the second octet of the value part of the Mobile Station Classmark 2 information element and so
151 # on. For each of these octets, the first/ leftmost/ most significant bit of the octet contains b8 of the corresponding octet
152 # of the Mobile Station Classmark 2. The Mobile Station Classmark 3 is formatted as 'V' and is coded in the same way
153 # as the value part in the Mobile station classmark 3 information element in TS 24.008 [49]. The sixth octet of this octet
154 # string contains octet 1 of the value part of Mobile station classmark 3, the seventh of octet of this octet string contains
155 # octet 2 of the value part of Mobile station classmark 3 and so on. Note.
156 # For GERAN PS: the encoding of UE capabilities is formatted as 'V' and is coded in the same way as the value part in
157 # the MS Radio Access Capability information element in TS 24.008 [49].
158 # For CDMA2000-1XRTT: the octet string contains the A21 Mobile Subscription Information and the encoding of this is
159 # defined in A.S0008 [33]. The A21 Mobile Subscription Information contains the supported CDMA2000 1xRTT band
160 # class and band sub-class information.
162 #.FN_BODY UE-CapabilityRAT-Container/ueCapabilityRAT-Container VAL_PTR = &ue_cap_tvb
163 tvbuff_t *ue_cap_tvb=NULL;
166 #.FN_FTR UE-CapabilityRAT-Container/ueCapabilityRAT-Container
170 proto_tree *subtree, *subtree2;
172 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_UE_CapabilityRAT_Container);
173 switch(private_data_get_rat_type(actx)){
176 dissect_lte_rrc_UE_EUTRA_Capability_PDU(ue_cap_tvb, actx->pinfo, subtree, NULL);
180 dissect_rrc_InterRATHandoverInfo_PDU(ue_cap_tvb, actx->pinfo, subtree, NULL);
182 case RAT_Type_geran_cs:
184 /* Mobile Station Classmark 2 is formatted as TLV with the two first bytes set to 0x33 0x03 */
185 subtree2 = proto_tree_add_subtree(subtree, ue_cap_tvb, 0, 5,
186 ett_lte_rrc_UE_CapabilityRAT_Container, &item, "Mobile Station Classmark 2");
187 byte = tvb_get_guint8(ue_cap_tvb, 0);
189 expert_add_info_format(actx->pinfo, item, &ei_lte_rrc_unexpected_type_value,
190 "Unexpected type value (found 0x%02X)", byte);
192 byte = tvb_get_guint8(ue_cap_tvb, 1);
194 expert_add_info_format(actx->pinfo, item, &ei_lte_rrc_unexpected_length_value,
195 "Unexpected length value (found %d)", byte);
197 de_ms_cm_2(ue_cap_tvb, subtree2, actx->pinfo, 2, 3, NULL, 0);
198 /* Mobile Station Classmark 3 is formatted as V */
199 length = tvb_reported_length_remaining(ue_cap_tvb, 5);
200 subtree2 = proto_tree_add_subtree(subtree, ue_cap_tvb, 5, length,
201 ett_lte_rrc_UE_CapabilityRAT_Container, NULL, "Mobile Station Classmark 3");
202 de_ms_cm_3(ue_cap_tvb, subtree2, actx->pinfo, 5, length, NULL, 0);
204 case RAT_Type_geran_ps:
206 /* MS Radio Access Capability is formatted as V */
207 length = tvb_reported_length(ue_cap_tvb);
208 subtree2 = proto_tree_add_subtree(subtree, ue_cap_tvb, 0, length,
209 ett_lte_rrc_UE_CapabilityRAT_Container, NULL, "MS Radio Access Capability");
210 de_gmm_ms_radio_acc_cap(ue_cap_tvb, subtree2, actx->pinfo, 0, length, NULL, 0);
212 case RAT_Type_cdma2000_1XRTT:
214 /* dissection of "A21 Mobile Subscription Information" could be added to packet-ansi_a.c */
221 #.FN_BODY UE-EUTRA-Capability/featureGroupIndicators VAL_PTR = &featureGroupIndicators_tvb
222 tvbuff_t *featureGroupIndicators_tvb=NULL;
224 if(featureGroupIndicators_tvb){
225 /* Dissect featureGroupIndicators */
226 dissect_lte_rrc_featureGroupIndicators(featureGroupIndicators_tvb, actx);
229 #.FN_BODY UE-EUTRA-Capability-v1020-IEs/featureGroupIndRel10-r10 VAL_PTR = &featureGroupIndRel10_tvb
230 tvbuff_t *featureGroupIndRel10_tvb=NULL;
232 if(featureGroupIndRel10_tvb){
233 /* Dissect featureGroupIndRel10-r10 */
234 dissect_lte_rrc_featureGroupIndRel10(featureGroupIndRel10_tvb, actx);
237 #.FN_BODY UE-EUTRA-Capability-v9a0-IEs/featureGroupIndRel9Add-r9 VAL_PTR = &featureGroupIndRel9Add_tvb
238 tvbuff_t *featureGroupIndRel9Add_tvb=NULL;
240 if(featureGroupIndRel9Add_tvb){
241 /* Dissect featureGroupIndRel9Add-r9 */
242 dissect_lte_rrc_featureGroupIndRel9Add(featureGroupIndRel9Add_tvb, actx);
245 #.FN_BODY UE-EUTRA-CapabilityAddXDD-Mode-r9/featureGroupIndicators-r9 VAL_PTR = &featureGroupIndicators_tvb
246 tvbuff_t *featureGroupIndicators_tvb=NULL;
248 if(featureGroupIndicators_tvb){
249 /* Dissect featureGroupIndicators-r9 */
250 dissect_lte_rrc_featureGroupIndicators(featureGroupIndicators_tvb, actx);
253 #.FN_BODY UE-EUTRA-CapabilityAddXDD-Mode-r9/featureGroupIndRel9Add-r9 VAL_PTR = &featureGroupIndRel9Add_tvb
254 tvbuff_t *featureGroupIndRel9Add_tvb=NULL;
256 if(featureGroupIndRel9Add_tvb){
257 /* Dissect featureGroupIndRel9Add-r9 */
258 dissect_lte_rrc_featureGroupIndRel9Add(featureGroupIndRel9Add_tvb, actx);
261 #.FN_BODY UE-EUTRA-CapabilityAddXDD-Mode-v1060/featureGroupIndRel10-v1060 VAL_PTR = &featureGroupIndRel10_tvb
262 tvbuff_t *featureGroupIndRel10_tvb=NULL;
264 if(featureGroupIndRel10_tvb){
265 /* Dissect featureGroupIndRel10-v1060 */
266 dissect_lte_rrc_featureGroupIndRel10(featureGroupIndRel10_tvb, actx);
269 #.FN_BODY PhyLayerParameters-v1170/interBandTDD-CA-WithDifferentConfig-r11 VAL_PTR = &inter_band_tdd_ca_tvb
270 tvbuff_t *inter_band_tdd_ca_tvb=NULL;
273 if (inter_band_tdd_ca_tvb) {
274 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_interBandTDD_CA_WithDifferentConfig);
275 proto_tree_add_bits_item(subtree, hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit1, inter_band_tdd_ca_tvb, 0, 1, ENC_BIG_ENDIAN);
276 proto_tree_add_bits_item(subtree, hf_lte_rrc_interBandTDD_CA_WithDifferentConfig_bit2, inter_band_tdd_ca_tvb, 1, 1, ENC_BIG_ENDIAN);
279 #.FN_BODY PhyLayerParameters-v1250/tdd-FDD-CA-PCellDuplex-r12 VAL_PTR = &pcellduplex_tvb
280 tvbuff_t *pcellduplex_tvb=NULL;
283 if (pcellduplex_tvb) {
284 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_tdd_FDD_CA_PCellDuplex_r12);
285 proto_tree_add_bits_item(subtree, hf_lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit1, pcellduplex_tvb, 0, 1, ENC_BIG_ENDIAN);
286 proto_tree_add_bits_item(subtree, hf_lte_rrc_tdd_FDD_CA_PCellDuplex_r12_bit2, pcellduplex_tvb, 1, 1, ENC_BIG_ENDIAN);
289 #.FN_BODY PhyLayerParameters-v13x0/codebook-HARQ-ACK-r13 VAL_PTR = &codebook_tvb
290 tvbuff_t *codebook_tvb=NULL;
294 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_codebook_HARQ_ACK_r13);
295 proto_tree_add_bits_item(subtree, hf_lte_rrc_codebook_HARQ_ACK_r13_bit1, codebook_tvb, 0, 1, ENC_BIG_ENDIAN);
296 proto_tree_add_bits_item(subtree, hf_lte_rrc_codebook_HARQ_ACK_r13_bit2, codebook_tvb, 1, 1, ENC_BIG_ENDIAN);
299 #.FN_BODY RF-Parameters-v10f0/modifiedMPR-Behavior-r10 VAL_PTR = &modifiedMPR_Behavior_r10_tvb
300 tvbuff_t *modifiedMPR_Behavior_r10_tvb=NULL;
303 if (modifiedMPR_Behavior_r10_tvb) {
304 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_modifiedMPR_Behavior_r10);
305 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_0, modifiedMPR_Behavior_r10_tvb, 0, 1, ENC_BIG_ENDIAN);
306 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_1, modifiedMPR_Behavior_r10_tvb, 1, 1, ENC_BIG_ENDIAN);
307 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_2, modifiedMPR_Behavior_r10_tvb, 2, 1, ENC_BIG_ENDIAN);
308 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_3, modifiedMPR_Behavior_r10_tvb, 3, 1, ENC_BIG_ENDIAN);
309 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_4, modifiedMPR_Behavior_r10_tvb, 4, 1, ENC_BIG_ENDIAN);
310 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_5, modifiedMPR_Behavior_r10_tvb, 5, 1, ENC_BIG_ENDIAN);
311 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_6, modifiedMPR_Behavior_r10_tvb, 6, 1, ENC_BIG_ENDIAN);
312 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_7, modifiedMPR_Behavior_r10_tvb, 7, 1, ENC_BIG_ENDIAN);
313 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_8, modifiedMPR_Behavior_r10_tvb, 8, 1, ENC_BIG_ENDIAN);
314 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_9, modifiedMPR_Behavior_r10_tvb, 9, 1, ENC_BIG_ENDIAN);
315 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_10, modifiedMPR_Behavior_r10_tvb, 10, 1, ENC_BIG_ENDIAN);
316 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_11, modifiedMPR_Behavior_r10_tvb, 11, 1, ENC_BIG_ENDIAN);
317 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_12, modifiedMPR_Behavior_r10_tvb, 12, 1, ENC_BIG_ENDIAN);
318 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_13, modifiedMPR_Behavior_r10_tvb, 13, 1, ENC_BIG_ENDIAN);
319 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_14, modifiedMPR_Behavior_r10_tvb, 14, 1, ENC_BIG_ENDIAN);
320 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_15, modifiedMPR_Behavior_r10_tvb, 15, 1, ENC_BIG_ENDIAN);
321 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_16, modifiedMPR_Behavior_r10_tvb, 16, 1, ENC_BIG_ENDIAN);
322 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_17, modifiedMPR_Behavior_r10_tvb, 17, 1, ENC_BIG_ENDIAN);
323 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_18, modifiedMPR_Behavior_r10_tvb, 18, 1, ENC_BIG_ENDIAN);
324 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_19, modifiedMPR_Behavior_r10_tvb, 19, 1, ENC_BIG_ENDIAN);
325 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_20, modifiedMPR_Behavior_r10_tvb, 20, 1, ENC_BIG_ENDIAN);
326 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_21, modifiedMPR_Behavior_r10_tvb, 21, 1, ENC_BIG_ENDIAN);
327 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_22, modifiedMPR_Behavior_r10_tvb, 22, 1, ENC_BIG_ENDIAN);
328 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_23, modifiedMPR_Behavior_r10_tvb, 23, 1, ENC_BIG_ENDIAN);
329 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_24, modifiedMPR_Behavior_r10_tvb, 24, 1, ENC_BIG_ENDIAN);
330 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_25, modifiedMPR_Behavior_r10_tvb, 25, 1, ENC_BIG_ENDIAN);
331 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_26, modifiedMPR_Behavior_r10_tvb, 26, 1, ENC_BIG_ENDIAN);
332 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_27, modifiedMPR_Behavior_r10_tvb, 27, 1, ENC_BIG_ENDIAN);
333 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_28, modifiedMPR_Behavior_r10_tvb, 28, 1, ENC_BIG_ENDIAN);
334 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_29, modifiedMPR_Behavior_r10_tvb, 29, 1, ENC_BIG_ENDIAN);
335 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_30, modifiedMPR_Behavior_r10_tvb, 30, 1, ENC_BIG_ENDIAN);
336 proto_tree_add_bits_item(subtree, hf_lte_rrc_modifiedMPR_Behavior_r10_mpr_ampr_31, modifiedMPR_Behavior_r10_tvb, 31, 1, ENC_BIG_ENDIAN);
340 /* Initialise to invalid value */
341 private_data_set_rat_target_type(actx, 0xFF);
344 #.FN_BODY Handover/targetRAT-Type VAL_PTR = &target_rat_type
345 guint32 target_rat_type;
347 private_data_set_rat_target_type(actx, (guint8)target_rat_type);
349 #.FN_BODY Handover/targetRAT-MessageContainer VAL_PTR = &target_rat_msg_cont_tvb
350 tvbuff_t *target_rat_msg_cont_tvb = NULL;
352 if(target_rat_msg_cont_tvb){
355 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_targetRAT_MessageContainer);
356 switch (private_data_get_rat_target_type(actx)){
357 case T_targetRAT_Type_utra:
359 if (rrc_irat_ho_to_utran_cmd_handle)
360 lte_rrc_call_dissector(rrc_irat_ho_to_utran_cmd_handle, target_rat_msg_cont_tvb, actx->pinfo, subtree);
362 case T_targetRAT_Type_geran:
364 byte = tvb_get_guint8(target_rat_msg_cont_tvb, 0);
366 if (gsm_a_dtap_handle) {
367 lte_rrc_call_dissector(gsm_a_dtap_handle, target_rat_msg_cont_tvb, actx->pinfo, subtree);
370 if (gsm_rlcmac_dl_handle) {
371 lte_rrc_call_dissector(gsm_rlcmac_dl_handle, target_rat_msg_cont_tvb, actx->pinfo, subtree);
375 case T_targetRAT_Type_cdma2000_1XRTT:
378 case T_targetRAT_Type_cdma2000_HRPD:
386 #.FN_BODY Handover/nas-SecurityParamFromEUTRA VAL_PTR = &nas_sec_param_from_eutra_tvb
387 tvbuff_t *nas_sec_param_from_eutra_tvb = NULL;
392 if (nas_sec_param_from_eutra_tvb) {
393 length = tvb_reported_length(nas_sec_param_from_eutra_tvb);
394 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_nas_SecurityParam);
395 de_emm_sec_par_from_eutra(nas_sec_param_from_eutra_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
398 #.FN_BODY SecurityConfigHO/handoverType/interRAT/nas-SecurityParamToEUTRA VAL_PTR = &nas_sec_param_to_eutra_tvb
399 tvbuff_t *nas_sec_param_to_eutra_tvb = NULL;
404 if (nas_sec_param_to_eutra_tvb) {
405 length = tvb_reported_length(nas_sec_param_to_eutra_tvb);
406 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_nas_SecurityParam);
407 de_emm_sec_par_to_eutra(nas_sec_param_to_eutra_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
410 #.FN_BODY SI-OrPSI-GERAN/si
411 private_data_set_si_or_psi_geran(actx, (guint8)SI_OrPSI_GERAN_si); /* SI message */
414 #.FN_BODY SI-OrPSI-GERAN/psi
415 private_data_set_si_or_psi_geran(actx, (guint8)SI_OrPSI_GERAN_psi); /* PSI message */
418 #.FN_BODY CellInfoGERAN-r9/systemInformation-r9
419 private_data_set_si_or_psi_geran(actx, (guint8)SI_OrPSI_GERAN_si); /* SI message */
422 #.FN_BODY SystemInfoListGERAN/_item VAL_PTR = &sys_info_list_tvb
423 tvbuff_t *sys_info_list_tvb = NULL;
426 if (sys_info_list_tvb) {
427 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_siPsiSibContainer);
428 switch (private_data_get_si_or_psi_geran(actx)) {
429 case SI_OrPSI_GERAN_si:
431 if (gsm_a_dtap_handle) {
432 tvbuff_t *si_tvb = tvb_new_composite();
433 guint8 *pd = (guint8 *) wmem_alloc(actx->pinfo->pool, 1);
435 tvb_composite_append(si_tvb, tvb_new_real_data(pd, 1, 1));
436 tvb_composite_append(si_tvb, sys_info_list_tvb);
437 tvb_composite_finalize(si_tvb);
438 add_new_data_source(actx->pinfo, si_tvb, "System Information");
439 lte_rrc_call_dissector(gsm_a_dtap_handle, si_tvb, actx->pinfo, subtree);
442 case SI_OrPSI_GERAN_psi:
444 if (gsm_rlcmac_dl_handle) {
445 lte_rrc_call_dissector(gsm_rlcmac_dl_handle, sys_info_list_tvb, actx->pinfo, subtree);
453 #.FN_BODY SystemTimeInfoCDMA2000/cdma-SystemTime/asynchronousSystemTime VAL_PTR=&async_system_time_tvb
454 tvbuff_t *async_system_time_tvb = NULL;
457 #.FN_FTR SystemTimeInfoCDMA2000/cdma-SystemTime/asynchronousSystemTime
458 if (async_system_time_tvb) {
462 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_timeInfo);
463 bits = tvb_get_bits64(async_system_time_tvb, 0, 49, ENC_BIG_ENDIAN);
464 ts.secs = (time_t)((bits*8)/1228800) + 315964800; /* CDMA2000 epoch is 00:00:00 (midnight) UTC on 1980-01-06 */
465 ts.nsecs = (int)(((bits%153600)*8*1000000000)/1228800);
466 proto_tree_add_time(subtree, hf_lte_rrc_cdma_time, async_system_time_tvb, 0, 7, &ts);
467 proto_tree_add_time(subtree, hf_lte_rrc_local_time, async_system_time_tvb, 0, 7,&ts);
470 #.FN_BODY SystemTimeInfoCDMA2000/cdma-SystemTime/synchronousSystemTime VAL_PTR=&sync_system_time_tvb
471 tvbuff_t *sync_system_time_tvb = NULL;
474 #.FN_FTR SystemTimeInfoCDMA2000/cdma-SystemTime/synchronousSystemTime
475 if (sync_system_time_tvb) {
479 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_timeInfo);
480 bits = tvb_get_bits64(sync_system_time_tvb, 0, 39, ENC_BIG_ENDIAN);
481 ts.secs = (time_t)(bits/100) + 315964800; /* CDMA2000 epoch is 00:00:00 (midnight) UTC on 1980-01-06 */
482 ts.nsecs = (int)(bits%100)*10000000;
483 proto_tree_add_time(subtree, hf_lte_rrc_cdma_time, sync_system_time_tvb, 0, 5, &ts);
484 proto_tree_add_time(subtree, hf_lte_rrc_local_time, sync_system_time_tvb, 0, 5, &ts);
487 #.FN_BODY CellInfoUTRA-FDD-r9/utra-BCCH-Container-r9 VAL_PTR = &utra_bcch_cont_tvb
488 tvbuff_t *utra_bcch_cont_tvb = NULL;
491 if (utra_bcch_cont_tvb && rrc_sys_info_cont_handle) {
492 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_siPsiSibContainer);
493 lte_rrc_call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, subtree);
496 #.FN_BODY CellInfoUTRA-TDD-r9/utra-BCCH-Container-r9 VAL_PTR = &utra_bcch_cont_tvb
497 tvbuff_t *utra_bcch_cont_tvb = NULL;
500 if (utra_bcch_cont_tvb && rrc_sys_info_cont_handle) {
501 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_siPsiSibContainer);
502 lte_rrc_call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, subtree);
505 #.FN_BODY CellInfoUTRA-TDD-r10/utra-BCCH-Container-r10 VAL_PTR = &utra_bcch_cont_tvb
506 tvbuff_t *utra_bcch_cont_tvb = NULL;
509 if (utra_bcch_cont_tvb && rrc_sys_info_cont_handle) {
510 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_siPsiSibContainer);
511 lte_rrc_call_dissector(rrc_sys_info_cont_handle, utra_bcch_cont_tvb, actx->pinfo, subtree);
515 NeighCellConfig TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lte_rrc_neighCellConfig_vals)
517 #.FN_BODY NeighCellConfig VAL_PTR = &neigh_cell_config_tvb HF_INDEX=-1
518 tvbuff_t *neigh_cell_config_tvb = NULL;
521 #.FN_FTR NeighCellConfig
522 if (neigh_cell_config_tvb) {
523 actx->created_item = proto_tree_add_uint(tree, hf_index, neigh_cell_config_tvb, 0, 1, tvb_get_bits8(neigh_cell_config_tvb, 0, 2));
526 #.FN_BODY LocationInfo-r10/locationCoordinates-r10/ellipsoid-Point-r10 VAL_PTR = &ellipsoid_point_tvb
527 tvbuff_t *ellipsoid_point_tvb = NULL;
529 if (ellipsoid_point_tvb) {
530 dissect_lpp_Ellipsoid_Point_PDU(ellipsoid_point_tvb, actx->pinfo, tree, NULL);
533 #.FN_BODY LocationInfo-r10/locationCoordinates-r10/ellipsoidPointWithAltitude-r10 VAL_PTR = &ellipsoid_point_with_alt_tvb
534 tvbuff_t *ellipsoid_point_with_alt_tvb = NULL;
536 if (ellipsoid_point_with_alt_tvb) {
537 dissect_lpp_EllipsoidPointWithAltitude_PDU(ellipsoid_point_with_alt_tvb, actx->pinfo, tree, NULL);
540 #.FN_BODY LocationInfo-r10/locationCoordinates-r10/ellipsoidPointWithUncertaintyCircle-r11 VAL_PTR = &ellipsoid_point_with_uncert_circ_tvb
541 tvbuff_t *ellipsoid_point_with_uncert_circ_tvb = NULL;
543 if (ellipsoid_point_with_uncert_circ_tvb) {
544 dissect_lpp_Ellipsoid_PointWithUncertaintyCircle_PDU(ellipsoid_point_with_uncert_circ_tvb, actx->pinfo, tree, NULL);
547 #.FN_BODY LocationInfo-r10/locationCoordinates-r10/ellipsoidPointWithUncertaintyEllipse-r11 VAL_PTR = &ellipsoid_point_with_uncert_ellipse_tvb
548 tvbuff_t *ellipsoid_point_with_uncert_ellipse_tvb = NULL;
550 if (ellipsoid_point_with_uncert_ellipse_tvb) {
551 dissect_lpp_EllipsoidPointWithUncertaintyEllipse_PDU(ellipsoid_point_with_uncert_ellipse_tvb, actx->pinfo, tree, NULL);
554 #.FN_BODY LocationInfo-r10/locationCoordinates-r10/ellipsoidPointWithAltitudeAndUncertaintyEllipsoid-r11 VAL_PTR = &ellipsoid_point_with_alt_uncert_ellipsoid_tvb
555 tvbuff_t *ellipsoid_point_with_alt_uncert_ellipsoid_tvb = NULL;
557 if (ellipsoid_point_with_alt_uncert_ellipsoid_tvb) {
558 dissect_lpp_EllipsoidPointWithAltitudeAndUncertaintyEllipsoid_PDU(ellipsoid_point_with_alt_uncert_ellipsoid_tvb, actx->pinfo, tree, NULL);
561 #.FN_BODY LocationInfo-r10/locationCoordinates-r10/ellipsoidArc-r11 VAL_PTR = &ellipsoid_arc_tvb
562 tvbuff_t *ellipsoid_arc_tvb = NULL;
564 if (ellipsoid_arc_tvb) {
565 dissect_lpp_EllipsoidArc_PDU(ellipsoid_arc_tvb, actx->pinfo, tree, NULL);
568 #.FN_BODY LocationInfo-r10/locationCoordinates-r10/polygon-r11 VAL_PTR = &polygon_tvb
569 tvbuff_t *polygon_tvb = NULL;
572 dissect_lpp_Polygon_PDU(polygon_tvb, actx->pinfo, tree, NULL);
575 #.FN_BODY LocationInfo-r10/horizontalVelocity-r10 VAL_PTR = &horizontal_velocity_tvb
576 tvbuff_t *horizontal_velocity_tvb = NULL;
578 if (horizontal_velocity_tvb) {
579 dissect_lpp_HorizontalVelocity_PDU(horizontal_velocity_tvb, actx->pinfo, tree, NULL);
582 #.FN_BODY LocationInfo-r10/gnss-TOD-msec-r10 VAL_PTR = &gnss_tod_msec_tvb
583 tvbuff_t *gnss_tod_msec_tvb = NULL;
585 if (gnss_tod_msec_tvb) {
587 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, FALSE, actx->pinfo);
588 dissect_per_constrained_integer(gnss_tod_msec_tvb, 0, &asn1_ctx, tree, hf_index, 0U, 3599999U, NULL, FALSE);
589 proto_item_append_text(actx->created_item, "ms");
592 #.FN_BODY AbsoluteTimeInfo-r10 VAL_PTR = &abs_time_info_tvb
593 tvbuff_t *abs_time_info_tvb = NULL;
595 #.FN_FTR AbsoluteTimeInfo-r10
596 if (abs_time_info_tvb) {
597 const gchar *str, *hf_str;
599 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_absTimeInfo);
600 str = tvb_bcd_dig_to_wmem_packet_str(abs_time_info_tvb, 0, 6, NULL, FALSE);
601 hf_str = wmem_strdup_printf(wmem_packet_scope(), "%c%c-%c%c-%c%c %c%c:%c%c:%c%c", str[0], str[1],
602 str[2], str[3], str[4], str[5], str[6], str[7], str[8], str[9], str[10], str[11]);
603 proto_tree_add_string(subtree, hf_lte_rrc_absolute_time, abs_time_info_tvb, 0, 6, hf_str);
607 CarrierFreqUTRA-FDD-Ext-r12/multiBandInfoList-r12 FreqBandIndicator_UTRA_FDD_r12
610 SystemInformationBlockType9/hnb-Name TYPE=FT_STRING DISPLAY=STR_UNICODE
612 #.FN_BODY SystemInformationBlockType9/hnb-Name VAL_PTR=&hnb_name_tvb HF_INDEX=-1
613 tvbuff_t *hnb_name_tvb = NULL;
616 actx->created_item = proto_tree_add_item(tree, hf_index, hnb_name_tvb, 0, -1, ENC_UTF_8|ENC_NA);
619 SystemInformationBlockType10/messageIdentifier TYPE=FT_UINT16 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_messageIdentifier_vals_ext
621 #.FN_BODY SystemInformationBlockType10/messageIdentifier VAL_PTR=&msg_id_tvb HF_INDEX=-1
622 tvbuff_t *msg_id_tvb = NULL;
625 #.FN_FTR SystemInformationBlockType10/messageIdentifier
627 actx->created_item = proto_tree_add_item(tree, hf_index, msg_id_tvb, 0, 2, ENC_BIG_ENDIAN);
630 #.FN_BODY SystemInformationBlockType10/serialNumber VAL_PTR=&serial_nb_tvb
631 tvbuff_t *serial_nb_tvb = NULL;
634 #.FN_FTR SystemInformationBlockType10/serialNumber
637 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_serialNumber);
638 proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_gs, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN);
639 proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_msg_code, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN);
640 proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_upd_nb, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN);
643 #.FN_BODY SystemInformationBlockType10/warningType VAL_PTR=&warning_type_tvb
644 tvbuff_t *warning_type_tvb = NULL;
647 #.FN_FTR SystemInformationBlockType10/warningType
648 if (warning_type_tvb) {
650 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningType);
651 proto_tree_add_item(subtree, hf_lte_rrc_warningType_value, warning_type_tvb, 0, 2, ENC_BIG_ENDIAN);
652 proto_tree_add_item(subtree, hf_lte_rrc_warningType_emergency_user_alert, warning_type_tvb, 0, 2, ENC_BIG_ENDIAN);
653 proto_tree_add_item(subtree, hf_lte_rrc_warningType_popup, warning_type_tvb, 0, 2, ENC_BIG_ENDIAN);
657 SystemInformationBlockType11/messageIdentifier TYPE=FT_UINT16 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_messageIdentifier_vals_ext
659 #.FN_BODY SystemInformationBlockType11/messageIdentifier VAL_PTR=&msg_id_tvb HF_INDEX=-1
660 tvbuff_t *msg_id_tvb = NULL;
663 #.FN_FTR SystemInformationBlockType11/messageIdentifier
665 private_data_set_message_identifier(actx, tvb_get_ntohs(msg_id_tvb, 0) << 16);
666 actx->created_item = proto_tree_add_item(tree, hf_index, msg_id_tvb, 0, 2, ENC_BIG_ENDIAN);
669 #.FN_BODY SystemInformationBlockType11/serialNumber VAL_PTR=&serial_nb_tvb
670 tvbuff_t *serial_nb_tvb = NULL;
673 #.FN_FTR SystemInformationBlockType11/serialNumber
676 private_data_set_message_identifier(actx,
677 private_data_get_message_identifier(actx) | tvb_get_ntohs(serial_nb_tvb, 0));
678 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_serialNumber);
679 proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_gs, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN);
680 proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_msg_code, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN);
681 proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_upd_nb, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN);
684 #.FN_BODY SystemInformationBlockType11/warningMessageSegmentType VAL_PTR=&segment_type
685 guint32 segment_type;
687 private_data_set_warning_message_segment_type(actx, (guint8)segment_type);
689 #.FN_BODY SystemInformationBlockType11/warningMessageSegmentNumber VAL_PTR=&segment_number
690 guint32 segment_number;
692 private_data_set_warning_message_segment_number(actx, (guint8)segment_number);
694 #.FN_BODY SystemInformationBlockType11/dataCodingScheme VAL_PTR=&data_coding_scheme_tvb
695 tvbuff_t *data_coding_scheme_tvb = NULL;
698 #.FN_FTR SystemInformationBlockType11/dataCodingScheme
699 if (data_coding_scheme_tvb) {
701 guint32 dataCodingScheme;
702 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_dataCodingScheme);
703 dataCodingScheme = dissect_cbs_data_coding_scheme(data_coding_scheme_tvb, actx->pinfo, subtree, 0);
704 g_hash_table_insert(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx)),
705 GUINT_TO_POINTER(dataCodingScheme));
708 #.FN_BODY SystemInformationBlockType11/warningMessageSegment VAL_PTR=&warning_msg_seg_tvb
709 tvbuff_t *warning_msg_seg_tvb = NULL;
712 #.FN_FTR SystemInformationBlockType11/warningMessageSegment
713 if (warning_msg_seg_tvb) {
717 fragment_head *frag_data = fragment_add_seq_check(<e_rrc_sib11_reassembly_table, warning_msg_seg_tvb, 0, actx->pinfo,
718 private_data_get_message_identifier(actx), NULL,
719 private_data_get_warning_message_segment_number(actx),
720 tvb_reported_length(warning_msg_seg_tvb),
721 private_data_get_warning_message_segment_type(actx) ? FALSE : TRUE);
722 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningMessageSegment);
723 frag_tvb = process_reassembled_data(warning_msg_seg_tvb, 0, actx->pinfo, "Reassembled SIB11 warning message",
724 frag_data, <e_rrc_sib11_frag_items, NULL, subtree);
725 p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx)));
726 if (frag_tvb && p_dcs) {
727 dissect_lte_rrc_warningMessageSegment(frag_tvb, subtree, actx->pinfo, GPOINTER_TO_UINT(p_dcs));
732 SystemInformationBlockType12-r9/messageIdentifier-r9 TYPE=FT_UINT16 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_messageIdentifier_vals_ext
734 #.FN_BODY SystemInformationBlockType12-r9/messageIdentifier-r9 VAL_PTR=&msg_id_tvb HF_INDEX=-1
735 tvbuff_t *msg_id_tvb = NULL;
738 #.FN_FTR SystemInformationBlockType12-r9/messageIdentifier-r9
740 private_data_set_message_identifier(actx, tvb_get_ntohs(msg_id_tvb, 0) << 16);
741 actx->created_item = proto_tree_add_item(tree, hf_index, msg_id_tvb, 0, 2, ENC_BIG_ENDIAN);
744 #.FN_BODY SystemInformationBlockType12-r9/serialNumber-r9 VAL_PTR=&serial_nb_tvb
745 tvbuff_t *serial_nb_tvb = NULL;
748 #.FN_FTR SystemInformationBlockType12-r9/serialNumber-r9
751 private_data_set_message_identifier(actx,
752 private_data_get_message_identifier(actx) | tvb_get_ntohs(serial_nb_tvb, 0));
753 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_serialNumber);
754 proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_gs, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN);
755 proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_msg_code, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN);
756 proto_tree_add_item(subtree, hf_lte_rrc_serialNumber_upd_nb, serial_nb_tvb, 0, 2, ENC_BIG_ENDIAN);
759 #.FN_BODY SystemInformationBlockType12-r9/warningMessageSegmentType-r9 VAL_PTR=&segment_type
760 guint32 segment_type;
762 private_data_set_warning_message_segment_type(actx, (guint8)segment_type);
764 #.FN_BODY SystemInformationBlockType12-r9/warningMessageSegmentNumber-r9 VAL_PTR=&segment_number
765 guint32 segment_number;
767 private_data_set_warning_message_segment_number(actx, (guint8)segment_number);
769 #.FN_BODY SystemInformationBlockType12-r9/dataCodingScheme-r9 VAL_PTR=&data_coding_scheme_tvb
770 tvbuff_t *data_coding_scheme_tvb = NULL;
773 #.FN_FTR SystemInformationBlockType12-r9/dataCodingScheme-r9
774 if (data_coding_scheme_tvb) {
776 guint32 dataCodingScheme;
777 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_dataCodingScheme);
778 dataCodingScheme = dissect_cbs_data_coding_scheme(data_coding_scheme_tvb, actx->pinfo, subtree, 0);
779 g_hash_table_insert(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx)),
780 GUINT_TO_POINTER(dataCodingScheme));
783 #.FN_BODY SystemInformationBlockType12-r9/warningMessageSegment-r9 VAL_PTR=&warning_msg_seg_tvb
784 tvbuff_t *warning_msg_seg_tvb = NULL;
787 #.FN_FTR SystemInformationBlockType12-r9/warningMessageSegment-r9
788 if (warning_msg_seg_tvb) {
792 fragment_head *frag_data = fragment_add_seq_check(<e_rrc_sib12_reassembly_table, warning_msg_seg_tvb, 0, actx->pinfo,
793 private_data_get_message_identifier(actx), NULL,
794 private_data_get_warning_message_segment_number(actx),
795 tvb_reported_length(warning_msg_seg_tvb),
796 private_data_get_warning_message_segment_type(actx) ? FALSE : TRUE);
797 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_warningMessageSegment);
798 frag_tvb = process_reassembled_data(warning_msg_seg_tvb, 0, actx->pinfo, "Reassembled SIB12 warning message",
799 frag_data, <e_rrc_sib12_frag_items, NULL, subtree);
800 p_dcs = g_hash_table_lookup(lte_rrc_etws_cmas_dcs_hash, GUINT_TO_POINTER((guint)private_data_get_message_identifier(actx)));
801 if (frag_tvb && p_dcs) {
802 dissect_lte_rrc_warningMessageSegment(frag_tvb, subtree, actx->pinfo, GPOINTER_TO_UINT(p_dcs));
807 EAB-Config-r11/eab-Category-r11 STRINGS=VALS(lte_rrc_eab_category_vals)
810 SystemInformationBlockType16-r11/timeInfo-r11/dayLightSavingTime-r11 TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lte_rrc_daylightSavingTime_vals)
812 #.FN_BODY SystemInformationBlockType16-r11/timeInfo-r11/dayLightSavingTime-r11 VAL_PTR=&daylight_saving_time_tvb HF_INDEX=-1
813 tvbuff_t *daylight_saving_time_tvb = NULL;
816 #.FN_FTR SystemInformationBlockType16-r11/timeInfo-r11/dayLightSavingTime-r11
817 if (daylight_saving_time_tvb) {
818 actx->created_item = proto_tree_add_uint(tree, hf_index, daylight_saving_time_tvb, 0, 1, tvb_get_bits8(daylight_saving_time_tvb, 0, 2));
821 #.FN_BODY SystemInformationBlockType16-r11/timeInfo-r11/leapSeconds-r11
823 proto_item_append_text(actx->created_item, "s");
826 SystemInformationBlockType16-r11/timeInfo-r11/localTimeOffset-r11 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_localTimeOffset_fmt)
828 #.FN_BODY SystemInformationBlockType16-r11/timeInfo-r11/timeInfoUTC-r11 VAL_PTR=&timeInfo
832 guint32 old_offset = offset;
835 #.FN_FTR SystemInformationBlockType16-r11/timeInfo-r11/timeInfoUTC-r11
836 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_timeInfo);
837 ts.secs = (time_t)(timeInfo/100)-2208988800U; /* epoch is 00:00:00 (midnight) UTC on 1900-01-01 */
838 ts.nsecs = (int)(timeInfo%100)*10000000;
839 proto_tree_add_time(subtree, hf_lte_rrc_utc_time, tvb, old_offset>>3, (old_offset&0x07) ? 6 : 5, &ts);
840 proto_tree_add_time(subtree, hf_lte_rrc_local_time, tvb, old_offset>>3, (old_offset&0x07) ? 6 : 5, &ts);
843 WLAN-Identifiers-r12/ssid-r12 TYPE=FT_STRING DISPLAY=STR_ASCII
845 #.FN_BODY WLAN-Identifiers-r12/ssid-r12 VAL_PTR=&ssid_tvb HF_INDEX=-1
846 tvbuff_t *ssid_tvb = NULL;
849 actx->created_item = proto_tree_add_item(tree, hf_index, ssid_tvb, 0, -1, ENC_ASCII|ENC_NA);
852 WLAN-Identifiers-r12/bssid-r12 TYPE=FT_ETHER
855 WLAN-Identifiers-r12/hessid-r12 TYPE=FT_ETHER
858 CellSelectionInfoNFreq-r13/q-RxLevMinOffset STRINGS=VALS(lte_rrc_q_RxLevMinOffset_vals)
860 #.FN_BODY RRCConnectionReject-r8-IEs/waitTime
862 proto_item_append_text(actx->created_item, "s");
864 #.FN_BODY RRCConnectionReject-v1020-IEs/extendedWaitTime-r10
866 proto_item_append_text(actx->created_item, "s");
868 #.FN_BODY RRCConnectionRelease-v1020-IEs/extendedWaitTime-r10
870 proto_item_append_text(actx->created_item, "s");
873 SystemInformationBlockType1/cellSelectionInfo/q-RxLevMinOffset STRINGS=VALS(lte_rrc_q_RxLevMinOffset_vals)
875 #.FN_BODY CellSelectionInfo-v920/q-QualMinOffset-r9
877 proto_item_append_text(actx->created_item, "dB");
880 RLF-Report-r9/eag_1/timeConnFailure-r10 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_timeConnFailure_r10_fmt)
882 #.FN_BODY LogMeasInfo-r10/relativeTimeStamp-r10
884 proto_item_append_text(actx->created_item, "s");
886 #.FN_BODY BLER-Result-r12/blocksReceived-r12/n-r12 VAL_PTR = &n_r12_tvb HF_INDEX = -1
887 tvbuff_t *n_r12_tvb = NULL;
890 actx->created_item = proto_tree_add_uint(tree, hf_index, n_r12_tvb, 0, 1, tvb_get_bits8(n_r12_tvb, 0, 3));
894 BLER-Result-r12/blocksReceived-r12/n-r12 TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(lte_rrc_n_r12_vals)
896 #.FN_BODY BLER-Result-r12/blocksReceived-r12/m-r12 VAL_PTR = &m_r12_tvb HF_INDEX = -1
897 tvbuff_t *m_r12_tvb = NULL;
900 actx->created_item = proto_tree_add_item(tree, hf_index, m_r12_tvb, 0, 1, ENC_BIG_ENDIAN);
904 BLER-Result-r12/blocksReceived-r12/m-r12 TYPE=FT_UINT8 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_m_r12_fmt)
907 BLER-Range-r12 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_BLER_Range_r12_vals_ext
909 #.FN_BODY TimeSinceFailure-r11
911 proto_item_append_text(actx->created_item, "s");
914 CarrierFreqUTRA-FDD/q-RxLevMin DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_utra_q_RxLevMin_vals_ext
917 CarrierFreqUTRA-FDD-Ext-r12/q-RxLevMin-r12 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_utra_q_RxLevMin_vals_ext
920 CarrierFreqUTRA-TDD/q-RxLevMin DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_utra_q_RxLevMin_vals_ext
923 CarrierFreqUTRA-TDD-r12/q-RxLevMin-r12 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_utra_q_RxLevMin_vals_ext
925 #.FN_BODY CarrierFreqUTRA-FDD/p-MaxUTRA
927 proto_item_append_text(actx->created_item, "dBm");
929 #.FN_BODY CarrierFreqUTRA-FDD-Ext-r12/p-MaxUTRA-r12
931 proto_item_append_text(actx->created_item, "dBm");
933 #.FN_BODY CarrierFreqUTRA-TDD/p-MaxUTRA
935 proto_item_append_text(actx->created_item, "dBm");
937 #.FN_BODY CarrierFreqUTRA-TDD-r12/p-MaxUTRA-r12
939 proto_item_append_text(actx->created_item, "dBm");
941 #.FN_BODY CarrierFreqUTRA-FDD/q-QualMin
943 proto_item_append_text(actx->created_item, "dB");
945 #.FN_BODY CarrierFreqUTRA-FDD-Ext-r12/q-QualMin-r12
947 proto_item_append_text(actx->created_item, "dB");
950 CarrierFreqsInfoGERAN/commonInfo/q-RxLevMin DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_geran_q_RxLevMin_vals_ext
952 #.FN_BODY CarrierFreqsInfoGERAN/commonInfo/p-MaxGERAN
954 proto_item_append_text(actx->created_item, "dBm");
957 CQI-ReportConfig/nomPDSCH-RS-EPRE-Offset STRINGS=VALS(lte_rrc_nomPDSCH_RS_EPRE_Offset_vals)
960 CQI-ReportConfig-r10/nomPDSCH-RS-EPRE-Offset STRINGS=VALS(lte_rrc_nomPDSCH_RS_EPRE_Offset_vals)
963 CQI-ReportConfigSCell-r10/nomPDSCH-RS-EPRE-Offset-r10 STRINGS=VALS(lte_rrc_nomPDSCH_RS_EPRE_Offset_vals)
965 #.FN_BODY P-C-AndCBSR-r11/p-C-r11
967 proto_item_append_text(actx->created_item, "dB");
969 #.FN_BODY P-C-AndCBSR-r13/legacySet/p-C-r11
971 proto_item_append_text(actx->created_item, "dB");
973 #.FN_BODY CSI-RS-Config-r10/csi-RS-r10/setup/p-C-r10
975 proto_item_append_text(actx->created_item, "dB");
977 #.FN_BODY MAC-MainConfig
978 /* Accumulate values in drx_config while dissecting DRX config.
979 Do this here rather than down in DRX-Config so that we will see
980 fields overwritten in the R11 extension */
981 drx_config_t *drx_config = private_data_get_drx_config(actx);
983 if (drx_config->configured) {
984 mac_lte_info* p_mac_lte_info;
986 /* Verify that config is valid */
987 drx_check_config_sane(drx_config, actx);
989 /* Look for UE identifier */
990 p_mac_lte_info = (mac_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_mac_lte, 0);
991 if (p_mac_lte_info != NULL) {
992 /* If found, configure MAC with DRX config */
993 set_mac_lte_drx_config(p_mac_lte_info->ueid, drx_config, actx->pinfo);
996 /* Clear out state */
997 drx_config->configured = FALSE;
1001 #.FN_BODY MAC-MainConfig/eag_1/sr-ProhibitTimer-r9 VAL_PTR=&timer
1005 #.FN_FTR MAC-MainConfig/eag_1/sr-ProhibitTimer-r9
1006 proto_item_append_text(actx->created_item, " SR period%s", (timer > 1) ? "s" : "");
1008 #.FN_BODY MAC-MainConfig/eag_2/mac-MainConfig-v1020/extendedBSR-Sizes-r10
1009 mac_lte_info* p_mac_lte_info;
1012 /* Look for UE identifier */
1013 p_mac_lte_info = (mac_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_mac_lte, 0);
1014 if (p_mac_lte_info != NULL) {
1015 /* Tell MAC to use extended BSR sizes configuration */
1016 set_mac_lte_extended_bsr_sizes(p_mac_lte_info->ueid, TRUE, actx->pinfo);
1019 #.FN_BODY PDSCH-ConfigCommon/referenceSignalPower
1021 proto_item_append_text(actx->created_item, "dBm");
1025 proto_item_append_text(actx->created_item, "dBm");
1027 #.FN_BODY SPS-ConfigUL/setup/p0-Persistent/p0-NominalPUSCH-Persistent
1029 proto_item_append_text(actx->created_item, "dBm");
1031 #.FN_BODY SPS-ConfigUL/setup/p0-Persistent/p0-UE-PUSCH-Persistent
1033 proto_item_append_text(actx->created_item, "dB");
1035 #.FN_BODY SPS-ConfigUL/setup/eag_1/p0-PersistentSubframeSet2-r12/setup/p0-NominalPUSCH-PersistentSubframeSet2-r12
1037 proto_item_append_text(actx->created_item, "dBm");
1039 #.FN_BODY SPS-ConfigUL/setup/eag_1/p0-PersistentSubframeSet2-r12/setup/p0-UE-PUSCH-PersistentSubframeSet2-r12
1041 proto_item_append_text(actx->created_item, "dB");
1044 UplinkPowerControlCommon/deltaPreambleMsg3 STRINGS=VALS(lte_rrc_deltaPreambleMsg3_vals)
1046 #.FN_BODY UplinkPowerControlCommon/p0-NominalPUSCH
1048 proto_item_append_text(actx->created_item, "dBm");
1051 UplinkPowerControlCommonSCell-v11x0/deltaPreambleMsg3-r11 STRINGS=VALS(lte_rrc_deltaPreambleMsg3_vals)
1053 #.FN_BODY UplinkPowerControlCommon/p0-NominalPUCCH
1055 proto_item_append_text(actx->created_item, "dBm");
1057 #.FN_BODY UplinkPowerControlCommonPSCell-r12/p0-NominalPUCCH-r12
1059 proto_item_append_text(actx->created_item, "dBm");
1061 #.FN_BODY UplinkPowerControlCommonSCell-r10/p0-NominalPUSCH-r10
1063 proto_item_append_text(actx->created_item, "dBm");
1065 #.FN_BODY UplinkPowerControlDedicated/p0-UE-PUSCH
1067 proto_item_append_text(actx->created_item, "dB");
1069 #.FN_BODY UplinkPowerControlDedicated/p0-UE-PUCCH
1071 proto_item_append_text(actx->created_item, "dB");
1073 #.FN_BODY UplinkPowerControlDedicated-v1250/set2PowerControlParameter/setup/p0-NominalPUSCH-SubframeSet2-r12
1075 proto_item_append_text(actx->created_item, "dBm");
1077 #.FN_BODY UplinkPowerControlDedicated-v1250/set2PowerControlParameter/setup/p0-UE-PUSCH-SubframeSet2-r12
1079 proto_item_append_text(actx->created_item, "dB");
1081 #.FN_BODY UplinkPowerControlDedicatedSCell-r10/p0-UE-PUSCH-r10
1083 proto_item_append_text(actx->created_item, "dB");
1085 #.FN_BODY Q-QualMin-r9
1087 proto_item_append_text(actx->created_item, "dB");
1090 Q-RxLevMin DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_q_RxLevMin_vals_ext
1092 #.FN_BODY Q-OffsetRangeInterRAT
1094 proto_item_append_text(actx->created_item, "dB");
1097 ReselectionThreshold DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_ReselectionThreshold_vals_ext
1099 #.FN_BODY ReselectionThresholdQ-r9
1101 proto_item_append_text(actx->created_item, "dB");
1103 #.FN_BODY T-Reselection
1105 proto_item_append_text(actx->created_item, "s");
1108 Hysteresis DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_Hysteresis_vals_ext
1111 CSI-RSRP-Range-r12 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_RSRP_Range_vals_ext
1114 MBSFN-RSRQ-Range-r12 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_MBSFN_RSRQ_Range_vals_ext
1117 MeasConfig/s-Measure S_Measure
1120 MeasConfig/s-Measure DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_s_Measure_vals_ext
1123 MeasResultGERAN/measResult/rssi DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&gsm_a_rr_rxlev_vals_ext
1126 MeasResultUTRA/measResult/utra-EcN0 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_utra_EcN0_vals_ext
1129 MeasResultUTRA/measResult/utra-RSCP DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_utra_RSCP_vals_ext
1132 ReportConfigEUTRA/triggerType/event/eventId/eventA3/a3-Offset DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_a3_a6_c2_Offset_vals_ext
1135 ReportConfigEUTRA/triggerType/event/eventId/eventA6-r10/a6-Offset-r10 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_a3_a6_c2_Offset_vals_ext
1138 ReportConfigEUTRA/triggerType/event/eventId/eventC2-r12/c2-Offset-r12 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_a3_a6_c2_Offset_vals_ext
1141 ThresholdEUTRA/threshold-RSRP Threshold_RSRP_Range
1144 ThresholdEUTRA/threshold-RSRP DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_threshold_RSRP_vals_ext
1147 ThresholdEUTRA/threshold-RSRQ Threshold_RSRQ_Range
1150 ThresholdEUTRA/threshold-RSRQ DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_threshold_RSRQ_vals_ext
1153 ThresholdGERAN DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_thresholdGERAN_vals_ext
1156 ThresholdUTRA/utra-RSCP Threshold_utra_RSRP
1159 ThresholdUTRA/utra-RSCP DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_thresholdUTRA_RSCP_vals_ext
1162 ThresholdUTRA/utra-EcN0 Threshold_utra_EcN0
1165 ThresholdUTRA/utra-EcN0 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_thresholdUTRA_EcN0_vals_ext
1168 RSRP-Range DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_RSRP_Range_vals_ext
1171 RSRP-RangeSL-r12 DISPLAY=BASE_DEC STRINGS=VALS(lte_rrc_RSRP_RangeSL_vals)
1174 RSRP-RangeSL2-r12 DISPLAY=BASE_DEC STRINGS=VALS(lte_rrc_RSRP_RangeSL2_vals)
1177 RSRP-RangeSL3-r12 DISPLAY=BASE_DEC STRINGS=VALS(lte_rrc_RSRP_RangeSL3_vals)
1180 RSRQ-Range DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_RSRQ_Range_vals_ext
1183 RSRQ-Range-v1250 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_RSRQ_Range_vals_ext
1186 RSRQ-Range-v13xx DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_RSRQ_Range_vals_ext
1189 RS-SINR-Range-r13 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_RS_SINR_Range_r13_fmt)
1192 RSSI-Range-r13 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_RSSI_Range_r13_fmt)
1195 MeasResultForECID-r9/ue-RxTxTimeDiffResult-r9 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_ue_RxTxTimeDiffResult_fmt)
1197 #.FN_BODY MeasResultForRSSI-r13/channelOccupancy-r13
1199 proto_item_append_text(actx->created_item, " percents");
1202 UL-PDCP-DelayResult-r13/excessDelay-r13 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=<e_rrc_excessDelay_r13_vals_ext
1205 MeasResultSSTD-r13/subframeBoundaryOffsetResult-r13 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_subframeBoundaryOffsetResult_r13_fmt)
1207 #.FN_BODY SoundingRS-UL-ConfigDedicated/setup/duration
1208 actx->created_item = proto_tree_add_bits_item(tree, hf_index, tvb, offset, 1, ENC_BIG_ENDIAN);
1212 SoundingRS-UL-ConfigDedicated/setup/duration STRINGS=TFS(<e_rrc_duration_val)
1214 #.FN_HDR MasterInformationBlock
1216 col_append_str(actx->pinfo->cinfo, COL_INFO, "MasterInformationBlock");
1218 #.FN_HDR SystemInformation
1220 col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation [ ");
1222 #.FN_BODY SystemInformation
1225 col_append_str(actx->pinfo->cinfo, COL_INFO, "]");
1227 #.FN_HDR SystemInformationBlockType1
1229 col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformationBlockType1");
1231 #.FN_HDR SystemInformationBlockType2
1233 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB2 ");
1235 #.FN_HDR SystemInformationBlockType3
1237 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB3 ");
1239 #.FN_HDR SystemInformationBlockType4
1241 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB4 ");
1243 #.FN_HDR SystemInformationBlockType5
1245 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB5 ");
1247 #.FN_HDR SystemInformationBlockType6
1249 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB6 ");
1251 #.FN_HDR SystemInformationBlockType7
1253 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB7 ");
1255 #.FN_HDR SystemInformationBlockType8
1257 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB8 ");
1259 #.FN_HDR SystemInformationBlockType9
1261 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB9 ");
1263 #.FN_HDR SystemInformationBlockType10
1265 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB10 ");
1267 #.FN_HDR SystemInformationBlockType11
1269 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB11 ");
1271 #.FN_HDR SystemInformationBlockType12-r9
1273 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB12 ");
1275 #.FN_HDR SystemInformationBlockType13-r9
1277 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB13 ");
1279 #.FN_HDR SystemInformationBlockType14-r11
1281 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB14 ");
1283 #.FN_HDR SystemInformationBlockType15-r11
1285 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB15 ");
1287 #.FN_HDR SystemInformationBlockType16-r11
1289 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB16 ");
1291 #.FN_HDR SystemInformationBlockType17-r12
1293 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB17 ");
1295 #.FN_HDR SystemInformationBlockType18-r12
1297 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB18 ");
1299 #.FN_HDR SystemInformationBlockType19-r12
1301 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB19 ");
1303 #.FN_HDR SystemInformationBlockType20-r13
1305 col_append_str(actx->pinfo->cinfo, COL_INFO, "SIB20 ");
1307 #.FN_HDR MBSFNAreaConfiguration-r9
1309 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBSFNAreaConfiguration-r9");
1311 #.FN_HDR MBMSCountingRequest-r10
1313 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCountingRequest-r10");
1317 col_append_str(actx->pinfo->cinfo, COL_INFO, "Paging");
1319 #.FN_HDR RRCConnectionReestablishment
1321 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReestablishment");
1323 #.FN_HDR RRCConnectionReestablishmentReject
1325 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReestablishmentReject");
1327 #.FN_HDR RRCConnectionReject
1329 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReject");
1331 #.FN_HDR RRCConnectionSetup
1332 mac_lte_info* p_mac_lte_info;
1334 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetup");
1336 #.FN_HDR CSFBParametersResponseCDMA2000
1338 col_append_str(actx->pinfo->cinfo, COL_INFO, "CSFBParametersResponseCDMA2000");
1340 #.FN_HDR DLInformationTransfer
1342 col_append_str(actx->pinfo->cinfo, COL_INFO, "DLInformationTransfer");
1344 #.FN_HDR HandoverFromEUTRAPreparationRequest
1346 col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromEUTRAPreparationRequest");
1348 #.FN_HDR MobilityFromEUTRACommand
1350 col_append_str(actx->pinfo->cinfo, COL_INFO, "MobilityFromEUTRACommand");
1352 #.FN_HDR RRCConnectionReconfiguration
1354 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReconfiguration");
1356 #.FN_HDR RRCConnectionRelease
1358 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease");
1360 #.FN_HDR SecurityModeCommand
1362 col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeCommand");
1364 #.FN_HDR UECapabilityEnquiry
1366 col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityEnquiry");
1368 #.FN_HDR CounterCheck
1370 col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheck");
1372 #.FN_HDR UEInformationRequest-r9
1374 col_append_str(actx->pinfo->cinfo, COL_INFO, "UEInformationRequest-r9");
1376 #.FN_HDR LoggedMeasurementConfiguration-r10
1378 col_append_str(actx->pinfo->cinfo, COL_INFO, "LoggedMeasurementConfiguration-r10");
1380 #.FN_HDR RNReconfiguration-r10
1382 col_append_str(actx->pinfo->cinfo, COL_INFO, "RNReconfiguration-r10");
1384 #.FN_HDR RRCConnectionReestablishmentRequest
1386 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReestablishmentRequest");
1388 #.FN_HDR RRCConnectionRequest
1390 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRequest");
1392 #.FN_HDR CSFBParametersRequestCDMA2000
1394 col_append_str(actx->pinfo->cinfo, COL_INFO, "CSFBParametersRequestCDMA2000");
1396 #.FN_HDR MeasurementReport
1398 col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementReport");
1400 #.FN_HDR RRCConnectionReconfigurationComplete
1402 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReconfigurationComplete");
1404 #.FN_HDR RRCConnectionReestablishmentComplete
1406 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReestablishmentComplete");
1408 #.FN_HDR RRCConnectionSetupComplete
1410 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetupComplete");
1412 #.FN_HDR SecurityModeComplete
1414 col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeComplete");
1416 #.FN_BODY SecurityModeFailure
1417 mac_lte_info *p_mac_lte_info;
1419 /* Look for UE identifier */
1420 p_mac_lte_info = (mac_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_mac_lte, 0);
1422 if (p_mac_lte_info != NULL) {
1423 /* Inform PDCP that the UE failed to execute the securityModeCommand */
1424 set_pdcp_lte_security_algorithms_failed(p_mac_lte_info->ueid);
1427 col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeFailure");
1430 #.FN_HDR UECapabilityInformation
1432 col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformation");
1434 #.FN_HDR ULHandoverPreparationTransfer
1436 col_append_str(actx->pinfo->cinfo, COL_INFO, "ULHandoverPreparationTransfer");
1438 #.FN_HDR ULInformationTransfer
1440 col_append_str(actx->pinfo->cinfo, COL_INFO, "ULInformationTransfer");
1442 #.FN_HDR CounterCheckResponse
1444 col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheckResponse");
1446 #.FN_HDR UEInformationResponse-r9
1448 col_append_str(actx->pinfo->cinfo, COL_INFO, "UEInformationResponse-r9");
1450 #.FN_HDR ProximityIndication-r9
1452 col_append_str(actx->pinfo->cinfo, COL_INFO, "ProximityIndication-r9");
1454 #.FN_HDR RNReconfigurationComplete-r10
1456 col_append_str(actx->pinfo->cinfo, COL_INFO, "RNReconfigurationComplete-r10");
1458 #.FN_HDR MBMSCountingResponse-r10
1460 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCountingResponse-r10");
1462 #.FN_HDR InterFreqRSTDMeasurementIndication-r10
1464 col_append_str(actx->pinfo->cinfo, COL_INFO, "InterFreqRSTDMeasurementIndication-r10");
1466 #.FN_HDR UEAssistanceInformation-r11
1468 col_append_str(actx->pinfo->cinfo, COL_INFO, "UEAssistanceInformation-r11");
1470 #.FN_HDR InDeviceCoexIndication-r11
1472 col_append_str(actx->pinfo->cinfo, COL_INFO, "InDeviceCoexIndication-r11");
1474 #.FN_HDR MBMSInterestIndication-r11
1476 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSInterestIndication-r11");
1478 #.FN_HDR SCGFailureInformation-r12
1480 col_append_str(actx->pinfo->cinfo, COL_INFO, "SCGFailureInformation-r12");
1482 #.FN_HDR SidelinkUEInformation-r12
1484 col_append_str(actx->pinfo->cinfo, COL_INFO, "SidelinkUEInformation-r12");
1486 #.FN_HDR MasterInformationBlock-SL
1488 col_append_str(actx->pinfo->cinfo, COL_INFO, "MasterInformationBlock-SL");
1490 #.FN_BODY Paging/systemInfoModification
1492 col_append_str(actx->pinfo->cinfo, COL_INFO, " (systemInfoModification)");
1493 expert_add_info(actx->pinfo, actx->created_item, &ei_lte_rrc_sibs_changing);
1495 #.FN_BODY Paging/pagingRecordList
1496 /* Number of items is (last 3 bits of first byte and first bit of second) + 1 */
1497 guint16 number_of_records = ((tvb_get_ntohs(tvb, 0) >> 7) & 0x0f) + 1;
1499 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%u PagingRecords)", number_of_records);
1501 #.FN_BODY Paging-v13xx-IEs/systemInfoModification-eDRX-r13
1503 col_append_str(actx->pinfo->cinfo, COL_INFO, " (systemInfoModification-eDRX-r13)");
1504 expert_add_info(actx->pinfo, actx->created_item, &ei_lte_rrc_sibs_changing_edrx);
1506 #.FN_BODY MasterInformationBlock/systemFrameNumber VAL_PTR=&value_tvb
1507 tvbuff_t *value_tvb;
1510 /* Show SFN in info column */
1511 sfn = tvb_get_guint8(value_tvb, 0);
1512 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (SFN=%%u)", sfn);
1514 #.FN_BODY SystemInformationBlockType1/systemInfoValueTag VAL_PTR=&value
1517 /* Track whether systemInfoValue has changed since last seen, indicating new SI config
1518 TODO: add link back to previous config and (if known) time since previous config
1520 if (!actx->pinfo->fd->flags.visited) {
1521 if (system_info_value_current_set && (value != system_info_value_current)) {
1522 /* Add entry to the hash table. Offset by one to distinguish 0 from lookup failure */
1523 g_hash_table_insert(lte_rrc_system_info_value_changed_hash, GUINT_TO_POINTER(actx->pinfo->num),
1524 GUINT_TO_POINTER(system_info_value_current+1));
1526 system_info_value_current_set = TRUE;
1527 system_info_value_current = value;
1530 /* Look up indication of changed info value from hash table */
1531 gpointer p_previous = g_hash_table_lookup(lte_rrc_system_info_value_changed_hash, GUINT_TO_POINTER(actx->pinfo->num));
1532 if (p_previous != NULL) {
1533 /* Subtract one from stored result to get previous value */
1534 guint32 previous = GPOINTER_TO_UINT(p_previous) - 1;
1535 expert_add_info_format(actx->pinfo, actx->created_item, &ei_lte_rrc_si_info_value_changed,
1536 "SI Info Value changed (now %%u, was %%u)", value, previous);
1540 #.FN_BODY Paging/etws-Indication
1542 col_append_str(actx->pinfo->cinfo, COL_INFO, " (ETWS)");
1543 expert_add_info(actx->pinfo, actx->created_item, &ei_lte_rrc_earthquake_warning_sys);
1545 #.FN_BODY Paging-v920-IEs/cmas-Indication-r9
1547 col_append_str(actx->pinfo->cinfo, COL_INFO, " (CMAS)");
1548 expert_add_info(actx->pinfo, actx->created_item, &ei_lte_rrc_commercial_mobile_alert_sys);
1550 #.FN_BODY RadioResourceConfigDedicated
1551 private_data_set_simult_pucch_pusch_cell_type(actx, SIMULT_PUCCH_PUSCH_PCELL);
1554 #.FN_BODY RadioResourceConfigDedicatedPSCell-r12
1555 private_data_set_simult_pucch_pusch_cell_type(actx, SIMULT_PUCCH_PUSCH_PSCELL);
1558 #.FN_BODY DRB-ToAddMod
1559 struct mac_lte_info *p_mac_lte_info;
1560 struct rlc_lte_info *p_rlc_lte_info;
1561 /* Get the struct and clear it out */
1562 drb_mapping_t *drb_mapping = private_data_get_drb_mapping(actx);
1563 memset(drb_mapping, 0, sizeof(*drb_mapping));
1565 /* Need UE identifier */
1566 p_mac_lte_info = (mac_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_mac_lte, 0);
1567 if (p_mac_lte_info) {
1568 drb_mapping->ueid = p_mac_lte_info->ueid;
1569 /* Tell MAC about this mapping */
1570 set_mac_lte_channel_mapping(drb_mapping);
1573 /* Also tell RLC how many PDCP sequence number bits and wether it should use extended LI */
1574 p_rlc_lte_info = (rlc_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_rlc_lte, 0);
1575 if (p_rlc_lte_info) {
1576 if (drb_mapping->pdcp_sn_size_present) {
1577 set_rlc_lte_drb_pdcp_seqnum_length(actx->pinfo,
1578 p_rlc_lte_info->ueid,
1580 drb_mapping->pdcp_sn_size);
1582 if (drb_mapping->rlcMode_present) {
1583 set_rlc_lte_drb_li_field(actx->pinfo,
1584 p_rlc_lte_info->ueid,
1586 drb_mapping->rlc_ul_ext_li_field,
1587 drb_mapping->rlc_dl_ext_li_field);
1591 /* Clear out the struct again */
1592 memset(&drb_mapping, 0, sizeof(drb_mapping));
1595 #.FN_BODY DRB-Identity VAL_PTR=&value
1597 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1599 if (mapping != NULL) {
1600 mapping->drbid = (guint8)value;
1603 #.FN_BODY RLC-Config VAL_PTR=&value
1605 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1607 if (mapping != NULL) {
1608 mapping->rlcMode = (value==0) ? RLC_AM_MODE : RLC_UM_MODE;
1609 mapping->rlcMode_present = TRUE;
1611 if (mapping->rlcMode == RLC_AM_MODE) {
1612 mapping->pdcp_sn_size = 12;
1613 mapping->pdcp_sn_size_present = TRUE;
1617 #.FN_BODY RLC-Config-v1250/ul-extended-RLC-LI-Field-r12 VAL_PTR=&ext_li_field
1618 gboolean ext_li_field;
1619 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1621 if (mapping != NULL) {
1622 mapping->rlc_ul_ext_li_field = ext_li_field;
1625 #.FN_BODY RLC-Config-v1250/dl-extended-RLC-LI-Field-r12 VAL_PTR=&ext_li_field
1626 gboolean ext_li_field;
1627 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1629 if (mapping != NULL) {
1630 mapping->rlc_dl_ext_li_field = ext_li_field;
1633 #.FN_BODY RLC-Config-v13xx/ul-extended-RLC-AM-SN-r13 VAL_PTR=&ext_am_sn
1635 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1637 if (mapping != NULL) {
1638 mapping->rlc_ul_ext_am_sn = ext_am_sn;
1641 #.FN_BODY RLC-Config-v13xx/dl-extended-RLC-AM-SN-r13 VAL_PTR=&ext_am_sn
1643 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1645 if (mapping != NULL) {
1646 mapping->rlc_dl_ext_am_sn = ext_am_sn;
1649 #.FN_BODY DRB-ToAddMod/logicalChannelIdentity VAL_PTR=&value
1651 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1653 if (mapping != NULL) {
1654 mapping->lcid = (guint8)value;
1655 mapping->lcid_present = TRUE;
1658 #.FN_BODY SN-FieldLength VAL_PTR=&value
1660 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1662 if (mapping != NULL) {
1663 mapping->um_sn_length = (value==0) ? 5 : 10;
1664 mapping->um_sn_length_present = TRUE;
1667 #.FN_BODY LogicalChannelConfig/ul-SpecificParameters/priority VAL_PTR=&value
1669 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1671 if (mapping != NULL) {
1672 mapping->ul_priority = value;
1673 mapping->ul_priority_present = TRUE;
1676 #.FN_BODY PDCP-Config/rlc-UM/pdcp-SN-Size VAL_PTR=&value
1678 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1680 if (mapping != NULL) {
1681 mapping->pdcp_sn_size = (value==0) ? 7 : 12;
1682 mapping->pdcp_sn_size_present = TRUE;
1685 #.FN_BODY PDCP-Config/eag_2/pdcp-SN-Size-v1130
1686 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1688 if (mapping != NULL) {
1689 mapping->pdcp_sn_size = 15;
1690 mapping->pdcp_sn_size_present = TRUE;
1693 #.FN_BODY PDCP-Config/eag_4/pdcp-SN-Size-v13xx
1694 drb_mapping_t *mapping = private_data_get_drb_mapping(actx);
1696 if (mapping != NULL) {
1697 mapping->pdcp_sn_size = 18;
1698 mapping->pdcp_sn_size_present = TRUE;
1701 #.FN_BODY NeighCellsInfo-r12/transmissionModeList-r12 VAL_PTR=&tm_list_tvb
1702 tvbuff_t *tm_list_tvb=NULL;
1703 proto_tree *subtree;
1706 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_transmissionModeList_r12);
1707 proto_tree_add_bits_item(subtree, hf_lte_rrc_transmissionModeList_r12_tm1, tm_list_tvb, 0, 1, ENC_BIG_ENDIAN);
1708 proto_tree_add_bits_item(subtree, hf_lte_rrc_transmissionModeList_r12_tm2, tm_list_tvb, 1, 1, ENC_BIG_ENDIAN);
1709 proto_tree_add_bits_item(subtree, hf_lte_rrc_transmissionModeList_r12_tm3, tm_list_tvb, 2, 1, ENC_BIG_ENDIAN);
1710 proto_tree_add_bits_item(subtree, hf_lte_rrc_transmissionModeList_r12_tm4, tm_list_tvb, 3, 1, ENC_BIG_ENDIAN);
1711 proto_tree_add_bits_item(subtree, hf_lte_rrc_transmissionModeList_r12_tm6, tm_list_tvb, 4, 1, ENC_BIG_ENDIAN);
1712 proto_tree_add_bits_item(subtree, hf_lte_rrc_transmissionModeList_r12_tm8, tm_list_tvb, 5, 1, ENC_BIG_ENDIAN);
1713 proto_tree_add_bits_item(subtree, hf_lte_rrc_transmissionModeList_r12_tm9, tm_list_tvb, 6, 1, ENC_BIG_ENDIAN);
1714 proto_tree_add_bits_item(subtree, hf_lte_rrc_transmissionModeList_r12_tm10, tm_list_tvb, 7, 1, ENC_BIG_ENDIAN);
1717 #.FN_BODY PUCCH-ConfigDedicated-v1020/simultaneousPUCCH-PUSCH-r10
1718 mac_lte_info* p_mac_lte_info;
1721 /* Look for UE identifier */
1722 p_mac_lte_info = (mac_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_mac_lte, 0);
1723 if (p_mac_lte_info != NULL) {
1724 /* Tell MAC to use simultaneous PUCCH/PUSCH configuration */
1725 set_mac_lte_simult_pucch_pusch(p_mac_lte_info->ueid, private_data_get_simult_pucch_pusch_cell_type(actx), TRUE, actx->pinfo);
1729 PUCCH-ConfigDedicated-v13xy/codebooksizeDetermination-r13 DISPLAY=BASE_DEC STRINGS=VALS(lte_rrc_codebooksizeDetermination_r13_vals)
1731 #.FN_BODY RACH-ConfigCommon/preambleInfo
1733 /* Initialise to invalid value */
1734 private_data_set_ra_preambles(actx, 0);
1736 #.FN_BODY RACH-ConfigCommon/preambleInfo/numberOfRA-Preambles VAL_PTR=&value
1739 /* This is mandatory, store value */
1740 private_data_set_ra_preambles(actx, value);
1742 #.FN_BODY RACH-ConfigCommon/preambleInfo/preamblesGroupAConfig/sizeOfRA-PreamblesGroupA VAL_PTR=&value
1743 guint ra_value, value;
1745 /* Retrived stored value for RA (both Group A & Group B) */
1746 ra_value = private_data_get_ra_preambles(actx);
1747 if (value > ra_value) {
1748 /* Something is wrong if A has more RAPIDs than A & B combined! */
1749 expert_add_info_format(actx->pinfo, actx->created_item, &ei_lte_rrc_too_many_group_a_rapids,
1750 "Group A size (%%s) > Total RA size (%%s)!",
1751 val_to_str_const(value, lte_rrc_T_sizeOfRA_PreamblesGroupA_vals, "Unknown"),
1752 val_to_str_const(ra_value, lte_rrc_T_numberOfRA_Preambles_vals, "Unknown"));
1755 /* Tell MAC dissector so that it can say for RAPIDs whether A, B, non-RA */
1756 set_mac_lte_rapid_ranges((value+1)*4, (ra_value+1)*4);
1758 private_data_set_ra_preambles(actx, 0);
1760 #.FN_BODY RACH-ConfigCommon-v1250/txFailParams-r12/connEstFailOffset-r12
1762 proto_item_append_text(actx->created_item, "dB");
1764 #.FN_BODY DRX-Config/setup/onDurationTimer VAL_PTR=&value
1766 drx_config_t* config = private_data_get_drx_config(actx);
1768 /* Set 'configured' state so that config can be examine once complete! */
1769 config->configured = TRUE;
1770 config->onDurationTimer = drx_lookup_onDurationTimer(value);
1772 #.FN_BODY DRX-Config/setup/drx-InactivityTimer VAL_PTR=&value
1774 drx_config_t* config = private_data_get_drx_config(actx);
1776 config->inactivityTimer = drx_lookup_inactivityTimer(value);
1778 #.FN_BODY DRX-Config/setup/drx-RetransmissionTimer VAL_PTR=&value
1780 drx_config_t* config = private_data_get_drx_config(actx);
1782 config->retransmissionTimer = drx_lookup_retransmissionTimer(value);
1784 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset VAL_PTR=&value
1786 drx_config_t* config = private_data_get_drx_config(actx);
1788 config->longCycle = drx_lookup_longCycle(value);
1790 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf10 VAL_PTR=&value
1792 drx_config_t* config = private_data_get_drx_config(actx);
1794 config->cycleOffset = value;
1796 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf20 VAL_PTR=&value
1798 drx_config_t* config = private_data_get_drx_config(actx);
1800 config->cycleOffset = value;
1802 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf32 VAL_PTR=&value
1804 drx_config_t* config = private_data_get_drx_config(actx);
1806 config->cycleOffset = value;
1808 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf40 VAL_PTR=&value
1810 drx_config_t* config = private_data_get_drx_config(actx);
1812 config->cycleOffset = value;
1814 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf64 VAL_PTR=&value
1816 drx_config_t* config = private_data_get_drx_config(actx);
1818 config->cycleOffset = value;
1820 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf80 VAL_PTR=&value
1822 drx_config_t* config = private_data_get_drx_config(actx);
1824 config->cycleOffset = value;
1826 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf128 VAL_PTR=&value
1828 drx_config_t* config = private_data_get_drx_config(actx);
1830 config->cycleOffset = value;
1832 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf160 VAL_PTR=&value
1834 drx_config_t* config = private_data_get_drx_config(actx);
1836 config->cycleOffset = value;
1838 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf256 VAL_PTR=&value
1840 drx_config_t* config = private_data_get_drx_config(actx);
1842 config->cycleOffset = value;
1844 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf320 VAL_PTR=&value
1846 drx_config_t* config = private_data_get_drx_config(actx);
1848 config->cycleOffset = value;
1850 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf512 VAL_PTR=&value
1852 drx_config_t* config = private_data_get_drx_config(actx);
1854 config->cycleOffset = value;
1856 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf640 VAL_PTR=&value
1858 drx_config_t* config = private_data_get_drx_config(actx);
1860 config->cycleOffset = value;
1862 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf1024 VAL_PTR=&value
1864 drx_config_t* config = private_data_get_drx_config(actx);
1866 config->cycleOffset = value;
1868 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf1280 VAL_PTR=&value
1870 drx_config_t* config = private_data_get_drx_config(actx);
1872 config->cycleOffset = value;
1874 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf2048 VAL_PTR=&value
1876 drx_config_t* config = private_data_get_drx_config(actx);
1878 config->cycleOffset = value;
1880 #.FN_BODY DRX-Config/setup/longDRX-CycleStartOffset/sf2560 VAL_PTR=&value
1882 drx_config_t* config = private_data_get_drx_config(actx);
1884 config->cycleOffset = value;
1886 #.FN_BODY DRX-Config/setup/shortDRX/shortDRX-Cycle VAL_PTR=&value
1888 drx_config_t* config = private_data_get_drx_config(actx);
1890 config->shortCycleConfigured = TRUE;
1891 config->shortCycle = drx_lookup_shortCycle(value);
1893 #.FN_BODY DRX-Config/setup/shortDRX/drxShortCycleTimer VAL_PTR=&timer
1895 drx_config_t* config = private_data_get_drx_config(actx);
1897 config->shortCycleTimer = timer;
1899 #.FN_FTR DRX-Config/setup/shortDRX/drxShortCycleTimer
1900 proto_item_append_text(actx->created_item, " shortDRX-Cycle%s", plurality(timer, "", "s"));
1902 #.FN_BODY DRX-Config-v1130/drx-RetransmissionTimer-v1130 VAL_PTR=&value
1904 drx_config_t* config = private_data_get_drx_config(actx);
1906 config->retransmissionTimer = 0;
1908 #.FN_BODY DRX-Config-v1130/longDRX-CycleStartOffset-v1130 VAL_PTR=&value
1910 drx_config_t* config = private_data_get_drx_config(actx);
1912 config->longCycle = drx_lookup_longCycle_v1130(value);
1914 #.FN_BODY DRX-Config-v1130/longDRX-CycleStartOffset-v1130/sf60-v1130 VAL_PTR=&value
1916 drx_config_t* config = private_data_get_drx_config(actx);
1918 config->cycleOffset = value;
1920 #.FN_BODY DRX-Config-v1130/longDRX-CycleStartOffset-v1130/sf70-v1130 VAL_PTR=&value
1922 drx_config_t* config = private_data_get_drx_config(actx);
1924 config->cycleOffset = value;
1926 #.FN_BODY DRX-Config-v1130/shortDRX-Cycle-v1130 VAL_PTR=&value
1928 drx_config_t* config = private_data_get_drx_config(actx);
1930 /* Presumably config->shortCycleConfigured will be set... */
1931 config->shortCycle = 4;
1933 #.FN_BODY DRX-Config/release
1934 mac_lte_info* p_mac_lte_info;
1936 /* Look for UE identifier */
1937 p_mac_lte_info = (mac_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_mac_lte, 0);
1938 if (p_mac_lte_info != NULL) {
1939 /* If found, tell MAC to release DRX config */
1940 set_mac_lte_drx_config_release(p_mac_lte_info->ueid, actx->pinfo);
1943 #.FN_BODY RRCConnectionSetup
1944 /* Look for UE identifier */
1945 p_mac_lte_info = (mac_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_mac_lte, 0);
1946 if (p_mac_lte_info != NULL) {
1947 /* If found, tell MAC to release DRX config coming from a previous RRC connection */
1948 /* We do release the configuration here instead of RRC Connection Release message */
1949 /* as the UE could have locally dropped the previous RRC Connection */
1950 set_mac_lte_drx_config_release(p_mac_lte_info->ueid, actx->pinfo);
1951 /* Also tell MAC to release extended BSR sizes configuration */
1952 set_mac_lte_extended_bsr_sizes(p_mac_lte_info->ueid, FALSE, actx->pinfo);
1953 /* Also tell MAC to release simutaneous PUCCH/PUSCH configuration */
1954 set_mac_lte_simult_pucch_pusch(p_mac_lte_info->ueid, SIMULT_PUCCH_PUSCH_PCELL, FALSE, actx->pinfo);
1955 set_mac_lte_simult_pucch_pusch(p_mac_lte_info->ueid, SIMULT_PUCCH_PUSCH_PSCELL, FALSE, actx->pinfo);
1956 /* TODO: also release PDCP security config here */
1961 #.FN_BODY SecurityAlgorithmConfig
1962 pdcp_lte_info *p_pdcp_lte_info;
1963 pdcp_security_info_t *p_security_algorithms;
1965 p_security_algorithms = private_data_pdcp_security_algorithms(actx);
1966 p_security_algorithms->configuration_frame = actx->pinfo->num;
1967 p_security_algorithms->previous_configuration_frame = 0;
1968 p_security_algorithms->previous_integrity = eia0;
1969 p_security_algorithms->previous_ciphering = eea0;
1971 /* Look for UE identifier */
1972 p_pdcp_lte_info = (pdcp_lte_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_pdcp_lte, 0);
1973 if (p_pdcp_lte_info != NULL) {
1974 /* Configure algorithms */
1975 set_pdcp_lte_security_algorithms(p_pdcp_lte_info->ueid, p_security_algorithms);
1978 #.FN_BODY CipheringAlgorithm-r12 VAL_PTR=&value
1980 pdcp_security_info_t *p_security_algorithms;
1982 p_security_algorithms = private_data_pdcp_security_algorithms(actx);
1983 p_security_algorithms->ciphering = (enum security_ciphering_algorithm_e)value;
1985 #.FN_BODY SecurityAlgorithmConfig/integrityProtAlgorithm VAL_PTR=&value
1987 pdcp_security_info_t *p_security_algorithms;
1989 p_security_algorithms = private_data_pdcp_security_algorithms(actx);
1990 p_security_algorithms->integrity = (enum security_integrity_algorithm_e)value;
1992 #.FN_BODY SchedulingRequestConfig/setup/sr-ConfigIndex VAL_PTR=&value
1994 guint16 periodicity, subframe_offset;
1996 proto_tree *subtree;
1997 gint index_offset = offset;
1999 /* Break config index into its parts */
2000 sr_lookup_configindex(value, &periodicity, &subframe_offset);
2001 /* Show parts as generated fields */
2002 subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_sr_ConfigIndex);
2003 ti = proto_tree_add_uint(subtree, hf_lte_rrc_sr_config_periodicity, tvb, index_offset>>3, 1, periodicity);
2004 PROTO_ITEM_SET_GENERATED(ti);
2005 ti = proto_tree_add_uint(subtree, hf_lte_rrc_sr_config_subframe_offset, tvb, index_offset>>3, 1, subframe_offset);
2006 PROTO_ITEM_SET_GENERATED(ti);
2009 #.FN_BODY FreqBandIndicator VAL_PTR=&value
2012 set_freq_band_indicator(value, actx);
2014 #.FN_FTR BandParameters-r10/bandEUTRA-r10
2015 remove_last_freq_band_indicator(actx);
2017 #.FN_BODY InterFreqBandInfo
2018 meas_capabilities_item_band_mappings_t *mappings;
2021 mappings = private_data_meas_capabilities_item_band_mappings(actx);
2022 if (mappings->number_of_interfreq_serving_read < mappings->number_of_bands_set) {
2023 guint16 serving_band = mappings->band_by_item[mappings->number_of_interfreq_serving_read];
2024 guint16 target_band = mappings->band_by_item[mappings->number_of_interfreq_target_read++];
2025 if (mappings->number_of_interfreq_target_read == mappings->number_of_bands_set) {
2026 mappings->number_of_interfreq_target_read = 0;
2027 mappings->number_of_interfreq_serving_read++;
2030 /* Add a generated item showing serving & target band for this entry */
2031 it = proto_tree_add_uint(tree, hf_lte_rrc_bandEUTRA, tvb, 0, 0, serving_band);
2032 proto_item_append_text(it, " -> band %%u", target_band);
2033 PROTO_ITEM_SET_GENERATED(it);
2036 #.FN_BODY UE-EUTRA-Capability/measParameters
2037 meas_capabilities_item_band_mappings_t *mappings;
2039 /* Clear band mapping once measParameters IE has been decoded */
2040 mappings = private_data_meas_capabilities_item_band_mappings(actx);
2041 mappings->number_of_bands_set = 0;
2043 #.FN_BODY ReleaseCause VAL_PTR=&value
2046 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [cause=%%s]",
2047 val_to_str(value, lte_rrc_ReleaseCause_vals, "Unknown"));
2049 #.FN_BODY VisitedCellInfo-r12/timeSpent-r12
2051 proto_item_append_text(actx->created_item, "s");
2053 #.FN_BODY WLAN-OffloadConfig-r12/thresholdChannelUtilization-r12/thresholdChannelUtilizationLow-r12
2055 proto_item_append_text(actx->created_item, " (BSS load)");
2057 #.FN_BODY WLAN-OffloadConfig-r12/thresholdChannelUtilization-r12/thresholdChannelUtilizationHigh-r12
2059 proto_item_append_text(actx->created_item, " (BSS load)");
2061 #.FN_BODY WLAN-backhaulRate-r12
2063 proto_item_append_text(actx->created_item, " Kbps");
2065 #.FN_BODY SL-DiscResourcePool-r12/eag_1/txParamsAddNeighFreq-r13/referenceSignalPower
2067 proto_item_append_text(actx->created_item, "dBm");
2070 SL-SysInfoReport-r13/cellSelectionInfo-r13/q-RxLevMinOffset-r13 STRINGS=VALS(lte_rrc_q_RxLevMinOffset_vals)
2072 #.FN_BODY SL-SysInfoReport-r13/referenceSignalPower-r13
2074 proto_item_append_text(actx->created_item, "dBm");
2078 proto_item_append_text(actx->created_item, "dBm");