# rrc.cnf # rrc conformation file # Copyright 2006 Anders Broman #.OPT PER UNALIGNED PROTO_ROOT_NAME proto_rrc #.END #.USE_VALS_EXT AverageRLC-BufferPayload DL-DCCH-MessageType DL-TS-ChannelisationCode-VHCR EstablishmentCause E-DCH-MAC-d-FlowRetransTimer HARQMemorySize CommonEDCHSystemInfo/modeSpecificInfo/tdd/tdd128/ccch-transmission-Info/harq-retransmission-timer MBMS-AccessProbabilityFactor PNBSCH-Allocation-r4/numberOfRepetitionsPerSFNPeriod RadioFrequencyBandFDD3 E-PUCH-Info/modeSpecificInfo/tdd128/retransTimerForSchedInfo E-PUCH-Info-TDD128/retransTimerForSchedInfo ReceivedMessageType RLC-BuffersPayload SCCPCH-ChannelisationCode-VHCR SFN-SFN-Drift SIBSb-TypeAndTag SIB-Type SIB-TypeAndTag SIB-TypeAndTag2 TDD768-PICH-CCode TDD-PRACH-CCode-LCR-r4 TimerPoll TimerPollProhibit TimerStatusProhibit TrafficVolumeThreshold U-RNTI-Group UL-DCCH-MessageType UL-TS-ChannelisationCode UL-TS-ChannelisationCode-VHCR MinimumTEBS-threshold UE-DTX-Cycle2-2ms-Secondary SIB-Type2 WLANThreshBackhaulRate #.EXPORTS InterRATHandoverInfo InterRATHandoverInfo_PDU ToTargetRNC-Container_PDU TargetRNC-ToSourceRNC-Container_PDU HandoverToUTRANCommand_PDU SysInfoType1_PDU SysInfoType2_PDU SysInfoType3_PDU SysInfoType4_PDU SysInfoType5_PDU SysInfoType6_PDU SysInfoType7_PDU SysInfoType11_PDU SysInfoType12_PDU SysInfoType13_PDU SysInfoType13-1_PDU SysInfoType13-2_PDU SysInfoType13-3_PDU SysInfoType13-4_PDU SysInfoType14_PDU SysInfoType15_PDU SysInfoType15-1_PDU SysInfoType15-2_PDU SysInfoType15-3_PDU SysInfoType15-4_PDU SysInfoType16_PDU SysInfoType17_PDU SysInfoType18_PDU SysInfoType19_PDU SysInfoTypeSB1_PDU SysInfoTypeSB2_PDU MasterInformationBlock_PDU MeasurementReport_PDU #.OMIT_ASSIGNMENT # Omit System-Information-Container for now it messes up the # MasterInformationBlock @si.mib # : # for some reason UE-RadioAccessCapability-v890ext UE-RadioAccessCapability-va60ext UL-PhysChCapabilityFDD-r6 GSMCellGroupingList UE-Positioning-GANSS-Data GANSSDecipheringKeys GSM-CellID RRCConnectionRelease-CCCH-va40ext-IEs MeasuredResultsList-vd20ext #.END #.PDU DL-DCCH-Message @dl.dcch UL-DCCH-Message @ul.dcch DL-CCCH-Message @dl.ccch UL-CCCH-Message @ul.ccch PCCH-Message @pcch DL-SHCCH-Message @dl.shcch UL-SHCCH-Message @ul.shcch BCCH-FACH-Message @bcch.fach BCCH-BCH-Message @bcch.bch BCCH-BCH2-Message @bcch.bch2 MCCH-Message @mcch MSCH-Message @msch SystemInformation-BCH @sysinfo SystemInformation2-BCH @sysinfo2 System-Information-Container @sysinfo.cont MasterInformationBlock @si.mib MeasurementReport SysInfoType1 @si.sib1 SysInfoType2 @si.sib2 SysInfoType3 @si.sib3 SysInfoType4 @si.sib4 SysInfoType5 @si.sib5 SysInfoType5bis @si.sib5bis SysInfoType6 @si.sib6 SysInfoType7 @si.sib7 SysInfoType8 @si.sib8 SysInfoType9 @si.sib9 SysInfoType10 @si.sib10 SysInfoType11 @si.sib11 SysInfoType11bis @si.sib11bis SysInfoType11ter @si.sib11ter SysInfoType12 @si.sib12 SysInfoType13 @si.sib13 SysInfoType13-1 @si.sib13-1 SysInfoType13-2 @si.sib13-2 SysInfoType13-3 @si.sib13-3 SysInfoType13-4 @si.sib13-4 SysInfoType14 @si.sib14 SysInfoType15 @si.sib15 SysInfoType15bis @si.sib15bis SysInfoType15-1 @si.sib15-1 SysInfoType15-1bis @si.sib15-1bis SysInfoType15-1ter @si.sib15-1ter SysInfoType15-2 @si.sib15-2 SysInfoType15-2bis @si.sib15-2bis SysInfoType15-2ter @si.sib15-2ter SysInfoType15-3 @si.sib15-3 SysInfoType15-3bis @si.sib15-3bis SysInfoType15-4 @si.sib15-4 SysInfoType15-5 @si.sib15-5 SysInfoType15-6 @si.sib15-6 SysInfoType15-7 @si.sib15-7 SysInfoType15-8 @si.sib15-8 SysInfoType16 @si.sib16 SysInfoType17 @si.sib17 SysInfoType18 @si.sib18 SysInfoType19 @si.sib19 SysInfoType20 @si.sib20 SysInfoType21 @si.sib21 SysInfoType22 @si.sib22 SysInfoType23 @si.sib23 SysInfoType24 @si.sib24 SysInfoType25 @si.sib25 SysInfoTypeSB1 @si.sb1 SysInfoTypeSB2 @si.sb2 SysInfoTypeSB3 @si.sb3 HandoverToUTRANCommand @irat.ho_to_utran_cmd InterRATHandoverInfo @irat.irat_ho_info UE-RadioAccessCapabilityInfo @ue_radio_access_cap_info ToTargetRNC-Container @s_to_trnc_cont TargetRNC-ToSourceRNC-Container @t_to_srnc_cont #.FIELD_RENAME HandoverFromUTRANCommand-GSM-r3-IEs/gsm-message/gsm-MessageList gsm-MessageList-r3 HandoverFromUTRANCommand-GSM-r6-IEs/gsm-message/gsm-MessageList gsm-MessageList-r6 HandoverFromUTRANFailure/interRATMessage/gsm/gsm-MessageList gsm-MessageList-gsm HandoverFromUTRANCommand-GSM-r3-IEs/gsm-message/single-GSM-Message single-GSM-Message-r3 HandoverFromUTRANCommand-GSM-r6-IEs/gsm-message/single-GSM-Message single-GSM-Message-r6 #.END #.FN_BODY NAS-Message VAL_PTR = &nas_message_tvb tvbuff_t *nas_message_tvb=NULL; %(DEFAULT_BODY)s if (nas_message_tvb && gsm_a_dtap_handle) { proto_tree *nas_tree = rrc_nas_in_root_tree ? proto_tree_get_root(tree) : tree; call_dissector(gsm_a_dtap_handle,nas_message_tvb,%(ACTX)s->pinfo, nas_tree); } #.FN_BODY InterRATHandoverInfo/ue-CapabilityContainer/present VAL_PTR = &ue_radio_access_cap_info_tvb tvbuff_t *ue_radio_access_cap_info_tvb=NULL; %(DEFAULT_BODY)s if (ue_radio_access_cap_info_tvb) call_dissector(rrc_ue_radio_access_cap_info_handle,ue_radio_access_cap_info_tvb,%(ACTX)s->pinfo, tree); #.END #.FN_BODY ActiveSetUpdate col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdate"); %(DEFAULT_BODY)s #.FN_BODY ActiveSetUpdateComplete col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdateComplete"); %(DEFAULT_BODY)s #.FN_BODY ActiveSetUpdateFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "ActiveSetUpdateFailure"); %(DEFAULT_BODY)s #.FN_BODY AssistanceDataDelivery col_append_str(actx->pinfo->cinfo, COL_INFO, "AssistanceDataDelivery"); %(DEFAULT_BODY)s #.FN_BODY CellChangeOrderFromUTRAN col_append_str(actx->pinfo->cinfo, COL_INFO, "CellChangeOrderFromUTRAN"); %(DEFAULT_BODY)s #.FN_BODY CellChangeOrderFromUTRANFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "CellChangeOrderFromUTRANFailure"); %(DEFAULT_BODY)s #.FN_BODY CellUpdate col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdate"); %(DEFAULT_BODY)s #.FN_BODY CellUpdateFDD-r11 col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateFDD-r11"); %(DEFAULT_BODY)s #.FN_BODY CellUpdateConfirm-CCCH fp_info *fpinf = NULL; rlc_info *rlcinf = NULL; guint32 u_rnti; col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm-CCCH"); %(DEFAULT_BODY)s if(PINFO_FD_VISITED(actx->pinfo)) { return offset; } fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0); /*If FP info or RLC info is missing , skip all this*/ if(fpinf == NULL || rlcinf == NULL){ return offset; } /* If UE is moving to CELL_DCH we need to map it's U-RNTI to the new CRNC context in NBAP */ if (private_data_get_rrc_state_indicator(actx) == RRC_UE_STATE_CELL_DCH) { u_rnti = private_data_get_current_u_rnti(actx); rrc_try_map_urnti_to_crncc(u_rnti, actx); } #.FN_BODY CellUpdateConfirm fp_info *fpinf = NULL; rlc_info *rlcinf = NULL; guint32 u_rnti; col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm"); %(DEFAULT_BODY)s if(PINFO_FD_VISITED(actx->pinfo)) { return offset; } fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0); /*If FP info or RLC info is missing , skip all this*/ if(fpinf == NULL || rlcinf == NULL){ return offset; } /* If UE is moving to CELL_DCH we need to map it's U-RNTI to the new CRNC context in NBAP */ if (private_data_get_rrc_state_indicator(actx) == RRC_UE_STATE_CELL_DCH) { u_rnti = rlcinf->ueid[fpinf->cur_tb]; /* Hopefully a U-RNTI, might be C-RNTI */ rrc_try_map_urnti_to_crncc(u_rnti, actx); } #.FN_BODY CounterCheck col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheck"); %(DEFAULT_BODY)s #.FN_BODY CounterCheckResponse col_append_str(actx->pinfo->cinfo, COL_INFO, "CounterCheckResponse"); %(DEFAULT_BODY)s #.FN_BODY DownlinkDirectTransfer col_append_str(actx->pinfo->cinfo, COL_INFO, "DownlinkDirectTransfer"); %(DEFAULT_BODY)s #.FN_BODY ETWSPrimaryNotificationWithSecurity col_append_str(actx->pinfo->cinfo, COL_INFO, "ETWSPrimaryNotificationWithSecurity"); %(DEFAULT_BODY)s #.FN_BODY HandoverToUTRANComplete col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverToUTRANComplete"); %(DEFAULT_BODY)s #.FN_BODY InitialDirectTransfer col_append_str(actx->pinfo->cinfo, COL_INFO, "InitialDirectTransfer"); %(DEFAULT_BODY)s #.FN_BODY HandoverFromUTRANCommand-EUTRA col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-EUTRA"); %(DEFAULT_BODY)s #.FN_BODY HandoverFromUTRANCommand-GERANIu col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-GERANIu"); %(DEFAULT_BODY)s #.FN_BODY HandoverFromUTRANCommand-GSM col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-GSM"); %(DEFAULT_BODY)s #.FN_BODY HandoverFromUTRANCommand-CDMA2000 col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANCommand-CDMA2000"); %(DEFAULT_BODY)s #.FN_BODY HandoverFromUTRANFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "HandoverFromUTRANFailure"); %(DEFAULT_BODY)s #.FN_BODY LoggingMeasurementConfiguration col_append_str(actx->pinfo->cinfo, COL_INFO, "LoggingMeasurementConfiguration"); %(DEFAULT_BODY)s #.FN_BODY MBMSAccessInformation col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSAccessInformation"); %(DEFAULT_BODY)s #.FN_BODY MBMSCommonPTMRBInformation col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCommonPTMRBInformation"); %(DEFAULT_BODY)s #.FN_BODY MBMSCurrentCellPTMRBInformation col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSCurrentCellPTMRBInformation"); %(DEFAULT_BODY)s #.FN_BODY MBMSGeneralInformation col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSGeneralInformation"); %(DEFAULT_BODY)s #.FN_BODY MBMSModificationRequest col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSModificationRequest"); %(DEFAULT_BODY)s #.FN_BODY MBMSModifiedServicesInformation col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSModifiedServicesInformation"); %(DEFAULT_BODY)s #.FN_BODY MBMSNeighbouringCellPTMRBInformation col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSNeighbouringCellPTMRBInformation"); %(DEFAULT_BODY)s #.FN_BODY MBMSSchedulingInformation col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSSchedulingInformation"); %(DEFAULT_BODY)s #.FN_BODY MBMSUnmodifiedServicesInformation col_append_str(actx->pinfo->cinfo, COL_INFO, "MBMSUnmodifiedServicesInformation"); %(DEFAULT_BODY)s #.FN_BODY MeasurementControl col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementControl"); %(DEFAULT_BODY)s #.FN_BODY MeasurementControlFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementControlFailure"); %(DEFAULT_BODY)s #.FN_BODY MeasurementReport col_append_str(actx->pinfo->cinfo, COL_INFO, "MeasurementReport"); %(DEFAULT_BODY)s #.FN_BODY PagingType1 col_append_str(actx->pinfo->cinfo, COL_INFO, "PagingType1"); %(DEFAULT_BODY)s #.FN_BODY PagingType2 col_append_str(actx->pinfo->cinfo, COL_INFO, "PagingType2"); %(DEFAULT_BODY)s #.FN_BODY PhysicalChannelReconfiguration fp_info *fpinf = NULL; rlc_info *rlcinf = NULL; guint32 u_rnti; col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfiguration"); %(DEFAULT_BODY)s if(PINFO_FD_VISITED(actx->pinfo)) { return offset; } fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0); /*If FP info or RLC info is missing , skip all this*/ if(fpinf == NULL || rlcinf == NULL){ return offset; } /* If we receive this message on FACH and UE is moving to CELL_DCH */ /* we need to map it's U-RNTI to the new CRNC context in NBAP */ if (fpinf->channel == CHANNEL_FACH_FDD && private_data_get_rrc_state_indicator(actx) == RRC_UE_STATE_CELL_DCH) { u_rnti = rlcinf->ueid[fpinf->cur_tb]; /* Hopefully a U-RNTI, might be C-RNTI */ rrc_try_map_urnti_to_crncc(u_rnti, actx); } #.FN_BODY PhysicalChannelReconfigurationComplete col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfigurationComplete"); %(DEFAULT_BODY)s #.FN_BODY PhysicalChannelReconfigurationFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfigurationFailure"); %(DEFAULT_BODY)s #.FN_BODY PhysicalSharedChannelAllocation col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalSharedChannelAllocation"); %(DEFAULT_BODY)s #.FN_BODY PUSCHCapacityRequest col_append_str(actx->pinfo->cinfo, COL_INFO, "PUSCHCapacityRequest"); %(DEFAULT_BODY)s #.FN_BODY RadioBearerReconfiguration fp_info *fpinf = NULL; rlc_info *rlcinf = NULL; guint32 u_rnti; col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfiguration"); %(DEFAULT_BODY)s if(PINFO_FD_VISITED(actx->pinfo)) { return offset; } fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0); /*If FP info or RLC info is missing , skip all this*/ if(fpinf == NULL || rlcinf == NULL){ return offset; } /* If we receive this message on FACH and UE is moving to CELL_DCH */ /* we need to map it's U-RNTI to the new CRNC context in NBAP */ if (fpinf->channel == CHANNEL_FACH_FDD && private_data_get_rrc_state_indicator(actx) == RRC_UE_STATE_CELL_DCH) { u_rnti = rlcinf->ueid[fpinf->cur_tb]; /* Hopefully a U-RNTI, might be C-RNTI */ rrc_try_map_urnti_to_crncc(u_rnti, actx); } #.FN_BODY RadioBearerReconfigurationComplete col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfigurationComplete"); %(DEFAULT_BODY)s #.FN_BODY RadioBearerReconfigurationFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfigurationFailure"); %(DEFAULT_BODY)s #.FN_BODY RadioBearerRelease col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerRelease"); %(DEFAULT_BODY)s #.FN_BODY RadioBearerReleaseComplete col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReleaseComplete"); %(DEFAULT_BODY)s #.FN_BODY RadioBearerReleaseFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReleaseFailure"); %(DEFAULT_BODY)s #.FN_BODY RadioBearerSetup col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetup"); %(DEFAULT_BODY)s #.FN_BODY RadioBearerSetupComplete col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetupComplete"); %(DEFAULT_BODY)s #.FN_BODY RadioBearerSetupFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerSetupFailure"); %(DEFAULT_BODY)s #.FN_BODY RRCConnectionReject col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReject"); %(DEFAULT_BODY)s #.FN_BODY RRCConnectionRelease col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease"); %(DEFAULT_BODY)s #.FN_BODY RRCConnectionRelease-CCCH col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRelease-CCCH"); %(DEFAULT_BODY)s #.FN_BODY RRCConnectionReleaseComplete col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionReleaseComplete"); %(DEFAULT_BODY)s #.FN_BODY RRCConnectionRequest col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionRequest"); %(DEFAULT_BODY)s #.FN_BODY RRCConnectionSetup guint32 new_u_rnti; col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetup"); %(DEFAULT_BODY)s if (PINFO_FD_VISITED(actx->pinfo)) { return offset; } /* Trying to map the U-RNTI assigned to the user to CRNC Context from NBAP*/ new_u_rnti = private_data_get_new_u_rnti(actx); rrc_try_map_urnti_to_crncc(new_u_rnti, actx); #.FN_BODY RRCConnectionSetupComplete col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetupComplete"); %(DEFAULT_BODY)s #.FN_BODY RRCStatus col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCStatus"); %(DEFAULT_BODY)s #.FN_BODY SecurityModeCommand fp_info *fpinf; rlc_info *rlcinf; rrc_ciphering_info *ciphering_info = NULL; guint8 direction; col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeCommand"); fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0); /*If FP info or RLC info is missing , skip all this*/ if(fpinf != NULL && rlcinf != NULL){ ciphering_info = get_or_create_cipher_info(fpinf, rlcinf); private_data_set_ciphering_info(actx, ciphering_info); } %(DEFAULT_BODY)s if( ciphering_info != NULL ){ direction = P2P_DIR_DL; /* Security Mode Command is from the RNC, direction is always downlink */ ciphering_info->setup_frame[direction] = actx->pinfo->num; } #.FN_BODY SecurityModeComplete fp_info *fpinf; rlc_info *rlcinf; rrc_ciphering_info *ciphering_info = NULL; guint8 direction; col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeComplete"); fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0); /*If FP info or RLC info is missing , skip all this*/ if(fpinf != NULL || rlcinf != NULL){ ciphering_info = get_or_create_cipher_info(fpinf, rlcinf); private_data_set_ciphering_info(actx, ciphering_info); } %(DEFAULT_BODY)s if( ciphering_info != NULL ){ direction = P2P_DIR_UL; /* Security Mode Complete is from the UE, direction is always uplink */ ciphering_info->setup_frame[direction] = actx->pinfo->num; } #.FN_BODY SecurityModeFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeFailure"); %(DEFAULT_BODY)s #.FN_BODY SignallingConnectionRelease col_append_str(actx->pinfo->cinfo, COL_INFO, "SignallingConnectionRelease"); %(DEFAULT_BODY)s #.FN_BODY SignallingConnectionReleaseIndication col_append_str(actx->pinfo->cinfo, COL_INFO, "SignallingConnectionReleaseIndication"); %(DEFAULT_BODY)s #.FN_BODY SystemInformation-BCH col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation-BCH"); %(DEFAULT_BODY)s #.FN_BODY SystemInformation-FACH col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformation-FACH"); %(DEFAULT_BODY)s #.FN_BODY SystemInformationChangeIndication col_append_str(actx->pinfo->cinfo, COL_INFO, "SystemInformationChangeIndication"); %(DEFAULT_BODY)s #.FN_BODY TransportChannelReconfiguration fp_info *fpinf = NULL; rlc_info *rlcinf = NULL; guint32 u_rnti; col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfiguration"); %(DEFAULT_BODY)s if(PINFO_FD_VISITED(actx->pinfo)) { return offset; } fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0); /*If FP info or RLC info is missing , skip all this*/ if(fpinf == NULL || rlcinf == NULL){ return offset; } /* If we receive this message on FACH and UE is moving to CELL_DCH */ /* we need to map it's U-RNTI to the new CRNC context in NBAP */ if (fpinf->channel == CHANNEL_FACH_FDD && private_data_get_rrc_state_indicator(actx) == RRC_UE_STATE_CELL_DCH) { u_rnti = rlcinf->ueid[fpinf->cur_tb]; /* Hopefully a U-RNTI, might be C-RNTI */ rrc_try_map_urnti_to_crncc(u_rnti, actx); } #.FN_BODY TransportChannelReconfigurationComplete col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfigurationComplete"); %(DEFAULT_BODY)s #.FN_BODY TransportChannelReconfigurationFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfigurationFailure"); %(DEFAULT_BODY)s #.FN_BODY TransportFormatCombinationControl col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportFormatCombinationControl"); %(DEFAULT_BODY)s #.FN_BODY TransportFormatCombinationControlFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportFormatCombinationControlFailure"); %(DEFAULT_BODY)s #.FN_BODY UECapabilityEnquiry col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityEnquiry"); %(DEFAULT_BODY)s #.FN_BODY UECapabilityInformation col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformation"); %(DEFAULT_BODY)s #.FN_BODY UECapabilityInformationConfirm col_append_str(actx->pinfo->cinfo, COL_INFO, "UECapabilityInformationConfirm"); %(DEFAULT_BODY)s #.FN_BODY UEInformationRequest col_append_str(actx->pinfo->cinfo, COL_INFO, "UEInformationRequest"); %(DEFAULT_BODY)s #.FN_BODY UEInformationResponse col_append_str(actx->pinfo->cinfo, COL_INFO, "UEInformationResponse"); %(DEFAULT_BODY)s #.FN_BODY UplinkDirectTransfer col_append_str(actx->pinfo->cinfo, COL_INFO, "UplinkDirectTransfer"); %(DEFAULT_BODY)s #.FN_BODY UplinkPhysicalChannelControl col_append_str(actx->pinfo->cinfo, COL_INFO, "UplinkPhysicalChannelControl"); %(DEFAULT_BODY)s #.FN_BODY URAUpdate col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdate"); %(DEFAULT_BODY)s #.FN_BODY URAUpdateConfirm col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdateConfirm"); %(DEFAULT_BODY)s #.FN_BODY URAUpdateConfirm-CCCH col_append_str(actx->pinfo->cinfo, COL_INFO, "URAUpdateConfirm-CCCH"); %(DEFAULT_BODY)s #.FN_BODY UTRANMobilityInformation col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformation"); %(DEFAULT_BODY)s #.FN_BODY UTRANMobilityInformationConfirm col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationConfirm"); %(DEFAULT_BODY)s #.FN_BODY UTRANMobilityInformationFailure col_append_str(actx->pinfo->cinfo, COL_INFO, "UTRANMobilityInformationFailure"); %(DEFAULT_BODY)s #.FN_BODY TargetRNC-ToSourceRNC-Container/dL-DCCHmessage VAL_PTR = &dl_dcch_message_tvb tvbuff_t *dl_dcch_message_tvb=NULL; %(DEFAULT_BODY)s if (dl_dcch_message_tvb) call_dissector(rrc_dl_dcch_handle,dl_dcch_message_tvb,%(ACTX)s->pinfo, proto_tree_get_root(tree)); #.FN_BODY GSM-MessageList/_item VAL_PTR = &gsm_messagelist_tvb tvbuff_t *gsm_messagelist_tvb=NULL; %(DEFAULT_BODY)s if (gsm_messagelist_tvb && gsm_a_dtap_handle) call_dissector(gsm_a_dtap_handle,gsm_messagelist_tvb,actx->pinfo, tree); #.FN_BODY HandoverFromUTRANCommand-GSM-r3-IEs/gsm-message/single-GSM-Message single-GSM-Message-r3 tvbuff_t *gsm_message_tvb=NULL; guint bits_remaining, whole_octets_remaining; %(DEFAULT_BODY)s bits_remaining = 8*tvb_reported_length(tvb) - offset; whole_octets_remaining = bits_remaining / 8; gsm_message_tvb = tvb_new_octet_aligned(tvb, offset, 8*whole_octets_remaining); if (gsm_message_tvb) { add_new_data_source(actx->pinfo,gsm_message_tvb,"GSM Message(aligned)"); call_dissector(gsm_a_dtap_handle,gsm_message_tvb,actx->pinfo, tree); } #.FN_BODY HandoverFromUTRANCommand-GSM-r6-IEs/gsm-message/single-GSM-Message single-GSM-Message-r6 tvbuff_t *gsm_message_tvb=NULL; guint bits_remaining, whole_octets_remaining; %(DEFAULT_BODY)s bits_remaining = 8*tvb_reported_length(tvb) - offset; whole_octets_remaining = bits_remaining / 8; gsm_message_tvb = tvb_new_octet_aligned(tvb, offset, 8*whole_octets_remaining); if (gsm_message_tvb && gsm_a_dtap_handle) { add_new_data_source(actx->pinfo,gsm_message_tvb,"GSM Message(aligned)"); call_dissector(gsm_a_dtap_handle,gsm_message_tvb,actx->pinfo, tree); } #.FN_BODY GERAN-SystemInfoBlock VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; %(DEFAULT_BODY)s if (parameter_tvb){ guint8 byte = tvb_get_guint8(parameter_tvb, 0); if (byte == 0x06) { if (gsm_a_dtap_handle) { call_dissector(gsm_a_dtap_handle, parameter_tvb, actx->pinfo, tree); } } else { if (gsm_rlcmac_dl_handle) { call_dissector(gsm_rlcmac_dl_handle, parameter_tvb, actx->pinfo, tree); } } } #.FN_BODY GSM-Classmark2 VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; %(DEFAULT_BODY)s if (parameter_tvb){ de_ms_cm_2(parameter_tvb, tree, actx->pinfo, 2, tvb_get_guint8(parameter_tvb,1), NULL, 0); } #.FN_BODY GSM-Classmark3 VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; %(DEFAULT_BODY)s if (parameter_tvb){ de_ms_cm_3(parameter_tvb, tree, actx->pinfo, 0, tvb_reported_length(parameter_tvb), NULL, 0); } #.FN_BODY GSM-MS-RadioAccessCapability VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; %(DEFAULT_BODY)s if (parameter_tvb){ de_gmm_ms_radio_acc_cap(parameter_tvb, tree, actx->pinfo, 0, tvb_reported_length(parameter_tvb), NULL, 0); } #.FN_BODY InterRATHandoverInfoWithInterRATCapabilities-r3-IEs/interRATHandoverInfo VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb=NULL; %(DEFAULT_BODY)s if (parameter_tvb){ dissect_rrc_InterRATHandoverInfo_PDU(parameter_tvb, actx->pinfo, tree, NULL); } #.FN_BODY EUTRA-RadioAccessCapability/ue-EUTRA-Capability VAL_PTR = &ue_eutra_cap_tvb tvbuff_t *ue_eutra_cap_tvb = NULL; %(DEFAULT_BODY)s if (ue_eutra_cap_tvb && lte_rrc_ue_eutra_cap_handle) call_dissector(lte_rrc_ue_eutra_cap_handle, ue_eutra_cap_tvb, actx->pinfo, tree); #.FN_BODY HandoverFromUTRANCommand-EUTRA-r8-IEs/eutra-Message VAL_PTR = &eutra_message_tvb tvbuff_t *eutra_message_tvb = NULL; %(DEFAULT_BODY)s if (eutra_message_tvb && lte_rrc_dl_dcch_handle) call_dissector(lte_rrc_dl_dcch_handle, eutra_message_tvb, actx->pinfo, tree); #.FN_BODY HandoverFromUTRANCommand-EUTRA-r11-IEs/eutra-Message VAL_PTR = &eutra_message_tvb tvbuff_t *eutra_message_tvb = NULL; %(DEFAULT_BODY)s if (eutra_message_tvb && lte_rrc_dl_dcch_handle) call_dissector(lte_rrc_dl_dcch_handle, eutra_message_tvb, actx->pinfo, tree); #.FN_BODY HandoverFromUtranFailure-v860ext-IEs/eutra-Message VAL_PTR = &eutra_message_tvb tvbuff_t *eutra_message_tvb = NULL; %(DEFAULT_BODY)s if (eutra_message_tvb && lte_rrc_dl_dcch_handle) call_dissector(lte_rrc_dl_dcch_handle, eutra_message_tvb, actx->pinfo, tree); #.FN_BODY MultiModeRAT-Capability-v860ext/eutraFeatureGroupIndicators VAL_PTR = &eutraFeatureGroupIndicators_tvb tvbuff_t *eutraFeatureGroupIndicators_tvb=NULL; %(DEFAULT_BODY)s if(eutraFeatureGroupIndicators_tvb){ /* Dissect eutraFeatureGroupIndicators */ proto_tree *subtree; gint curr_bit_offset = 0; subtree = proto_item_add_subtree(actx->created_item, ett_rrc_eutraFeatureGroupIndicators); proto_tree_add_bits_item(subtree, hf_rrc_eutra_feat_group_ind_1, eutraFeatureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN); curr_bit_offset++; proto_tree_add_bits_item(subtree, hf_rrc_eutra_feat_group_ind_2, eutraFeatureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN); curr_bit_offset++; proto_tree_add_bits_item(subtree, hf_rrc_eutra_feat_group_ind_3, eutraFeatureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN); curr_bit_offset++; proto_tree_add_bits_item(subtree, hf_rrc_eutra_feat_group_ind_4, eutraFeatureGroupIndicators_tvb, curr_bit_offset, 1, ENC_BIG_ENDIAN); } #.FN_BODY PLMN-Identity wmem_strbuf_t* mcc_mnc_strbuf; wmem_strbuf_t* mcc_strbuf; guint32 string_len; gchar* mcc_mnc_string; tvbuff_t* mcc_mnc_tvb; /* Reset the digits string in the private data struct */ /* Maximal length: 7 = 3 digits MCC + 3 digits MNC + trailing '\0' */ mcc_mnc_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,7); private_data_set_digits_strbuf(actx, mcc_mnc_strbuf); /* Reset parsing failure flag*/ private_data_set_digits_strbuf_parsing_failed_flag(actx, FALSE); %(DEFAULT_BODY)s private_data_set_digits_strbuf(actx, NULL); /* Check for parsing errors */ if(private_data_get_digits_strbuf_parsing_failed_flag(actx)) { return offset; } /* Extracting the string collected in the strbuf */ string_len = (guint32)wmem_strbuf_get_len(mcc_mnc_strbuf); mcc_mnc_string = wmem_strbuf_finalize(mcc_mnc_strbuf); if(string_len >= 3) { /* 3 MCC digits were found, keep for later in case MCC is missing in other PLMN ids*/ mcc_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,4); wmem_strbuf_append_c(mcc_strbuf,mcc_mnc_string[0]); wmem_strbuf_append_c(mcc_strbuf,mcc_mnc_string[1]); wmem_strbuf_append_c(mcc_strbuf,mcc_mnc_string[2]); wmem_strbuf_append_c(mcc_strbuf,'\0'); private_data_set_last_mcc_strbuf(actx,mcc_strbuf); } /* Creating TVB from extracted string*/ mcc_mnc_tvb = tvb_new_child_real_data(tvb, (guint8*)mcc_mnc_string, string_len, string_len); add_new_data_source(actx->pinfo, mcc_mnc_tvb, "MCC-MNC"); /* Calling E.212 */ dissect_e212_mcc_mnc_in_utf8_address(mcc_mnc_tvb, actx->pinfo, tree, 0); #.FN_BODY PLMN-IdentityWithOptionalMCC-r6 wmem_strbuf_t* mcc_mnc_strbuf; wmem_strbuf_t* temp_strbuf; wmem_strbuf_t* last_mcc_strbuf; guint32 string_len; gchar* mcc_mnc_string; tvbuff_t* mcc_mnc_tvb; /* Reset the digits string in the private data struct */ /* Maximal length: 7 = 3 digits MCC + 3 digits MNC + trailing '\0' */ mcc_mnc_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,7); private_data_set_digits_strbuf(actx, mcc_mnc_strbuf); /* Reset parsing failure flag*/ private_data_set_digits_strbuf_parsing_failed_flag(actx, FALSE); %(DEFAULT_BODY)s private_data_set_digits_strbuf(actx, NULL); /* Check for parsing errors */ if(private_data_get_digits_strbuf_parsing_failed_flag(actx)) { return offset; } /* Extracting the string collected in the strbuf */ string_len = (guint32)wmem_strbuf_get_len(mcc_mnc_strbuf); mcc_mnc_string = wmem_strbuf_finalize(mcc_mnc_strbuf); if (string_len > 3) { /* 3 MCC digits and at least 1 MNC digit were found, keep MCC for later in case it's missing in other PLMN ids*/ temp_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,4); wmem_strbuf_append_c(temp_strbuf,mcc_mnc_string[0]); wmem_strbuf_append_c(temp_strbuf,mcc_mnc_string[1]); wmem_strbuf_append_c(temp_strbuf,mcc_mnc_string[2]); wmem_strbuf_append_c(temp_strbuf,'\0'); private_data_set_last_mcc_strbuf(actx,temp_strbuf); } else { /* mcc_mnc_strbuf Probably only has 3/2 digits of MNC */ /* Try to fill MCC form "last MCC" if we have it stored */ last_mcc_strbuf = private_data_get_last_mcc_strbuf(actx); if(last_mcc_strbuf) { /* Concat MCC and MNC in temp buffer */ temp_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,7); wmem_strbuf_append_printf(temp_strbuf,"%%s",wmem_strbuf_get_str(last_mcc_strbuf)); wmem_strbuf_append_printf(temp_strbuf,"%%s",mcc_mnc_string); /* Update length of recovered MCC-MNC pair */ string_len = (guint32)wmem_strbuf_get_len(temp_strbuf); mcc_mnc_string = wmem_strbuf_finalize(temp_strbuf); } } if (string_len >= 5) { /* optional MCC was present (or restored above), we can call E.212 dissector */ /* Creating TVB from extracted string*/ mcc_mnc_tvb = tvb_new_child_real_data(tvb, (guint8*)mcc_mnc_string, string_len, string_len); add_new_data_source(actx->pinfo, mcc_mnc_tvb, "MCC-MNC"); /* Calling E.212 */ dissect_e212_mcc_mnc_in_utf8_address(mcc_mnc_tvb, actx->pinfo, tree, 0); } #.FN_BODY IMSI-GSM-MAP wmem_strbuf_t* imsi_strbuf; guint32 string_len; gchar* imsi_string; tvbuff_t* imsi_tvb; /* Reset the digits string in the private data struct */ imsi_strbuf = wmem_strbuf_new_sized(actx->pinfo->pool,16); private_data_set_digits_strbuf(actx, imsi_strbuf); /* Reset parsing failure flag*/ private_data_set_digits_strbuf_parsing_failed_flag(actx, FALSE); %(DEFAULT_BODY)s private_data_set_digits_strbuf(actx, NULL); /* Check for parsing errors */ if(private_data_get_digits_strbuf_parsing_failed_flag(actx)) { return offset; } /* Extracting the string collected in the strbuf */ string_len = (guint32)wmem_strbuf_get_len(imsi_strbuf); imsi_string = wmem_strbuf_finalize(imsi_strbuf); /* Creating TVB from extracted string*/ imsi_tvb = tvb_new_child_real_data(tvb, (guint8*)imsi_string, string_len, string_len); add_new_data_source(actx->pinfo, imsi_tvb, "IMSI"); /* Calling E.212 */ dissect_e212_utf8_imsi(imsi_tvb,actx->pinfo,tree,0,string_len); #.FN_BODY Digit VAL_PTR = &digit guint32 digit; wmem_strbuf_t* digits_strbuf; /* The string of either an IMSI or a MCC-MNC pair */ %(DEFAULT_BODY)s if(private_data_get_digits_strbuf_parsing_failed_flag(actx)) { return offset; } digits_strbuf = private_data_get_digits_strbuf(actx); if (digits_strbuf) { gchar digit_char; if(digit > 9) { private_data_set_digits_strbuf_parsing_failed_flag(actx, TRUE); return offset; } /* Converting to the matching gchar */ digit_char = (gchar)(digit + '0'); /* Appending to the digits string */ wmem_strbuf_append_c(digits_strbuf, digit_char); } #.FN_BODY CompleteSIBshort private_data_set_curr_sib_segment_type(actx,RRC_SIB_SEG_COMP); %(DEFAULT_BODY)s private_data_set_curr_sib_segment_type(actx,RRC_SIB_SEG_NO_SEGMENT); /* Resetting value */ #.FN_BODY SIB-Type VAL_PTR = &sib_type guint32 sib_type; %(DEFAULT_BODY)s private_data_set_curr_sib_type(actx,sib_type); #.FN_BODY SIB-Data-variable VAL_PTR = &sib_data_tvb tvbuff_t *sib_data_tvb; guint32 sib_type; proto_tree *subtree; guint32 seg_type; %(DEFAULT_BODY)s seg_type = (guint32)private_data_get_curr_sib_segment_type(actx); if(seg_type != RRC_SIB_SEG_COMP) { /* TODO: The Dissector only handles 'complete SIBs' right now. * Reassembly logic should be implemented, taking into acocunt that * different fragments might arrive in different frames. */ return offset; } /* This is a complete SIB - Call handler according to previous SIB-Type field*/ subtree = proto_item_add_subtree(actx->created_item, ett_rrc_sib_data_var); sib_type = private_data_get_curr_sib_type(actx); col_set_fence(actx->pinfo->cinfo, COL_INFO); col_append_str(actx->pinfo->cinfo, COL_INFO," ("); switch(sib_type){ case 0: /* mIB */ dissect_rrc_MasterInformationBlock_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 1: dissect_rrc_SysInfoType1_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 2: dissect_rrc_SysInfoType2_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 3: dissect_rrc_SysInfoType3_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 4: dissect_rrc_SysInfoType4_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 5: dissect_rrc_SysInfoType5_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 6: dissect_rrc_SysInfoType6_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 7: dissect_rrc_SysInfoType7_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 11: dissect_rrc_SysInfoType11_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 12: dissect_rrc_SysInfoType12_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 13: dissect_rrc_SysInfoType13_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 14: /* SIB-Type: systemInformationBlockType13-1 */ dissect_rrc_SysInfoType13_1_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 15: /* SIB-Type: systemInformationBlockType13-2 */ dissect_rrc_SysInfoType13_2_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 16: /* SIB-Type: systemInformationBlockType13-3 */ dissect_rrc_SysInfoType13_3_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 17: /* SIB-Type: systemInformationBlockType13-4 */ dissect_rrc_SysInfoType13_4_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 18: /* SIB-Type: systemInformationBlockType14 */ dissect_rrc_SysInfoType14_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 19: /* SIB-Type: systemInformationBlockType15 */ dissect_rrc_SysInfoType15_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 20: /* SIB-Type: systemInformationBlockType15-1 */ dissect_rrc_SysInfoType15_1_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 21: /* SIB-Type: systemInformationBlockType15-2 */ dissect_rrc_SysInfoType15_2_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 22: /* SIB-Type: systemInformationBlockType15-3 */ dissect_rrc_SysInfoType15_3_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 23: /* SIB-Type: systemInformationBlockType16 */ dissect_rrc_SysInfoType16_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 24: /* SIB-Type: systemInformationBlockType17 */ dissect_rrc_SysInfoType17_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 25: /* SIB-Type: systemInformationBlockType15-4 */ dissect_rrc_SysInfoType15_4_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 26: /* SIB-Type: systemInformationBlockType18 */ dissect_rrc_SysInfoType18_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 27: /* SIB-Type: schedulingBlock1 */ dissect_rrc_SysInfoTypeSB1_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; case 28: /* SIB-Type: schedulingBlock2 */ dissect_rrc_SysInfoTypeSB2_PDU(sib_data_tvb, actx->pinfo, subtree, NULL); break; default: break; } col_append_str(actx->pinfo->cinfo, COL_INFO,")"); col_set_fence(actx->pinfo->cinfo, COL_INFO); #.FN_BODY RSR-VCC-Info/ims-Information VAL_PTR = &imsInformation_tvb tvbuff_t *imsInformation_tvb=NULL; %(DEFAULT_BODY)s if(imsInformation_tvb){ /* Dissect ims-Information Decoding specified in TS 124 237 V11.4.0 Annex D.5.3.3 ATGW transfer details */ proto_tree *subtree; gint curr_offset = 0; guint32 atgw_trans_det_cont; subtree = proto_item_add_subtree(actx->created_item, ett_rrc_ims_info); 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); curr_offset++; switch (atgw_trans_det_cont) { case 0: proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_udp_port, imsInformation_tvb, curr_offset, 2, ENC_BIG_ENDIAN); curr_offset+=2; proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_ipv4, imsInformation_tvb, curr_offset, 4, ENC_BIG_ENDIAN); break; case 1: proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_udp_port, imsInformation_tvb, curr_offset, 2, ENC_BIG_ENDIAN); curr_offset+=2; proto_tree_add_item(subtree, hf_rrc_ims_info_atgw_ipv6, imsInformation_tvb, curr_offset, 16, ENC_NA); break; default: break; } } #.TYPE_ATTR HNBName TYPE=FT_STRING DISPLAY=BASE_NONE #.FN_BODY HNBName VAL_PTR = &hnbname_tvb HF_INDEX = -1 tvbuff_t *hnbname_tvb = NULL; %(DEFAULT_BODY)s actx->created_item = proto_tree_add_item(tree, hf_index, hnbname_tvb, 0, -1, ENC_UTF_8|ENC_NA); #.FN_BODY CN-DomainIdentity VAL_PTR = &nas_sys_info guint32 nas_sys_info; %(DEFAULT_BODY)s col_append_fstr(actx->pinfo->cinfo, COL_INFO, "(%%s)", val_to_str_const(nas_sys_info,rrc_CN_DomainIdentity_vals,"Unknown")); nas_sys_info++; /* CS = 0, PS = 1 but the enum defines 0 as Unknown and CS = 1, PS = 2 */ private_data_set_cn_domain(actx, (enum nas_sys_info_gsm_map) nas_sys_info); #.FN_BODY CN-InformationInfo/cn-CommonGSM-MAP-NAS-SysInfo private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON); %(DEFAULT_BODY)s #.FN_BODY CN-InformationInfo-r6/cn-CommonGSM-MAP-NAS-SysInfo private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON); %(DEFAULT_BODY)s #.FN_BODY CN-InformationInfoFull/cn-CommonGSM-MAP-NAS-SysInfo private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON); %(DEFAULT_BODY)s #.FN_BODY SysInfoType1/cn-CommonGSM-MAP-NAS-SysInfo private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CN_COMMON); %(DEFAULT_BODY)s #.FN_BODY NAS-SystemInformationGSM-MAP VAL_PTR = &nas_sys_info_gsm_map_tvb tvbuff_t *nas_sys_info_gsm_map_tvb = NULL; guint32 length; enum nas_sys_info_gsm_map cn_domain; proto_tree *subtree; %(DEFAULT_BODY)s length = tvb_reported_length(nas_sys_info_gsm_map_tvb); if (length) { cn_domain = private_data_get_cn_domain(actx); switch (cn_domain) { case RRC_NAS_SYS_INFO_CN_COMMON: subtree = proto_tree_add_subtree(tree, nas_sys_info_gsm_map_tvb, 0, length, ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo, NULL, "CN Common GSM-MAP NAS system information"); de_cn_common_gsm_map_nas_sys_info(nas_sys_info_gsm_map_tvb, subtree, actx->pinfo, 0, length, NULL, 0); break; case RRC_NAS_SYS_INFO_CS: subtree = proto_tree_add_subtree(tree, nas_sys_info_gsm_map_tvb, 0, length, ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo, NULL, "CS domain specific system information"); de_cs_domain_spec_sys_info(nas_sys_info_gsm_map_tvb, subtree, actx->pinfo, 0, length, NULL, 0); break; case RRC_NAS_SYS_INFO_PS: subtree = proto_tree_add_subtree(tree, nas_sys_info_gsm_map_tvb, 0, length, ett_rrc_cn_CommonGSM_MAP_NAS_SysInfo, NULL, "PS domain specific system information"); de_ps_domain_spec_sys_info(nas_sys_info_gsm_map_tvb, subtree, actx->pinfo, 0, length, NULL, 0); break; default: break; } private_data_set_cn_domain(actx, RRC_NAS_SYS_UNKNOWN); } #.FN_BODY SRNC-Identity VAL_PTR = &s_rnc_id_tvb tvbuff_t * s_rnc_id_tvb = NULL; %(DEFAULT_BODY)s if (s_rnc_id_tvb) { private_data_set_s_rnc_id(actx, tvb_get_ntohs(s_rnc_id_tvb, 0) >> 4); } #.FN_BODY S-RNTI VAL_PTR = &s_rnti_tvb tvbuff_t * s_rnti_tvb = NULL; %(DEFAULT_BODY)s if (s_rnti_tvb) { private_data_set_s_rnti(actx, tvb_get_ntoh24(s_rnti_tvb, 0) >> 4); } #.FN_BODY U-RNTI private_data_set_s_rnc_id(actx, 0); private_data_set_s_rnti(actx, 0); guint32 s_rnc_id; guint32 s_rnti; guint32 u_rnti_value; guint32 original_offset; proto_item *ti; guint32 item_len; proto_tree *sub_tree; gboolean is_new_urnti; int generated_field_hf; original_offset = offset; %(DEFAULT_BODY)s /* Reconstructing the U-RNTI from the parsed components */ s_rnc_id = private_data_get_s_rnc_id(actx); s_rnti = private_data_get_s_rnti(actx); u_rnti_value = (s_rnc_id << 20) | s_rnti; /* Distinguishing between new allocated U-RNTIs and previously used ones */ /* hf_rrc_u_RNTI is for current U-RNTI, any other hf is for new U-RNTI */ is_new_urnti = hf_index != hf_rrc_u_RNTI; if (is_new_urnti) { private_data_set_new_u_rnti(actx, u_rnti_value); generated_field_hf = hf_urnti_new; } else { private_data_set_current_u_rnti(actx, u_rnti_value); generated_field_hf = hf_urnti_current; } /* Adding a "Current U-RNTI" or "New U-RNTI" as generated field */ sub_tree = proto_item_get_subtree(actx->created_item); item_len = proto_item_get_len(actx->created_item); ti = proto_tree_add_uint(sub_tree, generated_field_hf, tvb, original_offset/8, item_len, u_rnti_value); proto_item_set_generated(ti); ti = proto_tree_add_uint(sub_tree, hf_urnti, tvb, original_offset/8, item_len, u_rnti_value); proto_item_set_hidden(ti); private_data_set_s_rnc_id(actx, 0); private_data_set_s_rnti(actx, 0); #.FN_BODY C-RNTI VAL_PTR = &c_rnti_tvb fp_info *fpinf = NULL; umts_mac_info *macinf = NULL; rlc_info *rlcinf = NULL; conversation_t *p_conv; umts_fp_conversation_info_t *umts_fp_conversation_info = NULL; fp_fach_channel_info_t *fp_fach_channel_info = NULL; tvbuff_t * c_rnti_tvb = NULL; guint16 c_rnti = 0; guint32 u_rnti = 0; fp_crnti_allocation_info_t *fp_crnti_allocation_info = NULL; %(DEFAULT_BODY)s if (!c_rnti_tvb) return offset; if(tvb_reported_length(c_rnti_tvb)>=2){ c_rnti = tvb_get_ntohs(c_rnti_tvb,0); } if(PINFO_FD_VISITED(actx->pinfo)) /* Frame was already checked*/ return offset; /* 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) */ fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); macinf = (umts_mac_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_mac, 0); rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0); if (fpinf && macinf && rlcinf) { switch(macinf->content[fpinf->cur_tb]){ case MAC_CONTENT_DCCH: u_rnti = rlcinf->ueid[fpinf->cur_tb]; break; case MAC_CONTENT_CCCH: default: u_rnti = private_data_get_current_u_rnti(actx); break; } } else { /* Either FP, MAC or RLC info is missing - looking for ASN.1 field as last resort*/ u_rnti = private_data_get_current_u_rnti(actx); } if(u_rnti == 0 || c_rnti == 0) /* U-RNTI missing or failed to parse C-RNTI */ return offset; /* Both U-RNTI and C-RNTI present - storing the match*/ fp_crnti_allocation_info = wmem_new(wmem_file_scope(), fp_crnti_allocation_info_t); fp_crnti_allocation_info->urnti = u_rnti; fp_crnti_allocation_info->alloc_frame_number = actx->pinfo->num; fp_crnti_allocation_info->global_retrieval_count = 0; /* Finding FP conversation info */ p_conv = (conversation_t *)find_conversation(actx->pinfo->num, &actx->pinfo->net_dst, &actx->pinfo->net_src, conversation_pt_to_conversation_type(actx->pinfo->ptype), actx->pinfo->destport, actx->pinfo->srcport, NO_ADDR_B); /* If the current FP channel is FACH, Adding the C-RNTI / U-RNTI match to the FACH's RNTIs map*/ if (p_conv != NULL) { umts_fp_conversation_info = (umts_fp_conversation_info_t *)conversation_get_proto_data(p_conv, proto_fp); if (umts_fp_conversation_info && umts_fp_conversation_info->channel == CHANNEL_FACH_FDD) { fp_fach_channel_info = (fp_fach_channel_info_t *)umts_fp_conversation_info->channel_specific_info; if(fp_fach_channel_info) { wmem_tree_insert32(fp_fach_channel_info->crnti_to_urnti_map, c_rnti, (void *)fp_crnti_allocation_info); } } } /* Also adding the C-RNTI / U-RNTI match to the global RNTIs map for the RACH channel */ wmem_tree_insert32(rrc_global_urnti_crnti_map, c_rnti, (void *)fp_crnti_allocation_info); #.FN_BODY UL-ScramblingCode VAL_PTR = &scrambling_code guint32 scrambling_code; %(DEFAULT_BODY)s private_data_set_scrambling_code(actx,scrambling_code); #.FN_BODY RRC-StateIndicator VAL_PTR = &state_dec gint32 state_dec = -1; %(DEFAULT_BODY)s if(state_dec >= 0 && state_dec <= 3) { state_dec++; /* Encoded values are 0-based, Values in the enum are 1-based*/ private_data_set_rrc_state_indicator(actx,(enum rrc_ue_state)state_dec); } #.FN_BODY CellIdentity VAL_PTR = &cell_id_tvb tvbuff_t * cell_id_tvb = NULL; proto_item *temp_ti; proto_tree *cell_identity_tree; %(DEFAULT_BODY)s if(cell_id_tvb != NULL) { cell_identity_tree = proto_item_add_subtree(actx->created_item, ett_rrc_cellIdentity); temp_ti = proto_tree_add_bits_item(cell_identity_tree, hf_rrc_cellIdentity_rnc_id,cell_id_tvb, 0, 12, ENC_BIG_ENDIAN); proto_item_set_generated(temp_ti); temp_ti = proto_tree_add_bits_item(cell_identity_tree, hf_rrc_cellIdentity_c_id, cell_id_tvb, 12, 16, ENC_BIG_ENDIAN); proto_item_set_generated(temp_ti); } #.FN_BODY DL-TransportChannelType-r5 VAL_PTR = &type /*Here we try to figure out which HS-DSCH channels are multiplexed*/ guint *flowd_p; guint *cur_val=NULL; struct rrc_info *rrcinf; %(DEFAULT_BODY)s /*TODO: This should probably be done better*/ if(type == 4){ /*If this is type HS-DSCH*/ num_chans_per_flow[flowd]++; if(num_chans_per_flow[flowd] > 1 ){ rrcinf = (rrc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_rrc, 0); if((rrcinf == NULL) || (rrcinf->hrnti[actx->pinfo->fd->subnum] == 0)){ expert_add_info(actx->pinfo, actx->created_item, &ei_rrc_no_hrnti); } else{ /*If it doesn't exists, insert it*/ if( (cur_val=(gint *)g_tree_lookup(hsdsch_muxed_flows, GUINT_TO_POINTER((guint)rrcinf->hrnti[actx->pinfo->fd->subnum]))) == NULL ){ flowd_p = g_new0(guint, 1); *flowd_p = (1U<hrnti[actx->pinfo->fd->subnum]), flowd_p); }else{ *cur_val = (1U< 1 ){ rrcinf = (rrc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_rrc, 0); if((rrcinf == NULL) || (rrcinf->hrnti[actx->pinfo->fd->subnum] == 0)){ expert_add_info(actx->pinfo, actx->created_item, &ei_rrc_no_hrnti); } else{ /*If it doesn't exists, insert it*/ if( (cur_val=(gint *)g_tree_lookup(hsdsch_muxed_flows, GUINT_TO_POINTER((guint)rrcinf->hrnti[actx->pinfo->fd->subnum]))) == NULL ){ flowd_p = g_new0(guint, 1); *flowd_p = (1U<hrnti[actx->pinfo->fd->subnum]), flowd_p); }else{ *cur_val = (1U<pinfo, proto_rrc, 0); if (!rrcinf) { rrcinf = wmem_new0(wmem_file_scope(), struct rrc_info); p_add_proto_data(wmem_file_scope(), actx->pinfo, proto_rrc, 0, rrcinf); } rrcinf->hrnti[actx->pinfo->fd->subnum] = tvb_get_ntohs(hrnti_tvb, 0); #.FN_BODY START-Value VAL_PTR = &start_val tvbuff_t * start_val; fp_info *fpinf; rlc_info *rlcinf; rrc_ciphering_info * ciphering_info; guint32 * start; enum nas_sys_info_gsm_map cn_domain; %(DEFAULT_BODY)s /*We base this map on User Identity from RLC*/ fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0); /*If FP info or RLC info is missing , skip all this*/ if(fpinf == NULL || rlcinf == NULL){ return offset; } /*Retrieve the start value for the two ciphering domains*/ cn_domain = private_data_get_cn_domain(actx); switch(cn_domain){ case RRC_NAS_SYS_INFO_CS: /* ws_warning("Not implemented"); */ break; case RRC_NAS_SYS_INFO_PS: /*Find the entry for the UE ID(taken from RLC)*/ ciphering_info = get_or_create_cipher_info(fpinf, rlcinf); private_data_set_ciphering_info(actx, ciphering_info); /*Retrieve and store the value*/ if(ciphering_info && ciphering_info->start_ps) { start = g_new(guint32,1); *start = tvb_get_bits32(start_val,0,20,ENC_BIG_ENDIAN); /*Insert the value based on current frame num since this might vary over time*/ g_tree_insert(ciphering_info->start_ps, GUINT_TO_POINTER(actx->pinfo->num), start); } break; default: break; } private_data_set_cn_domain(actx, RRC_NAS_SYS_UNKNOWN); #.FN_BODY RB-ActivationTimeInfo fp_info *fpinf; rlc_info *rlcinf; rrc_ciphering_info *ciphering_info; guint32 rbid; guint32 rlc_ciphering_sqn; guint32 direction; fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); rlcinf = (rlc_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_umts_rlc, 0); %(DEFAULT_BODY)s /*If FP info or RLC info is missing , skip all this*/ if(fpinf == NULL || rlcinf == NULL){ return offset; } ciphering_info = private_data_get_ciphering_info(actx); if( ciphering_info == NULL ){ return offset; } rbid = private_data_get_rbid(actx); rlc_ciphering_sqn = private_data_get_rlc_ciphering_sqn(actx); direction = fpinf->is_uplink ? P2P_DIR_UL : P2P_DIR_DL; /*Set the ciphering activation frame information*/ ciphering_info->seq_no[rbid][direction] = rlc_ciphering_sqn; #.FN_BODY RB-Identity VAL_PTR = &rbid guint32 rbid; %(DEFAULT_BODY)s private_data_set_rbid(actx, rbid); #.FN_BODY RLC-SequenceNumber VAL_PTR = &rlc_ciphering_sqn guint32 rlc_ciphering_sqn; %(DEFAULT_BODY)s private_data_set_rlc_ciphering_sqn(actx, rlc_ciphering_sqn); #.FN_BODY CipheringAlgorithm VAL_PTR = &ciphering_algo rrc_ciphering_info *ciphering_info; gint32 ciphering_algo; %(DEFAULT_BODY)s ciphering_info = private_data_get_ciphering_info(actx); if (ciphering_info == NULL) { return offset; } ciphering_info->ciphering_algorithm = ciphering_algo; #.FN_BODY CipheringAlgorithm-r7 VAL_PTR = &ciphering_algo rrc_ciphering_info *ciphering_info; gint32 ciphering_algo; %(DEFAULT_BODY)s ciphering_info = private_data_get_ciphering_info(actx); if (ciphering_info == NULL) { return offset; } ciphering_info->ciphering_algorithm = ciphering_algo; #.FN_BODY IntegrityProtectionAlgorithm VAL_PTR = &integrity_algo rrc_ciphering_info *ciphering_info; gint32 integrity_algo; %(DEFAULT_BODY)s ciphering_info = private_data_get_ciphering_info(actx); if (ciphering_info == NULL) { return offset; } ciphering_info->integrity_algorithm = integrity_algo; #.FN_BODY IntegrityProtectionAlgorithm-r7 VAL_PTR = &integrity_algo rrc_ciphering_info *ciphering_info; gint32 integrity_algo; %(DEFAULT_BODY)s ciphering_info = private_data_get_ciphering_info(actx); if (ciphering_info == NULL) { return offset; } ciphering_info->integrity_algorithm = integrity_algo; #.FN_BODY DL-DCCH-MessageType VAL_PTR = &msg_type %(DEFAULT_BODY)s #.FN_BODY DL-DCCH-Message %(DEFAULT_BODY)s #.FN_BODY HandoverToUTRANCommand %(DEFAULT_BODY)s #.FN_BODY UE-SecurityInformation private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_CS); %(DEFAULT_BODY)s #.FN_BODY UE-SecurityInformation2 private_data_set_cn_domain(actx, RRC_NAS_SYS_INFO_PS); %(DEFAULT_BODY)s #.FN_BODY ReleaseCause VAL_PTR=&value guint32 value; %(DEFAULT_BODY)s col_append_fstr(actx->pinfo->cinfo, COL_INFO, " [cause=%%s]", val_to_str(value, rrc_ReleaseCause_vals, "Unknown")); #.FN_BODY MasterInformationBlock col_append_str(actx->pinfo->cinfo, COL_INFO, "MasterInformationBlock"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType1 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 1"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType2 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 2"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType3 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 3"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType4 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 4"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType5 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 5"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType5bis col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 5bis"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType6 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 6"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType7 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 7"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType11 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 11"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType11bis col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 11bis"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType11ter col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 11ter"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType12 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 12"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType13 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 13"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType13-1 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 13.1"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType13-2 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 13.2"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType13-3 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 13.3"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType13-4 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 13.4"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType14 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 14"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15bis col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15bis"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-1 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.1"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-1bis col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.1bis"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-1ter col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.1ter"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-2 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.2"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-2bis col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.2bis"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-2ter col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.2ter"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-3 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.3"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-3bis col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.3bis"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-4 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.4"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-5 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.5"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-6 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.6"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-7 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.7"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType15-8 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 15.8"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType16 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 16"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType17 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 17"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType18 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 18"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType19 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 19"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType20 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 20"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType21 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 21"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType22 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 22"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType23 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 23"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType24 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 24"); %(DEFAULT_BODY)s #.FN_BODY SysInfoType25 col_append_str(actx->pinfo->cinfo, COL_INFO, "SysInfoType 25"); %(DEFAULT_BODY)s #.FN_BODY SysInfoTypeSB1 col_append_str(actx->pinfo->cinfo, COL_INFO, "Scheduling Block 1"); %(DEFAULT_BODY)s #.FN_BODY SysInfoTypeSB2 col_append_str(actx->pinfo->cinfo, COL_INFO, "Scheduling Block 2"); %(DEFAULT_BODY)s #.FN_BODY SysInfoTypeSB3 col_append_str(actx->pinfo->cinfo, COL_INFO, "Scheduling Block 3"); %(DEFAULT_BODY)s #.END