# rrc.cnf # rrc conformation file # Copyright 2006 Anders Broman #.OPT PER UNALIGNED #.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 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 SysInfoType7_PDU SysInfoType12_PDU MasterInformationBlock_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 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) call_dissector(gsm_a_dtap_handle,nas_message_tvb,%(ACTX)s->pinfo, 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 col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm-CCCH"); %(DEFAULT_BODY)s #.FN_BODY CellUpdateConfirm col_append_str(actx->pinfo->cinfo, COL_INFO, "CellUpdateConfirm"); %(DEFAULT_BODY)s #.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 col_append_str(actx->pinfo->cinfo, COL_INFO, "PhysicalChannelReconfiguration"); %(DEFAULT_BODY)s #.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 col_append_str(actx->pinfo->cinfo, COL_INFO, "RadioBearerReconfiguration"); %(DEFAULT_BODY)s #.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 scrambling_code, new_u_rnti, crnc_context; col_append_str(actx->pinfo->cinfo, COL_INFO, "RRCConnectionSetup"); %(DEFAULT_BODY)s /* Mapping the U-RNTI assigned to the user to its Uplink Scrambling Code*/ scrambling_code = private_data_get_scrambling_code(actx); new_u_rnti = private_data_get_new_u_rnti(actx); if (new_u_rnti != 0 && scrambling_code != 0 && !actx->pinfo->fd->flags.visited) { /* Looking for the C-RNC Context mapped to this Scrambling Code */ crnc_context = GPOINTER_TO_UINT(wmem_tree_lookup32(nbap_scrambling_code_crncc_map,scrambling_code)); if (crnc_context != 0) { /* Mapping the U-RNTI found in this message to the C-RNC context*/ wmem_tree_insert32(nbap_crncc_urnti_map,crnc_context,GUINT_TO_POINTER(new_u_rnti)); } } #.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 col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeCommand"); %(DEFAULT_BODY)s #.FN_BODY SecurityModeComplete rrc_ciphering_info * c_inf ; fp_info *fpinf ; col_append_str(actx->pinfo->cinfo, COL_INFO, "SecurityModeComplete"); %(DEFAULT_BODY)s fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); if(fpinf && ((c_inf = (rrc_ciphering_info *)g_tree_lookup(rrc_ciph_inf, GINT_TO_POINTER(fpinf->com_context_id))) != NULL) ){ c_inf->setup_frame = 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 col_append_str(actx->pinfo->cinfo, COL_INFO, "TransportChannelReconfiguration"); %(DEFAULT_BODY)s #.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) 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) { 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); curr_bit_offset++; } #.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=STR_UNICODE #.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; %(DEFAULT_BODY)s gboolean is_new_urnti = hf_index != hf_rrc_u_RNTI; /* hf_rrc_u_RNTI is for current U-RNTI, any other hf is for new U-RNTI */ s_rnc_id = private_data_get_s_rnc_id(actx); s_rnti = private_data_get_s_rnti(actx); if(s_rnc_id != 0 && s_rnti != 0) { u_rnti_value = (s_rnc_id << 20) | s_rnti; /* Distinguishing between new allocated U-RNTIs and previously used ones */ if (is_new_urnti) { private_data_set_new_u_rnti(actx, u_rnti_value); } else { private_data_set_current_u_rnti(actx, u_rnti_value); } /* Adding U-RNTI value to it's tree item */ proto_item_append_text(actx->created_item,": %%08x", u_rnti_value); } 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(actx->pinfo->fd->flags.visited) /* 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_DCCH: u_rnti = rlcinf->ueid[fpinf->cur_tb]; break; case MAC_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_new0(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; /* Finding FP conversation info */ p_conv = (conversation_t *)find_conversation(actx->pinfo->num, &actx->pinfo->net_dst, &actx->pinfo->net_src, 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_rach_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 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 = (guint*)g_malloc0(sizeof(gint)); *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 = (guint*)g_malloc0(sizeof(gint)); *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; rrc_ciphering_info * c_inf; int i; guint32 * start; enum nas_sys_info_gsm_map cn_domain; %(DEFAULT_BODY)s /*We base this map on communication context from fp*/ fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); /*If no info found, skip all this*/ if(fpinf == 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: /* g_warning("Not implemented"); */ break; case RRC_NAS_SYS_INFO_PS: /*Find the entry for the communication context (taken from FP)*/ if( (c_inf =(rrc_ciphering_info *)g_tree_lookup(rrc_ciph_inf, GINT_TO_POINTER(fpinf->com_context_id))) == NULL ){ c_inf = g_new0(rrc_ciphering_info,1); /*Initiate tree with START_PS values.*/ if(!c_inf->start_ps) c_inf->start_ps = g_tree_new_full(rrc_key_cmp, NULL,rrc_free_key,rrc_free_value); /*Clear and initialize seq_no matrix*/ for(i = 0; i< 31; i++){ c_inf->seq_no[i][0] = -1; c_inf->seq_no[i][1] = -1; } g_tree_insert(rrc_ciph_inf, GINT_TO_POINTER(fpinf->com_context_id), c_inf); } /*Retrieve and store the value*/ start = g_new(guint32,1); *start = tvb_get_bits32(start_val,0,20,ENC_BIG_ENDIAN); if(c_inf && c_inf->start_ps) /*Insert the value based on current frame num since this might vary over time*/ g_tree_insert(c_inf->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; rrc_ciphering_info * c_inf; fpinf = (fp_info *)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_fp, 0); %(DEFAULT_BODY)s /*If no info found, skip all this*/ if(fpinf == NULL){ return offset; } /*This should not happen*/ if( (c_inf = (rrc_ciphering_info *)g_tree_lookup(rrc_ciph_inf, GINT_TO_POINTER(fpinf->com_context_id))) == NULL ){ return offset; } /*Set the ciphering activation frame information*/ c_inf->seq_no[rbid][fpinf->is_uplink] = activation_frame; #.FN_BODY RB-Identity VAL_PTR = &rbid %(DEFAULT_BODY)s #.FN_BODY RLC-SequenceNumber VAL_PTR = &activation_frame %(DEFAULT_BODY)s #.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")); #.END