2 # rrc conformation file
3 # Copyright 2006 Anders Broman
8 PROTO_ROOT_NAME proto_rrc
12 AverageRLC-BufferPayload
14 DL-TS-ChannelisationCode-VHCR
16 E-DCH-MAC-d-FlowRetransTimer
18 CommonEDCHSystemInfo/modeSpecificInfo/tdd/tdd128/ccch-transmission-Info/harq-retransmission-timer
19 MBMS-AccessProbabilityFactor
20 PNBSCH-Allocation-r4/numberOfRepetitionsPerSFNPeriod
21 RadioFrequencyBandFDD3
22 E-PUCH-Info/modeSpecificInfo/tdd128/retransTimerForSchedInfo
23 E-PUCH-Info-TDD128/retransTimerForSchedInfo
26 SCCPCH-ChannelisationCode-VHCR
33 TDD-PRACH-CCode-LCR-r4
37 TrafficVolumeThreshold
40 UL-TS-ChannelisationCode
41 UL-TS-ChannelisationCode-VHCR
43 UE-DTX-Cycle2-2ms-Secondary
45 WLANThreshBackhaulRate
49 InterRATHandoverInfo_PDU
50 ToTargetRNC-Container_PDU
51 TargetRNC-ToSourceRNC-Container_PDU
52 HandoverToUTRANCommand_PDU
79 MasterInformationBlock_PDU
83 # Omit System-Information-Container for now it messes up the
84 # MasterInformationBlock @si.mib
87 UE-RadioAccessCapability-v890ext
88 UE-RadioAccessCapability-va60ext
89 UL-PhysChCapabilityFDD-r6
91 UE-Positioning-GANSS-Data
94 RRCConnectionRelease-CCCH-va40ext-IEs
95 MeasuredResultsList-vd20ext
100 DL-DCCH-Message @dl.dcch
101 UL-DCCH-Message @ul.dcch
102 DL-CCCH-Message @dl.ccch
103 UL-CCCH-Message @ul.ccch
105 DL-SHCCH-Message @dl.shcch
106 UL-SHCCH-Message @ul.shcch
107 BCCH-FACH-Message @bcch.fach
108 BCCH-BCH-Message @bcch.bch
109 BCCH-BCH2-Message @bcch.bch2
112 SystemInformation-BCH @sysinfo
113 SystemInformation2-BCH @sysinfo2
114 System-Information-Container @sysinfo.cont
115 MasterInformationBlock @si.mib
117 SysInfoType1 @si.sib1
118 SysInfoType2 @si.sib2
119 SysInfoType3 @si.sib3
120 SysInfoType4 @si.sib4
121 SysInfoType5 @si.sib5
122 SysInfoType5bis @si.sib5bis
123 SysInfoType6 @si.sib6
124 SysInfoType7 @si.sib7
125 SysInfoType8 @si.sib8
126 SysInfoType9 @si.sib9
127 SysInfoType10 @si.sib10
128 SysInfoType11 @si.sib11
129 SysInfoType11bis @si.sib11bis
130 SysInfoType11ter @si.sib11ter
131 SysInfoType12 @si.sib12
132 SysInfoType13 @si.sib13
133 SysInfoType13-1 @si.sib13-1
134 SysInfoType13-2 @si.sib13-2
135 SysInfoType13-3 @si.sib13-3
136 SysInfoType13-4 @si.sib13-4
137 SysInfoType14 @si.sib14
138 SysInfoType15 @si.sib15
139 SysInfoType15bis @si.sib15bis
140 SysInfoType15-1 @si.sib15-1
141 SysInfoType15-1bis @si.sib15-1bis
142 SysInfoType15-1ter @si.sib15-1ter
143 SysInfoType15-2 @si.sib15-2
144 SysInfoType15-2bis @si.sib15-2bis
145 SysInfoType15-2ter @si.sib15-2ter
146 SysInfoType15-3 @si.sib15-3
147 SysInfoType15-3bis @si.sib15-3bis
148 SysInfoType15-4 @si.sib15-4
149 SysInfoType15-5 @si.sib15-5
150 SysInfoType15-6 @si.sib15-6
151 SysInfoType15-7 @si.sib15-7
152 SysInfoType15-8 @si.sib15-8
153 SysInfoType16 @si.sib16
154 SysInfoType17 @si.sib17
155 SysInfoType18 @si.sib18
156 SysInfoType19 @si.sib19
157 SysInfoType20 @si.sib20
158 SysInfoType21 @si.sib21
159 SysInfoType22 @si.sib22
160 SysInfoType23 @si.sib23
161 SysInfoType24 @si.sib24
162 SysInfoType25 @si.sib25
163 SysInfoTypeSB1 @si.sb1
164 SysInfoTypeSB2 @si.sb2
165 SysInfoTypeSB3 @si.sb3
166 HandoverToUTRANCommand @irat.ho_to_utran_cmd
167 InterRATHandoverInfo @irat.irat_ho_info
168 UE-RadioAccessCapabilityInfo @ue_radio_access_cap_info
169 ToTargetRNC-Container @s_to_trnc_cont
170 TargetRNC-ToSourceRNC-Container @t_to_srnc_cont
173 HandoverFromUTRANCommand-GSM-r3-IEs/gsm-message/gsm-MessageList gsm-MessageList-r3
174 HandoverFromUTRANCommand-GSM-r6-IEs/gsm-message/gsm-MessageList gsm-MessageList-r6
175 HandoverFromUTRANFailure/interRATMessage/gsm/gsm-MessageList gsm-MessageList-gsm
177 HandoverFromUTRANCommand-GSM-r3-IEs/gsm-message/single-GSM-Message single-GSM-Message-r3
178 HandoverFromUTRANCommand-GSM-r6-IEs/gsm-message/single-GSM-Message single-GSM-Message-r6
182 #.FN_BODY NAS-Message VAL_PTR = &nas_message_tvb
183 tvbuff_t *nas_message_tvb=NULL;
187 if (nas_message_tvb && gsm_a_dtap_handle) {
188 proto_tree *nas_tree = rrc_nas_in_root_tree ? proto_tree_get_root(tree) : tree;
189 call_dissector(gsm_a_dtap_handle,nas_message_tvb,%(ACTX)s->pinfo, nas_tree);
192 #.FN_BODY InterRATHandoverInfo/ue-CapabilityContainer/present VAL_PTR = &ue_radio_access_cap_info_tvb
193 tvbuff_t *ue_radio_access_cap_info_tvb=NULL;
197 if (ue_radio_access_cap_info_tvb)
198 call_dissector(rrc_ue_radio_access_cap_info_handle,ue_radio_access_cap_info_tvb,%(ACTX)s->pinfo, tree);
202 #.FN_BODY ActiveSetUpdate
203 col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdate");
206 #.FN_BODY ActiveSetUpdateComplete
207 col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdateComplete");
210 #.FN_BODY ActiveSetUpdateFailure
211 col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdateFailure");
214 #.FN_BODY AssistanceDataDelivery
215 col_append_str(actx->pinfo->cinfo, COL_INFO, "AssistanceDataDelivery");
218 #.FN_BODY CellChangeOrderFromUTRAN
219 col_append_str(actx->pinfo->cinfo, COL_INFO, "CellChangeOrderFromUTRAN");
222 #.FN_BODY CellChangeOrderFromUTRANFailure
223 col_append_str(actx->pinfo->cinfo, COL_INFO, "CellChangeOrderFromUTRANFailure");
227 col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdate");
230 #.FN_BODY CellUpdateFDD-r11
231 col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateFDD-r11");
234 #.FN_BODY CellUpdateConfirm-CCCH
235 fp_info *fpinf = NULL;
236 rlc_info *rlcinf = NULL;
238 col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm-CCCH");
240 if(PINFO_FD_VISITED(actx->pinfo)) {
244 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
245 rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0);
247 /*If FP info or RLC info is missing , skip all this*/
248 if(fpinf == NULL || rlcinf == NULL){
252 /* If UE is moving to CELL_DCH we need to map it's U-RNTI to the new CRNC context in NBAP */
253 if (private_data_get_rrc_state_indicator(actx) == RRC_UE_STATE_CELL_DCH) {
254 u_rnti = private_data_get_current_u_rnti(actx);
255 rrc_try_map_urnti_to_crncc(u_rnti, actx);
258 #.FN_BODY CellUpdateConfirm
259 fp_info *fpinf = NULL;
260 rlc_info *rlcinf = NULL;
262 col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm");
264 if(PINFO_FD_VISITED(actx->pinfo)) {
268 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
269 rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0);
271 /*If FP info or RLC info is missing , skip all this*/
272 if(fpinf == NULL || rlcinf == NULL){
276 /* If UE is moving to CELL_DCH we need to map it's U-RNTI to the new CRNC context in NBAP */
277 if (private_data_get_rrc_state_indicator(actx) == RRC_UE_STATE_CELL_DCH) {
278 u_rnti = rlcinf->ueid[fpinf->cur_tb]; /* Hopefully a U-RNTI, might be C-RNTI */
279 rrc_try_map_urnti_to_crncc(u_rnti, actx);
282 #.FN_BODY CounterCheck
283 col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheck");
286 #.FN_BODY CounterCheckResponse
287 col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheckResponse");
290 #.FN_BODY DownlinkDirectTransfer
291 col_append_str(actx->pinfo->cinfo, COL_INFO, "DownlinkDirectTransfer");
294 #.FN_BODY ETWSPrimaryNotificationWithSecurity
295 col_append_str(actx->pinfo->cinfo, COL_INFO, "ETWSPrimaryNotificationWithSecurity");
298 #.FN_BODY HandoverToUTRANComplete
299 col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverToUTRANComplete");
302 #.FN_BODY InitialDirectTransfer
303 col_append_str(actx->pinfo->cinfo, COL_INFO, "InitialDirectTransfer");
306 #.FN_BODY HandoverFromUTRANCommand-EUTRA
307 col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-EUTRA");
310 #.FN_BODY HandoverFromUTRANCommand-GERANIu
311 col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-GERANIu");
314 #.FN_BODY HandoverFromUTRANCommand-GSM
315 col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-GSM");
318 #.FN_BODY HandoverFromUTRANCommand-CDMA2000
319 col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-CDMA2000");
322 #.FN_BODY HandoverFromUTRANFailure
323 col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANFailure");
326 #.FN_BODY LoggingMeasurementConfiguration
327 col_append_str(actx->pinfo->cinfo, COL_INFO, "LoggingMeasurementConfiguration");
330 #.FN_BODY MBMSAccessInformation
331 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSAccessInformation");
334 #.FN_BODY MBMSCommonPTMRBInformation
335 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCommonPTMRBInformation");
338 #.FN_BODY MBMSCurrentCellPTMRBInformation
339 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCurrentCellPTMRBInformation");
342 #.FN_BODY MBMSGeneralInformation
343 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSGeneralInformation");
346 #.FN_BODY MBMSModificationRequest
347 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSModificationRequest");
350 #.FN_BODY MBMSModifiedServicesInformation
351 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSModifiedServicesInformation");
354 #.FN_BODY MBMSNeighbouringCellPTMRBInformation
355 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSNeighbouringCellPTMRBInformation");
358 #.FN_BODY MBMSSchedulingInformation
359 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSSchedulingInformation");
362 #.FN_BODY MBMSUnmodifiedServicesInformation
363 col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSUnmodifiedServicesInformation");
366 #.FN_BODY MeasurementControl
367 col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementControl");
370 #.FN_BODY MeasurementControlFailure
371 col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementControlFailure");
374 #.FN_BODY MeasurementReport
375 col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementReport");
378 #.FN_BODY PagingType1
379 col_append_str(actx->pinfo->cinfo, COL_INFO, "PagingType1");
382 #.FN_BODY PagingType2
383 col_append_str(actx->pinfo->cinfo, COL_INFO, "PagingType2");
386 #.FN_BODY PhysicalChannelReconfiguration
387 fp_info *fpinf = NULL;
388 rlc_info *rlcinf = NULL;
390 col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfiguration");
392 if(PINFO_FD_VISITED(actx->pinfo)) {
396 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
397 rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0);
399 /*If FP info or RLC info is missing , skip all this*/
400 if(fpinf == NULL || rlcinf == NULL){
404 /* If we receive this message on FACH and UE is moving to CELL_DCH */
405 /* we need to map it's U-RNTI to the new CRNC context in NBAP */
406 if (fpinf->channel == CHANNEL_FACH_FDD && private_data_get_rrc_state_indicator(actx) == RRC_UE_STATE_CELL_DCH) {
407 u_rnti = rlcinf->ueid[fpinf->cur_tb]; /* Hopefully a U-RNTI, might be C-RNTI */
408 rrc_try_map_urnti_to_crncc(u_rnti, actx);
411 #.FN_BODY PhysicalChannelReconfigurationComplete
412 col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfigurationComplete");
415 #.FN_BODY PhysicalChannelReconfigurationFailure
416 col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfigurationFailure");
419 #.FN_BODY PhysicalSharedChannelAllocation
420 col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalSharedChannelAllocation");
423 #.FN_BODY PUSCHCapacityRequest
424 col_append_str(actx->pinfo->cinfo, COL_INFO, "PUSCHCapacityRequest");
427 #.FN_BODY RadioBearerReconfiguration
428 fp_info *fpinf = NULL;
429 rlc_info *rlcinf = NULL;
431 col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfiguration");
433 if(PINFO_FD_VISITED(actx->pinfo)) {
437 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
438 rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0);
440 /*If FP info or RLC info is missing , skip all this*/
441 if(fpinf == NULL || rlcinf == NULL){
445 /* If we receive this message on FACH and UE is moving to CELL_DCH */
446 /* we need to map it's U-RNTI to the new CRNC context in NBAP */
447 if (fpinf->channel == CHANNEL_FACH_FDD && private_data_get_rrc_state_indicator(actx) == RRC_UE_STATE_CELL_DCH) {
448 u_rnti = rlcinf->ueid[fpinf->cur_tb]; /* Hopefully a U-RNTI, might be C-RNTI */
449 rrc_try_map_urnti_to_crncc(u_rnti, actx);
452 #.FN_BODY RadioBearerReconfigurationComplete
453 col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfigurationComplete");
456 #.FN_BODY RadioBearerReconfigurationFailure
457 col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfigurationFailure");
460 #.FN_BODY RadioBearerRelease
461 col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerRelease");
464 #.FN_BODY RadioBearerReleaseComplete
465 col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReleaseComplete");
468 #.FN_BODY RadioBearerReleaseFailure
469 col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReleaseFailure");
472 #.FN_BODY RadioBearerSetup
473 col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetup");
476 #.FN_BODY RadioBearerSetupComplete
477 col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetupComplete");
480 #.FN_BODY RadioBearerSetupFailure
481 col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetupFailure");
484 #.FN_BODY RRCConnectionReject
485 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReject");
488 #.FN_BODY RRCConnectionRelease
489 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease");
492 #.FN_BODY RRCConnectionRelease-CCCH
493 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease-CCCH");
496 #.FN_BODY RRCConnectionReleaseComplete
497 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReleaseComplete");
500 #.FN_BODY RRCConnectionRequest
501 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRequest");
504 #.FN_BODY RRCConnectionSetup
506 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetup");
508 if (PINFO_FD_VISITED(actx->pinfo)) {
512 /* Trying to map the U-RNTI assigned to the user to CRNC Context from NBAP*/
513 new_u_rnti = private_data_get_new_u_rnti(actx);
514 rrc_try_map_urnti_to_crncc(new_u_rnti, actx);
516 #.FN_BODY RRCConnectionSetupComplete
517 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetupComplete");
521 col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCStatus");
524 #.FN_BODY SecurityModeCommand
527 rrc_ciphering_info *ciphering_info = NULL;
529 col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeCommand");
531 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
532 rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0);
534 /*If FP info or RLC info is missing , skip all this*/
535 if(fpinf != NULL && rlcinf != NULL){
536 ciphering_info = get_or_create_cipher_info(fpinf, rlcinf);
537 private_data_set_ciphering_info(actx, ciphering_info);
540 if( ciphering_info != NULL ){
541 direction = P2P_DIR_DL; /* Security Mode Command is from the RNC, direction is always downlink */
542 ciphering_info->setup_frame[direction] = actx->pinfo->num;
545 #.FN_BODY SecurityModeComplete
548 rrc_ciphering_info *ciphering_info = NULL;
550 col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeComplete");
552 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
553 rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0);
555 /*If FP info or RLC info is missing , skip all this*/
556 if(fpinf != NULL || rlcinf != NULL){
557 ciphering_info = get_or_create_cipher_info(fpinf, rlcinf);
558 private_data_set_ciphering_info(actx, ciphering_info);
562 if( ciphering_info != NULL ){
563 direction = P2P_DIR_UL; /* Security Mode Complete is from the UE, direction is always uplink */
564 ciphering_info->setup_frame[direction] = actx->pinfo->num;
568 #.FN_BODY SecurityModeFailure
569 col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeFailure");
572 #.FN_BODY SignallingConnectionRelease
573 col_append_str(actx->pinfo->cinfo, COL_INFO, "SignallingConnectionRelease");
576 #.FN_BODY SignallingConnectionReleaseIndication
577 col_append_str(actx->pinfo->cinfo, COL_INFO, "SignallingConnectionReleaseIndication");
580 #.FN_BODY SystemInformation-BCH
581 col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation-BCH");
584 #.FN_BODY SystemInformation-FACH
585 col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation-FACH");
588 #.FN_BODY SystemInformationChangeIndication
589 col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformationChangeIndication");
592 #.FN_BODY TransportChannelReconfiguration
593 fp_info *fpinf = NULL;
594 rlc_info *rlcinf = NULL;
596 col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfiguration");
598 if(PINFO_FD_VISITED(actx->pinfo)) {
602 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
603 rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0);
605 /*If FP info or RLC info is missing , skip all this*/
606 if(fpinf == NULL || rlcinf == NULL){
610 /* If we receive this message on FACH and UE is moving to CELL_DCH */
611 /* we need to map it's U-RNTI to the new CRNC context in NBAP */
612 if (fpinf->channel == CHANNEL_FACH_FDD && private_data_get_rrc_state_indicator(actx) == RRC_UE_STATE_CELL_DCH) {
613 u_rnti = rlcinf->ueid[fpinf->cur_tb]; /* Hopefully a U-RNTI, might be C-RNTI */
614 rrc_try_map_urnti_to_crncc(u_rnti, actx);
617 #.FN_BODY TransportChannelReconfigurationComplete
618 col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfigurationComplete");
621 #.FN_BODY TransportChannelReconfigurationFailure
622 col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfigurationFailure");
625 #.FN_BODY TransportFormatCombinationControl
626 col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportFormatCombinationControl");
629 #.FN_BODY TransportFormatCombinationControlFailure
630 col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportFormatCombinationControlFailure");
633 #.FN_BODY UECapabilityEnquiry
634 col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityEnquiry");
637 #.FN_BODY UECapabilityInformation
638 col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformation");
641 #.FN_BODY UECapabilityInformationConfirm
642 col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformationConfirm");
645 #.FN_BODY UEInformationRequest
646 col_append_str(actx->pinfo->cinfo, COL_INFO, "UEInformationRequest");
649 #.FN_BODY UEInformationResponse
650 col_append_str(actx->pinfo->cinfo, COL_INFO, "UEInformationResponse");
653 #.FN_BODY UplinkDirectTransfer
654 col_append_str(actx->pinfo->cinfo, COL_INFO, "UplinkDirectTransfer");
657 #.FN_BODY UplinkPhysicalChannelControl
658 col_append_str(actx->pinfo->cinfo, COL_INFO, "UplinkPhysicalChannelControl");
662 col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdate");
665 #.FN_BODY URAUpdateConfirm
666 col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdateConfirm");
669 #.FN_BODY URAUpdateConfirm-CCCH
670 col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdateConfirm-CCCH");
673 #.FN_BODY UTRANMobilityInformation
674 col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformation");
677 #.FN_BODY UTRANMobilityInformationConfirm
678 col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationConfirm");
681 #.FN_BODY UTRANMobilityInformationFailure
682 col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationFailure");
685 #.FN_BODY TargetRNC-ToSourceRNC-Container/dL-DCCHmessage VAL_PTR = &dl_dcch_message_tvb
686 tvbuff_t *dl_dcch_message_tvb=NULL;
690 if (dl_dcch_message_tvb)
691 call_dissector(rrc_dl_dcch_handle,dl_dcch_message_tvb,%(ACTX)s->pinfo, proto_tree_get_root(tree));
693 #.FN_BODY GSM-MessageList/_item VAL_PTR = &gsm_messagelist_tvb
694 tvbuff_t *gsm_messagelist_tvb=NULL;
698 if (gsm_messagelist_tvb && gsm_a_dtap_handle)
699 call_dissector(gsm_a_dtap_handle,gsm_messagelist_tvb,actx->pinfo, tree);
701 #.FN_BODY HandoverFromUTRANCommand-GSM-r3-IEs/gsm-message/single-GSM-Message single-GSM-Message-r3
702 tvbuff_t *gsm_message_tvb=NULL;
703 unsigned bits_remaining, whole_octets_remaining;
707 bits_remaining = 8*tvb_reported_length(tvb) - offset;
708 whole_octets_remaining = bits_remaining / 8;
710 gsm_message_tvb = tvb_new_octet_aligned(tvb, offset, 8*whole_octets_remaining);
712 if (gsm_message_tvb) {
713 add_new_data_source(actx->pinfo,gsm_message_tvb,"GSM Message(aligned)");
714 call_dissector(gsm_a_dtap_handle,gsm_message_tvb,actx->pinfo, tree);
716 #.FN_BODY HandoverFromUTRANCommand-GSM-r6-IEs/gsm-message/single-GSM-Message single-GSM-Message-r6
717 tvbuff_t *gsm_message_tvb=NULL;
718 unsigned bits_remaining, whole_octets_remaining;
722 bits_remaining = 8*tvb_reported_length(tvb) - offset;
723 whole_octets_remaining = bits_remaining / 8;
725 gsm_message_tvb = tvb_new_octet_aligned(tvb, offset, 8*whole_octets_remaining);
727 if (gsm_message_tvb && gsm_a_dtap_handle) {
728 add_new_data_source(actx->pinfo,gsm_message_tvb,"GSM Message(aligned)");
729 call_dissector(gsm_a_dtap_handle,gsm_message_tvb,actx->pinfo, tree);
732 #.FN_BODY GERAN-SystemInfoBlock VAL_PTR = ¶meter_tvb
733 tvbuff_t *parameter_tvb=NULL;
737 uint8_t byte = tvb_get_uint8(parameter_tvb, 0);
739 if (gsm_a_dtap_handle) {
740 call_dissector(gsm_a_dtap_handle, parameter_tvb, actx->pinfo, tree);
743 if (gsm_rlcmac_dl_handle) {
744 call_dissector(gsm_rlcmac_dl_handle, parameter_tvb, actx->pinfo, tree);
749 #.FN_BODY GSM-Classmark2 VAL_PTR = ¶meter_tvb
750 tvbuff_t *parameter_tvb=NULL;
754 de_ms_cm_2(parameter_tvb, tree, actx->pinfo, 2, tvb_get_uint8(parameter_tvb,1), NULL, 0);
757 #.FN_BODY GSM-Classmark3 VAL_PTR = ¶meter_tvb
758 tvbuff_t *parameter_tvb=NULL;
762 de_ms_cm_3(parameter_tvb, tree, actx->pinfo, 0, tvb_reported_length(parameter_tvb), NULL, 0);
765 #.FN_BODY GSM-MS-RadioAccessCapability VAL_PTR = ¶meter_tvb
766 tvbuff_t *parameter_tvb=NULL;
770 de_gmm_ms_radio_acc_cap(parameter_tvb, tree, actx->pinfo, 0, tvb_reported_length(parameter_tvb), NULL, 0);
773 #.FN_BODY InterRATHandoverInfoWithInterRATCapabilities-r3-IEs/interRATHandoverInfo VAL_PTR = ¶meter_tvb
774 tvbuff_t *parameter_tvb=NULL;
778 dissect_rrc_InterRATHandoverInfo_PDU(parameter_tvb, actx->pinfo, tree, NULL);
781 #.FN_BODY EUTRA-RadioAccessCapability/ue-EUTRA-Capability VAL_PTR = &ue_eutra_cap_tvb
782 tvbuff_t *ue_eutra_cap_tvb = NULL;
784 if (ue_eutra_cap_tvb && lte_rrc_ue_eutra_cap_handle)
785 call_dissector(lte_rrc_ue_eutra_cap_handle, ue_eutra_cap_tvb, actx->pinfo, tree);
787 #.FN_BODY HandoverFromUTRANCommand-EUTRA-r8-IEs/eutra-Message VAL_PTR = &eutra_message_tvb
788 tvbuff_t *eutra_message_tvb = NULL;
790 if (eutra_message_tvb && lte_rrc_dl_dcch_handle)
791 call_dissector(lte_rrc_dl_dcch_handle, eutra_message_tvb, actx->pinfo, tree);
793 #.FN_BODY HandoverFromUTRANCommand-EUTRA-r11-IEs/eutra-Message VAL_PTR = &eutra_message_tvb
794 tvbuff_t *eutra_message_tvb = NULL;
796 if (eutra_message_tvb && lte_rrc_dl_dcch_handle)
797 call_dissector(lte_rrc_dl_dcch_handle, eutra_message_tvb, actx->pinfo, tree);
799 #.FN_BODY HandoverFromUtranFailure-v860ext-IEs/eutra-Message VAL_PTR = &eutra_message_tvb
800 tvbuff_t *eutra_message_tvb = NULL;
802 if (eutra_message_tvb && lte_rrc_dl_dcch_handle)
803 call_dissector(lte_rrc_dl_dcch_handle, eutra_message_tvb, actx->pinfo, tree);
805 #.FN_BODY MultiModeRAT-Capability-v860ext/eutraFeatureGroupIndicators VAL_PTR = &eutraFeatureGroupIndicators_tvb
806 tvbuff_t *eutraFeatureGroupIndicators_tvb=NULL;
808 if(eutraFeatureGroupIndicators_tvb){
809 /* Dissect eutraFeatureGroupIndicators */
811 int curr_bit_offset = 0;
812 subtree = proto_item_add_subtree(actx->created_item, ett_rrc_eutraFeatureGroupIndicators);
813 proto_tree_add_bits_item(subtree, hf_rrc_eutra_feat_group_ind_1, eutraFeatureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
815 proto_tree_add_bits_item(subtree, hf_rrc_eutra_feat_group_ind_2, eutraFeatureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
817 proto_tree_add_bits_item(subtree, hf_rrc_eutra_feat_group_ind_3, eutraFeatureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
819 proto_tree_add_bits_item(subtree, hf_rrc_eutra_feat_group_ind_4, eutraFeatureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN);
822 #.FN_BODY PLMN-Identity
823 wmem_strbuf_t* mcc_mnc_strbuf;
824 wmem_strbuf_t* mcc_strbuf;
826 char* mcc_mnc_string;
827 tvbuff_t* mcc_mnc_tvb;
829 /* Reset the digits string in the private data struct */
830 /* Maximal length: 7 = 3 digits MCC + 3 digits MNC + trailing '\0' */
831 mcc_mnc_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,7);
832 private_data_set_digits_strbuf(actx, mcc_mnc_strbuf);
833 /* Reset parsing failure flag*/
834 private_data_set_digits_strbuf_parsing_failed_flag(actx, false);
836 private_data_set_digits_strbuf(actx, NULL);
837 /* Check for parsing errors */
838 if(private_data_get_digits_strbuf_parsing_failed_flag(actx)) {
842 /* Extracting the string collected in the strbuf */
843 string_len = (uint32_t)wmem_strbuf_get_len(mcc_mnc_strbuf);
844 mcc_mnc_string = wmem_strbuf_finalize(mcc_mnc_strbuf);
848 /* 3 MCC digits were found, keep for later in case MCC is missing in other PLMN ids*/
849 mcc_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,4);
850 wmem_strbuf_append_c(mcc_strbuf,mcc_mnc_string[0]);
851 wmem_strbuf_append_c(mcc_strbuf,mcc_mnc_string[1]);
852 wmem_strbuf_append_c(mcc_strbuf,mcc_mnc_string[2]);
853 wmem_strbuf_append_c(mcc_strbuf,'\0');
854 private_data_set_last_mcc_strbuf(actx,mcc_strbuf);
857 /* Creating TVB from extracted string*/
858 mcc_mnc_tvb = tvb_new_child_real_data(tvb, (uint8_t*)mcc_mnc_string, string_len, string_len);
859 add_new_data_source(actx->pinfo, mcc_mnc_tvb, "MCC-MNC");
862 dissect_e212_mcc_mnc_in_utf8_address(mcc_mnc_tvb, actx->pinfo, tree, 0);
864 #.FN_BODY PLMN-IdentityWithOptionalMCC-r6
865 wmem_strbuf_t* mcc_mnc_strbuf;
866 wmem_strbuf_t* temp_strbuf;
867 wmem_strbuf_t* last_mcc_strbuf;
869 char* mcc_mnc_string;
870 tvbuff_t* mcc_mnc_tvb;
872 /* Reset the digits string in the private data struct */
873 /* Maximal length: 7 = 3 digits MCC + 3 digits MNC + trailing '\0' */
874 mcc_mnc_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,7);
875 private_data_set_digits_strbuf(actx, mcc_mnc_strbuf);
876 /* Reset parsing failure flag*/
877 private_data_set_digits_strbuf_parsing_failed_flag(actx, false);
879 private_data_set_digits_strbuf(actx, NULL);
880 /* Check for parsing errors */
881 if(private_data_get_digits_strbuf_parsing_failed_flag(actx)) {
885 /* Extracting the string collected in the strbuf */
886 string_len = (uint32_t)wmem_strbuf_get_len(mcc_mnc_strbuf);
887 mcc_mnc_string = wmem_strbuf_finalize(mcc_mnc_strbuf);
888 if (string_len > 3) {
889 /* 3 MCC digits and at least 1 MNC digit were found, keep MCC for later
890 in case it's missing in other PLMN ids*/
891 temp_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,4);
892 wmem_strbuf_append_c(temp_strbuf,mcc_mnc_string[0]);
893 wmem_strbuf_append_c(temp_strbuf,mcc_mnc_string[1]);
894 wmem_strbuf_append_c(temp_strbuf,mcc_mnc_string[2]);
895 wmem_strbuf_append_c(temp_strbuf,'\0');
896 private_data_set_last_mcc_strbuf(actx,temp_strbuf);
899 /* mcc_mnc_strbuf Probably only has 3/2 digits of MNC */
900 /* Try to fill MCC form "last MCC" if we have it stored */
901 last_mcc_strbuf = private_data_get_last_mcc_strbuf(actx);
904 /* Concat MCC and MNC in temp buffer */
905 temp_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,7);
906 wmem_strbuf_append_printf(temp_strbuf,"%%s",wmem_strbuf_get_str(last_mcc_strbuf));
907 wmem_strbuf_append_printf(temp_strbuf,"%%s",mcc_mnc_string);
908 /* Update length of recovered MCC-MNC pair */
909 string_len = (uint32_t)wmem_strbuf_get_len(temp_strbuf);
910 mcc_mnc_string = wmem_strbuf_finalize(temp_strbuf);
914 if (string_len >= 5) {
915 /* optional MCC was present (or restored above), we can call E.212 dissector */
917 /* Creating TVB from extracted string*/
918 mcc_mnc_tvb = tvb_new_child_real_data(tvb, (uint8_t*)mcc_mnc_string, string_len, string_len);
919 add_new_data_source(actx->pinfo, mcc_mnc_tvb, "MCC-MNC");
922 dissect_e212_mcc_mnc_in_utf8_address(mcc_mnc_tvb, actx->pinfo, tree, 0);
925 #.FN_BODY IMSI-GSM-MAP
926 wmem_strbuf_t* imsi_strbuf;
931 /* Reset the digits string in the private data struct */
932 imsi_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,16);
933 private_data_set_digits_strbuf(actx, imsi_strbuf);
934 /* Reset parsing failure flag*/
935 private_data_set_digits_strbuf_parsing_failed_flag(actx, false);
937 private_data_set_digits_strbuf(actx, NULL);
938 /* Check for parsing errors */
939 if(private_data_get_digits_strbuf_parsing_failed_flag(actx)) {
943 /* Extracting the string collected in the strbuf */
944 string_len = (uint32_t)wmem_strbuf_get_len(imsi_strbuf);
945 imsi_string = wmem_strbuf_finalize(imsi_strbuf);
947 /* Creating TVB from extracted string*/
948 imsi_tvb = tvb_new_child_real_data(tvb, (uint8_t*)imsi_string, string_len, string_len);
949 add_new_data_source(actx->pinfo, imsi_tvb, "IMSI");
952 dissect_e212_utf8_imsi(imsi_tvb,actx->pinfo,tree,0,string_len);
954 #.FN_BODY Digit VAL_PTR = &digit
956 wmem_strbuf_t* digits_strbuf; /* The string of either an IMSI or a MCC-MNC pair */
959 if(private_data_get_digits_strbuf_parsing_failed_flag(actx)) {
963 digits_strbuf = private_data_get_digits_strbuf(actx);
968 private_data_set_digits_strbuf_parsing_failed_flag(actx, true);
972 /* Converting to the matching char */
973 digit_char = (char)(digit + '0');
975 /* Appending to the digits string */
976 wmem_strbuf_append_c(digits_strbuf, digit_char);
979 #.FN_BODY CompleteSIBshort
980 private_data_set_curr_sib_segment_type(actx,RRC_SIB_SEG_COMP);
982 private_data_set_curr_sib_segment_type(actx,RRC_SIB_SEG_NO_SEGMENT); /* Resetting value */
984 #.FN_BODY SIB-Type VAL_PTR = &sib_type
987 private_data_set_curr_sib_type(actx,sib_type);
989 #.FN_BODY SIB-Data-variable VAL_PTR = &sib_data_tvb
990 tvbuff_t *sib_data_tvb;
997 seg_type = (uint32_t)private_data_get_curr_sib_segment_type(actx);
998 if(seg_type != RRC_SIB_SEG_COMP) {
999 /* TODO: The Dissector only handles 'complete SIBs' right now.
1000 * Reassembly logic should be implemented, taking into acocunt that
1001 * different fragments might arrive in different frames.
1006 /* This is a complete SIB - Call handler according to previous SIB-Type field*/
1007 subtree = proto_item_add_subtree(actx->created_item, ett_rrc_sib_data_var);
1008 sib_type = private_data_get_curr_sib_type(actx);
1009 col_set_fence(actx->pinfo->cinfo, COL_INFO);
1010 col_append_str(actx->pinfo->cinfo, COL_INFO," (");
1014 dissect_rrc_MasterInformationBlock_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1017 dissect_rrc_SysInfoType1_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1020 dissect_rrc_SysInfoType2_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1023 dissect_rrc_SysInfoType3_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1026 dissect_rrc_SysInfoType4_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1029 dissect_rrc_SysInfoType5_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1032 dissect_rrc_SysInfoType6_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1035 dissect_rrc_SysInfoType7_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1038 dissect_rrc_SysInfoType11_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1041 dissect_rrc_SysInfoType12_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1044 dissect_rrc_SysInfoType13_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1047 /* SIB-Type: systemInformationBlockType13-1 */
1048 dissect_rrc_SysInfoType13_1_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1051 /* SIB-Type: systemInformationBlockType13-2 */
1052 dissect_rrc_SysInfoType13_2_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1055 /* SIB-Type: systemInformationBlockType13-3 */
1056 dissect_rrc_SysInfoType13_3_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1059 /* SIB-Type: systemInformationBlockType13-4 */
1060 dissect_rrc_SysInfoType13_4_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1063 /* SIB-Type: systemInformationBlockType14 */
1064 dissect_rrc_SysInfoType14_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1067 /* SIB-Type: systemInformationBlockType15 */
1068 dissect_rrc_SysInfoType15_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1071 /* SIB-Type: systemInformationBlockType15-1 */
1072 dissect_rrc_SysInfoType15_1_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1075 /* SIB-Type: systemInformationBlockType15-2 */
1076 dissect_rrc_SysInfoType15_2_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1079 /* SIB-Type: systemInformationBlockType15-3 */
1080 dissect_rrc_SysInfoType15_3_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1083 /* SIB-Type: systemInformationBlockType16 */
1084 dissect_rrc_SysInfoType16_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1087 /* SIB-Type: systemInformationBlockType17 */
1088 dissect_rrc_SysInfoType17_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1091 /* SIB-Type: systemInformationBlockType15-4 */
1092 dissect_rrc_SysInfoType15_4_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1095 /* SIB-Type: systemInformationBlockType18 */
1096 dissect_rrc_SysInfoType18_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1099 /* SIB-Type: schedulingBlock1 */
1100 dissect_rrc_SysInfoTypeSB1_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1103 /* SIB-Type: schedulingBlock2 */
1104 dissect_rrc_SysInfoTypeSB2_PDU(sib_data_tvb, actx->pinfo, subtree, NULL);
1110 col_append_str(actx->pinfo->cinfo, COL_INFO,")");
1111 col_set_fence(actx->pinfo->cinfo, COL_INFO);
1113 #.FN_BODY RSR-VCC-Info/ims-Information VAL_PTR = &imsInformation_tvb
1114 tvbuff_t *imsInformation_tvb=NULL;
1116 if(imsInformation_tvb){
1117 /* Dissect ims-Information
1118 Decoding specified in TS 124 237 V11.4.0 Annex D.5.3.3 ATGW transfer details
1120 proto_tree *subtree;
1121 int curr_offset = 0;
1122 uint32_t atgw_trans_det_cont;
1123 subtree = proto_item_add_subtree(actx->created_item, ett_rrc_ims_info);
1124 proto_tree_add_item_ret_uint(subtree, hf_rrc_ims_info_atgw_trans_det_cont_type, imsInformation_tvb, curr_offset, 1, ENC_BIG_ENDIAN, &atgw_trans_det_cont);
1126 switch (atgw_trans_det_cont) {
1128 proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_udp_port, imsInformation_tvb, curr_offset, 2, ENC_BIG_ENDIAN);
1130 proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_ipv4, imsInformation_tvb, curr_offset, 4, ENC_BIG_ENDIAN);
1133 proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_udp_port, imsInformation_tvb, curr_offset, 2, ENC_BIG_ENDIAN);
1135 proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_ipv6, imsInformation_tvb, curr_offset, 16, ENC_NA);
1143 HNBName TYPE=FT_STRING DISPLAY=BASE_NONE
1145 #.FN_BODY HNBName VAL_PTR = &hnbname_tvb HF_INDEX = -1
1146 tvbuff_t *hnbname_tvb = NULL;
1149 actx->created_item = proto_tree_add_item(tree, hf_index, hnbname_tvb, 0, -1, ENC_UTF_8|ENC_NA);
1151 #.FN_BODY CN-DomainIdentity VAL_PTR = &nas_sys_info
1152 uint32_t nas_sys_info;
1154 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "(%%s)",
1155 val_to_str_const(nas_sys_info,rrc_CN_DomainIdentity_vals, "Unknown"));
1156 nas_sys_info++; /* CS = 0, PS = 1 but the enum defines 0 as Unknown and CS = 1, PS = 2 */
1157 private_data_set_cn_domain(actx, (enum nas_sys_info_gsm_map) nas_sys_info);
1159 #.FN_BODY CN-InformationInfo/cn-CommonGSM-MAP-NAS-SysInfo
1160 private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON);
1163 #.FN_BODY CN-InformationInfo-r6/cn-CommonGSM-MAP-NAS-SysInfo
1164 private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON);
1167 #.FN_BODY CN-InformationInfoFull/cn-CommonGSM-MAP-NAS-SysInfo
1168 private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON);
1171 #.FN_BODY SysInfoType1/cn-CommonGSM-MAP-NAS-SysInfo
1172 private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON);
1175 #.FN_BODY NAS-SystemInformationGSM-MAP VAL_PTR = &nas_sys_info_gsm_map_tvb
1176 tvbuff_t *nas_sys_info_gsm_map_tvb = NULL;
1178 enum nas_sys_info_gsm_map cn_domain;
1179 proto_tree *subtree;
1182 length = tvb_reported_length(nas_sys_info_gsm_map_tvb);
1184 cn_domain = private_data_get_cn_domain(actx);
1185 switch (cn_domain) {
1186 case RRC_NAS_SYS_INFO_CN_COMMON:
1187 subtree = proto_tree_add_subtree(tree, nas_sys_info_gsm_map_tvb, 0, length,
1188 ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo, NULL, "CN Common GSM-MAP NAS system information");
1189 de_cn_common_gsm_map_nas_sys_info(nas_sys_info_gsm_map_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
1191 case RRC_NAS_SYS_INFO_CS:
1192 subtree = proto_tree_add_subtree(tree, nas_sys_info_gsm_map_tvb, 0, length,
1193 ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo, NULL, "CS domain specific system information");
1194 de_cs_domain_spec_sys_info(nas_sys_info_gsm_map_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
1196 case RRC_NAS_SYS_INFO_PS:
1197 subtree = proto_tree_add_subtree(tree, nas_sys_info_gsm_map_tvb, 0, length,
1198 ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo, NULL, "PS domain specific system information");
1199 de_ps_domain_spec_sys_info(nas_sys_info_gsm_map_tvb, subtree, actx->pinfo, 0, length, NULL, 0);
1204 private_data_set_cn_domain(actx, RRC_NAS_SYS_UNKNOWN);
1207 #.FN_BODY SRNC-Identity VAL_PTR = &s_rnc_id_tvb
1208 tvbuff_t * s_rnc_id_tvb = NULL;
1211 private_data_set_s_rnc_id(actx, tvb_get_ntohs(s_rnc_id_tvb, 0) >> 4);
1214 #.FN_BODY S-RNTI VAL_PTR = &s_rnti_tvb
1215 tvbuff_t * s_rnti_tvb = NULL;
1218 private_data_set_s_rnti(actx, tvb_get_ntoh24(s_rnti_tvb, 0) >> 4);
1222 private_data_set_s_rnc_id(actx, 0);
1223 private_data_set_s_rnti(actx, 0);
1226 uint32_t u_rnti_value;
1227 uint32_t original_offset;
1230 proto_tree *sub_tree;
1232 int generated_field_hf;
1233 original_offset = offset;
1236 /* Reconstructing the U-RNTI from the parsed components */
1237 s_rnc_id = private_data_get_s_rnc_id(actx);
1238 s_rnti = private_data_get_s_rnti(actx);
1239 u_rnti_value = (s_rnc_id << 20) | s_rnti;
1241 /* Distinguishing between new allocated U-RNTIs and previously used ones */
1242 /* hf_rrc_u_RNTI is for current U-RNTI, any other hf is for new U-RNTI */
1243 is_new_urnti = hf_index != hf_rrc_u_RNTI;
1245 private_data_set_new_u_rnti(actx, u_rnti_value);
1246 generated_field_hf = hf_urnti_new;
1249 private_data_set_current_u_rnti(actx, u_rnti_value);
1250 generated_field_hf = hf_urnti_current;
1253 /* Adding a "Current U-RNTI" or "New U-RNTI" as generated field */
1254 sub_tree = proto_item_get_subtree(actx->created_item);
1255 item_len = proto_item_get_len(actx->created_item);
1256 ti = proto_tree_add_uint(sub_tree, generated_field_hf, tvb, original_offset/8, item_len, u_rnti_value);
1257 proto_item_set_generated(ti);
1258 ti = proto_tree_add_uint(sub_tree, hf_urnti, tvb, original_offset/8, item_len, u_rnti_value);
1259 proto_item_set_hidden(ti);
1261 private_data_set_s_rnc_id(actx, 0);
1262 private_data_set_s_rnti(actx, 0);
1264 #.FN_BODY C-RNTI VAL_PTR = &c_rnti_tvb
1265 fp_info *fpinf = NULL;
1266 umts_mac_info *macinf = NULL;
1267 rlc_info *rlcinf = NULL;
1268 conversation_t *p_conv;
1269 umts_fp_conversation_info_t *umts_fp_conversation_info = NULL;
1270 fp_fach_channel_info_t *fp_fach_channel_info = NULL;
1271 tvbuff_t * c_rnti_tvb = NULL;
1272 uint16_t c_rnti = 0;
1273 uint32_t u_rnti = 0;
1274 fp_crnti_allocation_info_t *fp_crnti_allocation_info = NULL;
1279 if(tvb_reported_length(c_rnti_tvb)>=2){
1280 c_rnti = tvb_get_ntohs(c_rnti_tvb,0);
1283 if(PINFO_FD_VISITED(actx->pinfo)) /* Frame was already checked*/
1286 /* Trying to figure where to get the U-RNTI from Either from an ASN.1 field (if this is CCCH) or RLC's attached info (if this is DCCH) */
1287 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
1288 macinf = (umts_mac_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_mac, 0);
1289 rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0);
1290 if (fpinf && macinf && rlcinf) {
1291 switch(macinf->content[fpinf->cur_tb]){
1292 case MAC_CONTENT_DCCH:
1293 u_rnti = rlcinf->ueid[fpinf->cur_tb];
1295 case MAC_CONTENT_CCCH:
1297 u_rnti = private_data_get_current_u_rnti(actx);
1302 /* Either FP, MAC or RLC info is missing - looking for ASN.1 field as last resort*/
1303 u_rnti = private_data_get_current_u_rnti(actx);
1306 if(u_rnti == 0 || c_rnti == 0) /* U-RNTI missing or failed to parse C-RNTI */
1309 /* Both U-RNTI and C-RNTI present - storing the match*/
1310 fp_crnti_allocation_info = wmem_new(wmem_file_scope(), fp_crnti_allocation_info_t);
1311 fp_crnti_allocation_info->urnti = u_rnti;
1312 fp_crnti_allocation_info->alloc_frame_number = actx->pinfo->num;
1313 fp_crnti_allocation_info->global_retrieval_count = 0;
1315 /* Finding FP conversation info */
1316 p_conv = (conversation_t *)find_conversation(actx->pinfo->num, &actx->pinfo->net_dst, &actx->pinfo->net_src,
1317 conversation_pt_to_conversation_type(actx->pinfo->ptype),
1318 actx->pinfo->destport, actx->pinfo->srcport, NO_ADDR_B);
1320 /* If the current FP channel is FACH, Adding the C-RNTI / U-RNTI match to the FACH's RNTIs map*/
1321 if (p_conv != NULL) {
1322 umts_fp_conversation_info = (umts_fp_conversation_info_t *)conversation_get_proto_data(p_conv, proto_fp);
1323 if (umts_fp_conversation_info && umts_fp_conversation_info->channel == CHANNEL_FACH_FDD) {
1324 fp_fach_channel_info = (fp_fach_channel_info_t *)umts_fp_conversation_info->channel_specific_info;
1325 if(fp_fach_channel_info) {
1326 wmem_tree_insert32(fp_fach_channel_info->crnti_to_urnti_map, c_rnti, (void *)fp_crnti_allocation_info);
1331 /* Also adding the C-RNTI / U-RNTI match to the global RNTIs map for the RACH channel */
1332 wmem_tree_insert32(rrc_global_urnti_crnti_map, c_rnti, (void *)fp_crnti_allocation_info);
1334 #.FN_BODY UL-ScramblingCode VAL_PTR = &scrambling_code
1335 uint32_t scrambling_code;
1337 private_data_set_scrambling_code(actx,scrambling_code);
1339 #.FN_BODY RRC-StateIndicator VAL_PTR = &state_dec
1340 int32_t state_dec = -1;
1342 if(state_dec >= 0 && state_dec <= 3) {
1343 state_dec++; /* Encoded values are 0-based, Values in the enum are 1-based*/
1344 private_data_set_rrc_state_indicator(actx,(enum rrc_ue_state)state_dec);
1347 #.FN_BODY CellIdentity VAL_PTR = &cell_id_tvb
1348 tvbuff_t * cell_id_tvb = NULL;
1349 proto_item *temp_ti;
1350 proto_tree *cell_identity_tree;
1353 if(cell_id_tvb != NULL) {
1354 cell_identity_tree = proto_item_add_subtree(actx->created_item, ett_rrc_cellIdentity);
1355 temp_ti = proto_tree_add_bits_item(cell_identity_tree, hf_rrc_cellIdentity_rnc_id,cell_id_tvb, 0, 12, ENC_BIG_ENDIAN);
1356 proto_item_set_generated(temp_ti);
1357 temp_ti = proto_tree_add_bits_item(cell_identity_tree, hf_rrc_cellIdentity_c_id, cell_id_tvb, 12, 16, ENC_BIG_ENDIAN);
1358 proto_item_set_generated(temp_ti);
1361 #.FN_BODY DL-TransportChannelType-r5 VAL_PTR = &type
1362 /*Here we try to figure out which HS-DSCH channels are multiplexed*/
1364 unsigned *cur_val=NULL;
1365 struct rrc_info *rrcinf;
1370 /*TODO: This should probably be done better*/
1371 if(type == 4){ /*If this is type HS-DSCH*/
1372 num_chans_per_flow[flowd]++;
1374 if(num_chans_per_flow[flowd] > 1 ){
1375 rrcinf = (rrc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_rrc, 0);
1376 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
1377 if((rrcinf == NULL) || (fpinf == NULL) || (rrcinf->hrnti[fpinf->cur_tb] == 0)){
1378 expert_add_info(actx->pinfo, actx->created_item, &ei_rrc_no_hrnti);
1381 /*If it doesn't exists, insert it*/
1382 if( (cur_val=(int *)g_tree_lookup(hsdsch_muxed_flows, GUINT_TO_POINTER((unsigned)rrcinf->hrnti[fpinf->cur_tb]))) == NULL ){
1384 flowd_p = g_new0(unsigned, 1);
1385 *flowd_p = (1U<<flowd); /*Set the bit to mark it as true*/
1386 g_tree_insert(hsdsch_muxed_flows, GUINT_TO_POINTER((unsigned)rrcinf->hrnti[fpinf->cur_tb]), flowd_p);
1389 *cur_val = (1U<<flowd) | *cur_val;
1398 #.FN_BODY DL-TransportChannelType-r7 VAL_PTR = &type
1399 /*Here we try to figure out which HS-DSCH channels are multiplexed*/
1401 unsigned *cur_val=NULL;
1402 struct rrc_info *rrcinf;
1407 /*TODO: This should probably be done better*/
1408 if(type == 4){ /*If this is type HS-DSCH*/
1409 num_chans_per_flow[flowd]++;
1412 if(num_chans_per_flow[flowd] > 1 ){
1413 rrcinf = (rrc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_rrc, 0);
1414 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
1415 if((rrcinf == NULL) || (fpinf == NULL) || (rrcinf->hrnti[fpinf->cur_tb] == 0)){
1416 expert_add_info(actx->pinfo, actx->created_item, &ei_rrc_no_hrnti);
1419 /*If it doesn't exists, insert it*/
1420 if( (cur_val=(int *)g_tree_lookup(hsdsch_muxed_flows, GUINT_TO_POINTER((unsigned)rrcinf->hrnti[fpinf->cur_tb]))) == NULL ){
1422 flowd_p = g_new0(unsigned, 1);
1423 *flowd_p = (1U<<flowd); /* Set the bit to mark it as true*/
1424 g_tree_insert(hsdsch_muxed_flows, GUINT_TO_POINTER((unsigned)rrcinf->hrnti[fpinf->cur_tb]), flowd_p);
1427 *cur_val = (1U<<flowd) | *cur_val;
1436 #.FN_BODY MAC-d-FlowIdentity VAL_PTR = &flowd
1439 #.FN_BODY H-RNTI VAL_PTR = &hrnti_tvb
1440 tvbuff_t *hrnti_tvb;
1441 struct rrc_info *rrcinf;
1446 rrcinf = (struct rrc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_rrc, 0);
1447 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
1450 rrcinf = wmem_new0(wmem_file_scope(), struct rrc_info);
1451 p_add_proto_data(wmem_file_scope(), actx->pinfo, proto_rrc, 0, rrcinf);
1453 rrcinf->hrnti[fpinf->cur_tb] = tvb_get_ntohs(hrnti_tvb, 0);
1456 #.FN_BODY START-Value VAL_PTR = &start_val
1457 tvbuff_t * start_val;
1460 rrc_ciphering_info * ciphering_info;
1462 enum nas_sys_info_gsm_map cn_domain;
1466 /*We base this map on User Identity from RLC*/
1467 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
1468 rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0);
1470 /*If FP info or RLC info is missing , skip all this*/
1471 if(fpinf == NULL || rlcinf == NULL){
1474 /*Retrieve the start value for the two ciphering domains*/
1475 cn_domain = private_data_get_cn_domain(actx);
1477 case RRC_NAS_SYS_INFO_CS:
1479 ws_warning("Not implemented");
1482 case RRC_NAS_SYS_INFO_PS:
1484 /*Find the entry for the UE ID(taken from RLC)*/
1485 ciphering_info = get_or_create_cipher_info(fpinf, rlcinf);
1486 private_data_set_ciphering_info(actx, ciphering_info);
1488 /*Retrieve and store the value*/
1489 if(ciphering_info && ciphering_info->start_ps) {
1490 start = g_new(uint32_t,1);
1491 *start = tvb_get_bits32(start_val,0,20,ENC_BIG_ENDIAN);
1492 /*Insert the value based on current frame num since this might vary over time*/
1493 g_tree_insert(ciphering_info->start_ps, GUINT_TO_POINTER(actx->pinfo->num), start);
1499 private_data_set_cn_domain(actx, RRC_NAS_SYS_UNKNOWN);
1501 #.FN_BODY RB-ActivationTimeInfo
1504 rrc_ciphering_info *ciphering_info;
1506 uint32_t rlc_ciphering_sqn;
1509 fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0);
1510 rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0);
1514 /*If FP info or RLC info is missing , skip all this*/
1515 if(fpinf == NULL || rlcinf == NULL){
1519 ciphering_info = private_data_get_ciphering_info(actx);
1520 if( ciphering_info == NULL ){
1524 rbid = private_data_get_rbid(actx);
1525 rlc_ciphering_sqn = private_data_get_rlc_ciphering_sqn(actx);
1526 direction = fpinf->is_uplink ? P2P_DIR_UL : P2P_DIR_DL;
1527 /*Set the ciphering activation frame information*/
1528 ciphering_info->seq_no[rbid][direction] = rlc_ciphering_sqn;
1531 #.FN_BODY RB-Identity VAL_PTR = &rbid
1534 private_data_set_rbid(actx, rbid);
1537 #.FN_BODY RLC-SequenceNumber VAL_PTR = &rlc_ciphering_sqn
1538 uint32_t rlc_ciphering_sqn;
1540 private_data_set_rlc_ciphering_sqn(actx, rlc_ciphering_sqn);
1542 #.FN_BODY CipheringAlgorithm VAL_PTR = &ciphering_algo
1543 rrc_ciphering_info *ciphering_info;
1544 int32_t ciphering_algo;
1548 ciphering_info = private_data_get_ciphering_info(actx);
1549 if (ciphering_info == NULL) {
1552 ciphering_info->ciphering_algorithm = ciphering_algo;
1554 #.FN_BODY CipheringAlgorithm-r7 VAL_PTR = &ciphering_algo
1555 rrc_ciphering_info *ciphering_info;
1556 int32_t ciphering_algo;
1560 ciphering_info = private_data_get_ciphering_info(actx);
1561 if (ciphering_info == NULL) {
1564 ciphering_info->ciphering_algorithm = ciphering_algo;
1566 #.FN_BODY IntegrityProtectionAlgorithm VAL_PTR = &integrity_algo
1567 rrc_ciphering_info *ciphering_info;
1568 int32_t integrity_algo;
1572 ciphering_info = private_data_get_ciphering_info(actx);
1573 if (ciphering_info == NULL) {
1576 ciphering_info->integrity_algorithm = integrity_algo;
1578 #.FN_BODY IntegrityProtectionAlgorithm-r7 VAL_PTR = &integrity_algo
1579 rrc_ciphering_info *ciphering_info;
1580 int32_t integrity_algo;
1584 ciphering_info = private_data_get_ciphering_info(actx);
1585 if (ciphering_info == NULL) {
1588 ciphering_info->integrity_algorithm = integrity_algo;
1590 #.FN_BODY DL-DCCH-MessageType VAL_PTR = &msg_type
1593 #.FN_BODY DL-DCCH-Message
1596 #.FN_BODY HandoverToUTRANCommand
1599 #.FN_BODY UE-SecurityInformation
1600 private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CS);
1603 #.FN_BODY UE-SecurityInformation2
1604 private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_PS);
1607 #.FN_BODY ReleaseCause VAL_PTR=&value
1610 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [cause=%%s]",
1611 val_to_str_const(value, rrc_ReleaseCause_vals, "Unknown"));
1613 #.FN_BODY MasterInformationBlock
1614 col_append_str(actx->pinfo->cinfo, COL_INFO, "MasterInformationBlock");
1617 #.FN_BODY SysInfoType1
1618 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 1");
1621 #.FN_BODY SysInfoType2
1622 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 2");
1625 #.FN_BODY SysInfoType3
1626 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 3");
1629 #.FN_BODY SysInfoType4
1630 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 4");
1633 #.FN_BODY SysInfoType5
1634 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 5");
1637 #.FN_BODY SysInfoType5bis
1638 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 5bis");
1641 #.FN_BODY SysInfoType6
1642 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 6");
1645 #.FN_BODY SysInfoType7
1646 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 7");
1649 #.FN_BODY SysInfoType11
1650 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 11");
1653 #.FN_BODY SysInfoType11bis
1654 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 11bis");
1657 #.FN_BODY SysInfoType11ter
1658 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 11ter");
1661 #.FN_BODY SysInfoType12
1662 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 12");
1665 #.FN_BODY SysInfoType13
1666 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 13");
1669 #.FN_BODY SysInfoType13-1
1670 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 13.1");
1673 #.FN_BODY SysInfoType13-2
1674 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 13.2");
1677 #.FN_BODY SysInfoType13-3
1678 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 13.3");
1681 #.FN_BODY SysInfoType13-4
1682 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 13.4");
1685 #.FN_BODY SysInfoType14
1686 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 14");
1689 #.FN_BODY SysInfoType15
1690 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15");
1693 #.FN_BODY SysInfoType15bis
1694 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15bis");
1697 #.FN_BODY SysInfoType15-1
1698 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.1");
1701 #.FN_BODY SysInfoType15-1bis
1702 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.1bis");
1705 #.FN_BODY SysInfoType15-1ter
1706 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.1ter");
1709 #.FN_BODY SysInfoType15-2
1710 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.2");
1713 #.FN_BODY SysInfoType15-2bis
1714 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.2bis");
1717 #.FN_BODY SysInfoType15-2ter
1718 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.2ter");
1721 #.FN_BODY SysInfoType15-3
1722 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.3");
1725 #.FN_BODY SysInfoType15-3bis
1726 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.3bis");
1729 #.FN_BODY SysInfoType15-4
1730 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.4");
1733 #.FN_BODY SysInfoType15-5
1734 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.5");
1737 #.FN_BODY SysInfoType15-6
1738 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.6");
1741 #.FN_BODY SysInfoType15-7
1742 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.7");
1745 #.FN_BODY SysInfoType15-8
1746 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.8");
1749 #.FN_BODY SysInfoType16
1750 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 16");
1753 #.FN_BODY SysInfoType17
1754 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 17");
1757 #.FN_BODY SysInfoType18
1758 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 18");
1761 #.FN_BODY SysInfoType19
1762 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 19");
1765 #.FN_BODY SysInfoType20
1766 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 20");
1769 #.FN_BODY SysInfoType21
1770 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 21");
1773 #.FN_BODY SysInfoType22
1774 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 22");
1777 #.FN_BODY SysInfoType23
1778 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 23");
1781 #.FN_BODY SysInfoType24
1782 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 24");
1785 #.FN_BODY SysInfoType25
1786 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 25");
1789 #.FN_BODY SysInfoTypeSB1
1790 col_append_str(actx->pinfo->cinfo, COL_INFO, "Scheduling Block 1");
1793 #.FN_BODY SysInfoTypeSB2
1794 col_append_str(actx->pinfo->cinfo, COL_INFO, "Scheduling Block 2");
1797 #.FN_BODY SysInfoTypeSB3
1798 col_append_str(actx->pinfo->cinfo, COL_INFO, "Scheduling Block 3");