mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-03 13:33:26 +00:00
update it
This commit is contained in:
@@ -1,6 +1,34 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = @FREEDIAMETER_DIR@ ipfw core s1ap nas fd gtp
|
||||
SUBDIRS = asn1c
|
||||
|
||||
pkglib_LTLIBRARIES = libs1ap.la
|
||||
|
||||
libs1ap_la_SOURCES = \
|
||||
s1ap_decoder.c s1ap_encoder.c s1ap_free.c \
|
||||
$(NULL)
|
||||
|
||||
libs1ap_la_DEPENDENCIES = \
|
||||
$(top_srcdir)/lib/core/src/libcore.la \
|
||||
$(top_srcdir)/lib/s1ap3/asn1c/libs1apasn1c.la \
|
||||
$(NULL)
|
||||
|
||||
libs1ap_la_LIBADD = \
|
||||
$(top_srcdir)/lib/core/src/libcore.la \
|
||||
$(top_srcdir)/lib/s1ap3/asn1c/libs1apasn1c.la \
|
||||
$(NULL)
|
||||
|
||||
AM_LDFLAGS = \
|
||||
-version-info @LIBVERSION@
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/lib/core/include \
|
||||
-I$(top_srcdir)/lib/s1ap3/asn1c \
|
||||
$(NULL)
|
||||
|
||||
AM_CFLAGS = \
|
||||
-Wall -Werror \
|
||||
$(NULL)
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
MOSTLYCLEANFILES = *.stackdump
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1136,7 +1136,7 @@ SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
|
||||
|
||||
if(ct && ct->effective_bits >= 0) {
|
||||
/* X.691, #19.5: No length determinant */
|
||||
nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound);
|
||||
nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1);
|
||||
ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s",
|
||||
(long)nelems, ct->lower_bound, td->name);
|
||||
if(nelems < 0) ASN__DECODE_STARVED;
|
||||
|
||||
527
lib/s1ap3/s1ap_asn1c.h
Normal file
527
lib/s1ap3/s1ap_asn1c.h
Normal file
@@ -0,0 +1,527 @@
|
||||
#ifndef __S1AP_ASN1C_H__
|
||||
#define __S1AP_ASN1C_H__
|
||||
|
||||
#if HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "S1AP_Additional-GUTI.h"
|
||||
#include "S1AP_AdditionalCSFallbackIndicator.h"
|
||||
#include "S1AP_AllocationAndRetentionPriority.h"
|
||||
#include "S1AP_AreaScopeOfMDT.h"
|
||||
#include "S1AP_AssistanceDataForCECapableUEs.h"
|
||||
#include "S1AP_AssistanceDataForPaging.h"
|
||||
#include "S1AP_AssistanceDataForRecommendedCells.h"
|
||||
#include "S1AP_BPLMNs.h"
|
||||
#include "S1AP_BearerType.h"
|
||||
#include "S1AP_Bearers-SubjectToStatusTransfer-Item.h"
|
||||
#include "S1AP_Bearers-SubjectToStatusTransferList.h"
|
||||
#include "S1AP_BitRate.h"
|
||||
#include "S1AP_BroadcastCancelledAreaList.h"
|
||||
#include "S1AP_BroadcastCompletedAreaList.h"
|
||||
#include "S1AP_CE-mode-B-SupportIndicator.h"
|
||||
#include "S1AP_CELevel.h"
|
||||
#include "S1AP_CGI.h"
|
||||
#include "S1AP_CI.h"
|
||||
#include "S1AP_CNDomain.h"
|
||||
#include "S1AP_COUNTValueExtended.h"
|
||||
#include "S1AP_COUNTvalue.h"
|
||||
#include "S1AP_COUNTvaluePDCP-SNlength18.h"
|
||||
#include "S1AP_CSFallbackIndicator.h"
|
||||
#include "S1AP_CSG-Id.h"
|
||||
#include "S1AP_CSG-IdList-Item.h"
|
||||
#include "S1AP_CSG-IdList.h"
|
||||
#include "S1AP_CSGMembershipInfo.h"
|
||||
#include "S1AP_CSGMembershipStatus.h"
|
||||
#include "S1AP_CancelledCellinEAI-Item.h"
|
||||
#include "S1AP_CancelledCellinEAI.h"
|
||||
#include "S1AP_CancelledCellinTAI-Item.h"
|
||||
#include "S1AP_CancelledCellinTAI.h"
|
||||
#include "S1AP_Cause.h"
|
||||
#include "S1AP_CauseMisc.h"
|
||||
#include "S1AP_CauseNas.h"
|
||||
#include "S1AP_CauseProtocol.h"
|
||||
#include "S1AP_CauseRadioNetwork.h"
|
||||
#include "S1AP_CauseTransport.h"
|
||||
#include "S1AP_Cdma2000HORequiredIndication.h"
|
||||
#include "S1AP_Cdma2000HOStatus.h"
|
||||
#include "S1AP_Cdma2000OneXMEID.h"
|
||||
#include "S1AP_Cdma2000OneXMSI.h"
|
||||
#include "S1AP_Cdma2000OneXPilot.h"
|
||||
#include "S1AP_Cdma2000OneXRAND.h"
|
||||
#include "S1AP_Cdma2000OneXSRVCCInfo.h"
|
||||
#include "S1AP_Cdma2000PDU.h"
|
||||
#include "S1AP_Cdma2000RATType.h"
|
||||
#include "S1AP_Cdma2000SectorID.h"
|
||||
#include "S1AP_Cell-Size.h"
|
||||
#include "S1AP_CellAccessMode.h"
|
||||
#include "S1AP_CellBasedMDT.h"
|
||||
#include "S1AP_CellID-Broadcast-Item.h"
|
||||
#include "S1AP_CellID-Broadcast.h"
|
||||
#include "S1AP_CellID-Cancelled-Item.h"
|
||||
#include "S1AP_CellID-Cancelled.h"
|
||||
#include "S1AP_CellIdListforMDT.h"
|
||||
#include "S1AP_CellIdentifierAndCELevelForCECapableUEs.h"
|
||||
#include "S1AP_CellIdentity.h"
|
||||
#include "S1AP_CellTrafficTrace.h"
|
||||
#include "S1AP_CellType.h"
|
||||
#include "S1AP_CompletedCellinEAI-Item.h"
|
||||
#include "S1AP_CompletedCellinEAI.h"
|
||||
#include "S1AP_CompletedCellinTAI-Item.h"
|
||||
#include "S1AP_CompletedCellinTAI.h"
|
||||
#include "S1AP_ConcurrentWarningMessageIndicator.h"
|
||||
#include "S1AP_ConnectionEstablishmentIndication.h"
|
||||
#include "S1AP_Correlation-ID.h"
|
||||
#include "S1AP_Coverage-Level.h"
|
||||
#include "S1AP_Criticality.h"
|
||||
#include "S1AP_CriticalityDiagnostics-IE-Item.h"
|
||||
#include "S1AP_CriticalityDiagnostics-IE-List.h"
|
||||
#include "S1AP_CriticalityDiagnostics.h"
|
||||
#include "S1AP_DCN-ID.h"
|
||||
#include "S1AP_DL-CP-SecurityInformation.h"
|
||||
#include "S1AP_DL-Forwarding.h"
|
||||
#include "S1AP_DL-NAS-MAC.h"
|
||||
#include "S1AP_DLNASPDUDeliveryAckRequest.h"
|
||||
#include "S1AP_Data-Forwarding-Not-Possible.h"
|
||||
#include "S1AP_DataCodingScheme.h"
|
||||
#include "S1AP_DeactivateTrace.h"
|
||||
#include "S1AP_Direct-Forwarding-Path-Availability.h"
|
||||
#include "S1AP_DownlinkNASTransport.h"
|
||||
#include "S1AP_DownlinkNonUEAssociatedLPPaTransport.h"
|
||||
#include "S1AP_DownlinkS1cdma2000tunnelling.h"
|
||||
#include "S1AP_DownlinkUEAssociatedLPPaTransport.h"
|
||||
#include "S1AP_E-RAB-ID.h"
|
||||
#include "S1AP_E-RAB-IE-ContainerList.h"
|
||||
#include "S1AP_E-RAB-IE-ContainerPairList.h"
|
||||
#include "S1AP_E-RABAdmittedItem.h"
|
||||
#include "S1AP_E-RABAdmittedList.h"
|
||||
#include "S1AP_E-RABDataForwardingItem.h"
|
||||
#include "S1AP_E-RABFailedToResumeItemResumeReq.h"
|
||||
#include "S1AP_E-RABFailedToResumeItemResumeRes.h"
|
||||
#include "S1AP_E-RABFailedToResumeListResumeReq.h"
|
||||
#include "S1AP_E-RABFailedToResumeListResumeRes.h"
|
||||
#include "S1AP_E-RABFailedToSetupItemHOReqAck.h"
|
||||
#include "S1AP_E-RABFailedtoSetupListHOReqAck.h"
|
||||
#include "S1AP_E-RABInformationList.h"
|
||||
#include "S1AP_E-RABInformationListItem.h"
|
||||
#include "S1AP_E-RABItem.h"
|
||||
#include "S1AP_E-RABLevelQoSParameters.h"
|
||||
#include "S1AP_E-RABList.h"
|
||||
#include "S1AP_E-RABModificationConfirm.h"
|
||||
#include "S1AP_E-RABModificationIndication.h"
|
||||
#include "S1AP_E-RABModifyItemBearerModConf.h"
|
||||
#include "S1AP_E-RABModifyItemBearerModRes.h"
|
||||
#include "S1AP_E-RABModifyListBearerModConf.h"
|
||||
#include "S1AP_E-RABModifyListBearerModRes.h"
|
||||
#include "S1AP_E-RABModifyRequest.h"
|
||||
#include "S1AP_E-RABModifyResponse.h"
|
||||
#include "S1AP_E-RABNotToBeModifiedItemBearerModInd.h"
|
||||
#include "S1AP_E-RABNotToBeModifiedListBearerModInd.h"
|
||||
#include "S1AP_E-RABReleaseCommand.h"
|
||||
#include "S1AP_E-RABReleaseIndication.h"
|
||||
#include "S1AP_E-RABReleaseItemBearerRelComp.h"
|
||||
#include "S1AP_E-RABReleaseListBearerRelComp.h"
|
||||
#include "S1AP_E-RABReleaseResponse.h"
|
||||
#include "S1AP_E-RABSetupItemBearerSURes.h"
|
||||
#include "S1AP_E-RABSetupItemCtxtSURes.h"
|
||||
#include "S1AP_E-RABSetupListBearerSURes.h"
|
||||
#include "S1AP_E-RABSetupListCtxtSURes.h"
|
||||
#include "S1AP_E-RABSetupRequest.h"
|
||||
#include "S1AP_E-RABSetupResponse.h"
|
||||
#include "S1AP_E-RABSubjecttoDataForwardingList.h"
|
||||
#include "S1AP_E-RABToBeModifiedItemBearerModInd.h"
|
||||
#include "S1AP_E-RABToBeModifiedItemBearerModReq.h"
|
||||
#include "S1AP_E-RABToBeModifiedListBearerModInd.h"
|
||||
#include "S1AP_E-RABToBeModifiedListBearerModReq.h"
|
||||
#include "S1AP_E-RABToBeSetupItemBearerSUReq.h"
|
||||
#include "S1AP_E-RABToBeSetupItemCtxtSUReq.h"
|
||||
#include "S1AP_E-RABToBeSetupItemHOReq.h"
|
||||
#include "S1AP_E-RABToBeSetupListBearerSUReq.h"
|
||||
#include "S1AP_E-RABToBeSetupListCtxtSUReq.h"
|
||||
#include "S1AP_E-RABToBeSetupListHOReq.h"
|
||||
#include "S1AP_E-RABToBeSwitchedDLItem.h"
|
||||
#include "S1AP_E-RABToBeSwitchedDLList.h"
|
||||
#include "S1AP_E-RABToBeSwitchedULItem.h"
|
||||
#include "S1AP_E-RABToBeSwitchedULList.h"
|
||||
#include "S1AP_E-UTRAN-Trace-ID.h"
|
||||
#include "S1AP_EARFCN.h"
|
||||
#include "S1AP_ECGI-List.h"
|
||||
#include "S1AP_ECGIList.h"
|
||||
#include "S1AP_ECGIListForRestart.h"
|
||||
#include "S1AP_ENB-ID.h"
|
||||
#include "S1AP_ENB-StatusTransfer-TransparentContainer.h"
|
||||
#include "S1AP_ENB-UE-S1AP-ID.h"
|
||||
#include "S1AP_ENBCPRelocationIndication.h"
|
||||
#include "S1AP_ENBConfigurationTransfer.h"
|
||||
#include "S1AP_ENBConfigurationUpdate.h"
|
||||
#include "S1AP_ENBConfigurationUpdateAcknowledge.h"
|
||||
#include "S1AP_ENBConfigurationUpdateFailure.h"
|
||||
#include "S1AP_ENBDirectInformationTransfer.h"
|
||||
#include "S1AP_ENBIndirectX2TransportLayerAddresses.h"
|
||||
#include "S1AP_ENBStatusTransfer.h"
|
||||
#include "S1AP_ENBX2ExtTLA.h"
|
||||
#include "S1AP_ENBX2ExtTLAs.h"
|
||||
#include "S1AP_ENBX2GTPTLAs.h"
|
||||
#include "S1AP_ENBX2TLAs.h"
|
||||
#include "S1AP_ENBname.h"
|
||||
#include "S1AP_EPLMNs.h"
|
||||
#include "S1AP_EUTRAN-CGI.h"
|
||||
#include "S1AP_EUTRANRoundTripDelayEstimationInfo.h"
|
||||
#include "S1AP_EmergencyAreaID-Broadcast-Item.h"
|
||||
#include "S1AP_EmergencyAreaID-Broadcast.h"
|
||||
#include "S1AP_EmergencyAreaID-Cancelled-Item.h"
|
||||
#include "S1AP_EmergencyAreaID-Cancelled.h"
|
||||
#include "S1AP_EmergencyAreaID.h"
|
||||
#include "S1AP_EmergencyAreaIDList.h"
|
||||
#include "S1AP_EmergencyAreaIDListForRestart.h"
|
||||
#include "S1AP_EncryptionAlgorithms.h"
|
||||
#include "S1AP_EnhancedCoverageRestricted.h"
|
||||
#include "S1AP_ErrorIndication.h"
|
||||
#include "S1AP_EventType.h"
|
||||
#include "S1AP_ExpectedActivityPeriod.h"
|
||||
#include "S1AP_ExpectedHOInterval.h"
|
||||
#include "S1AP_ExpectedIdlePeriod.h"
|
||||
#include "S1AP_ExpectedUEActivityBehaviour.h"
|
||||
#include "S1AP_ExpectedUEBehaviour.h"
|
||||
#include "S1AP_Extended-UEIdentityIndexValue.h"
|
||||
#include "S1AP_ExtendedRNC-ID.h"
|
||||
#include "S1AP_ExtendedRepetitionPeriod.h"
|
||||
#include "S1AP_ForbiddenInterRATs.h"
|
||||
#include "S1AP_ForbiddenLACs.h"
|
||||
#include "S1AP_ForbiddenLAs-Item.h"
|
||||
#include "S1AP_ForbiddenLAs.h"
|
||||
#include "S1AP_ForbiddenTACs.h"
|
||||
#include "S1AP_ForbiddenTAs-Item.h"
|
||||
#include "S1AP_ForbiddenTAs.h"
|
||||
#include "S1AP_GBR-QosInformation.h"
|
||||
#include "S1AP_GERAN-Cell-ID.h"
|
||||
#include "S1AP_GTP-TEID.h"
|
||||
#include "S1AP_GUMMEI.h"
|
||||
#include "S1AP_GUMMEIList.h"
|
||||
#include "S1AP_GUMMEIType.h"
|
||||
#include "S1AP_GWContextReleaseIndication.h"
|
||||
#include "S1AP_Global-ENB-ID.h"
|
||||
#include "S1AP_HFN.h"
|
||||
#include "S1AP_HFNModified.h"
|
||||
#include "S1AP_HFNforPDCP-SNlength18.h"
|
||||
#include "S1AP_HandoverCancel.h"
|
||||
#include "S1AP_HandoverCancelAcknowledge.h"
|
||||
#include "S1AP_HandoverCommand.h"
|
||||
#include "S1AP_HandoverFailure.h"
|
||||
#include "S1AP_HandoverNotify.h"
|
||||
#include "S1AP_HandoverPreparationFailure.h"
|
||||
#include "S1AP_HandoverRequest.h"
|
||||
#include "S1AP_HandoverRequestAcknowledge.h"
|
||||
#include "S1AP_HandoverRequired.h"
|
||||
#include "S1AP_HandoverRestrictionList.h"
|
||||
#include "S1AP_HandoverType.h"
|
||||
#include "S1AP_IMSI.h"
|
||||
#include "S1AP_ImmediateMDT.h"
|
||||
#include "S1AP_InformationOnRecommendedCellsAndENBsForPaging.h"
|
||||
#include "S1AP_InitialContextSetupFailure.h"
|
||||
#include "S1AP_InitialContextSetupRequest.h"
|
||||
#include "S1AP_InitialContextSetupResponse.h"
|
||||
#include "S1AP_InitialUEMessage.h"
|
||||
#include "S1AP_InitiatingMessage.h"
|
||||
#include "S1AP_IntegrityProtectionAlgorithms.h"
|
||||
#include "S1AP_IntendedNumberOfPagingAttempts.h"
|
||||
#include "S1AP_Inter-SystemInformationTransferType.h"
|
||||
#include "S1AP_InterfacesToTrace.h"
|
||||
#include "S1AP_KillAllWarningMessages.h"
|
||||
#include "S1AP_KillRequest.h"
|
||||
#include "S1AP_KillResponse.h"
|
||||
#include "S1AP_L3-Information.h"
|
||||
#include "S1AP_LAC.h"
|
||||
#include "S1AP_LAI.h"
|
||||
#include "S1AP_LHN-ID.h"
|
||||
#include "S1AP_LPPa-PDU.h"
|
||||
#include "S1AP_LastVisitedCell-Item.h"
|
||||
#include "S1AP_LastVisitedEUTRANCellInformation.h"
|
||||
#include "S1AP_LastVisitedGERANCellInformation.h"
|
||||
#include "S1AP_LastVisitedUTRANCellInformation.h"
|
||||
#include "S1AP_Links-to-log.h"
|
||||
#include "S1AP_ListeningSubframePattern.h"
|
||||
#include "S1AP_LocationReport.h"
|
||||
#include "S1AP_LocationReportingControl.h"
|
||||
#include "S1AP_LocationReportingFailureIndication.h"
|
||||
#include "S1AP_LoggedMBSFNMDT.h"
|
||||
#include "S1AP_LoggedMDT.h"
|
||||
#include "S1AP_LoggingDuration.h"
|
||||
#include "S1AP_LoggingInterval.h"
|
||||
#include "S1AP_M-TMSI.h"
|
||||
#include "S1AP_M1PeriodicReporting.h"
|
||||
#include "S1AP_M1ReportingTrigger.h"
|
||||
#include "S1AP_M1ThresholdEventA2.h"
|
||||
#include "S1AP_M3Configuration.h"
|
||||
#include "S1AP_M3period.h"
|
||||
#include "S1AP_M4Configuration.h"
|
||||
#include "S1AP_M4period.h"
|
||||
#include "S1AP_M5Configuration.h"
|
||||
#include "S1AP_M5period.h"
|
||||
#include "S1AP_M6Configuration.h"
|
||||
#include "S1AP_M6delay-threshold.h"
|
||||
#include "S1AP_M6report-Interval.h"
|
||||
#include "S1AP_M7Configuration.h"
|
||||
#include "S1AP_M7period.h"
|
||||
#include "S1AP_MBSFN-ResultToLog.h"
|
||||
#include "S1AP_MBSFN-ResultToLogInfo.h"
|
||||
#include "S1AP_MDT-Activation.h"
|
||||
#include "S1AP_MDT-Configuration.h"
|
||||
#include "S1AP_MDT-Location-Info.h"
|
||||
#include "S1AP_MDTMode-Extension.h"
|
||||
#include "S1AP_MDTMode.h"
|
||||
#include "S1AP_MDTPLMNList.h"
|
||||
#include "S1AP_MME-Code.h"
|
||||
#include "S1AP_MME-Group-ID.h"
|
||||
#include "S1AP_MME-UE-S1AP-ID.h"
|
||||
#include "S1AP_MMECPRelocationIndication.h"
|
||||
#include "S1AP_MMEConfigurationTransfer.h"
|
||||
#include "S1AP_MMEConfigurationUpdate.h"
|
||||
#include "S1AP_MMEConfigurationUpdateAcknowledge.h"
|
||||
#include "S1AP_MMEConfigurationUpdateFailure.h"
|
||||
#include "S1AP_MMEDirectInformationTransfer.h"
|
||||
#include "S1AP_MMEPagingTarget.h"
|
||||
#include "S1AP_MMERelaySupportIndicator.h"
|
||||
#include "S1AP_MMEStatusTransfer.h"
|
||||
#include "S1AP_MMEname.h"
|
||||
#include "S1AP_MSClassmark2.h"
|
||||
#include "S1AP_MSClassmark3.h"
|
||||
#include "S1AP_ManagementBasedMDTAllowed.h"
|
||||
#include "S1AP_Masked-IMEISV.h"
|
||||
#include "S1AP_MeasurementThresholdA2.h"
|
||||
#include "S1AP_MeasurementsToActivate.h"
|
||||
#include "S1AP_MessageIdentifier.h"
|
||||
#include "S1AP_MobilityInformation.h"
|
||||
#include "S1AP_MutingAvailabilityIndication.h"
|
||||
#include "S1AP_MutingPatternInformation.h"
|
||||
#include "S1AP_NAS-PDU.h"
|
||||
#include "S1AP_NASDeliveryIndication.h"
|
||||
#include "S1AP_NASNonDeliveryIndication.h"
|
||||
#include "S1AP_NASSecurityParametersfromE-UTRAN.h"
|
||||
#include "S1AP_NASSecurityParameterstoE-UTRAN.h"
|
||||
#include "S1AP_NB-IoT-DefaultPagingDRX.h"
|
||||
#include "S1AP_NB-IoT-Paging-eDRX-Cycle.h"
|
||||
#include "S1AP_NB-IoT-Paging-eDRXInformation.h"
|
||||
#include "S1AP_NB-IoT-PagingTimeWindow.h"
|
||||
#include "S1AP_NB-IoT-UEIdentityIndexValue.h"
|
||||
#include "S1AP_NextPagingAreaScope.h"
|
||||
#include "S1AP_NumberOfBroadcasts.h"
|
||||
#include "S1AP_NumberofBroadcastRequest.h"
|
||||
#include "S1AP_OldBSS-ToNewBSS-Information.h"
|
||||
#include "S1AP_OverloadAction.h"
|
||||
#include "S1AP_OverloadResponse.h"
|
||||
#include "S1AP_OverloadStart.h"
|
||||
#include "S1AP_OverloadStop.h"
|
||||
#include "S1AP_PDCP-SN.h"
|
||||
#include "S1AP_PDCP-SNExtended.h"
|
||||
#include "S1AP_PDCP-SNlength18.h"
|
||||
#include "S1AP_PLMNidentity.h"
|
||||
#include "S1AP_PS-ServiceNotAvailable.h"
|
||||
#include "S1AP_PWSFailureIndication.h"
|
||||
#include "S1AP_PWSRestartIndication.h"
|
||||
#include "S1AP_PWSfailedECGIList.h"
|
||||
#include "S1AP_Paging-eDRX-Cycle.h"
|
||||
#include "S1AP_Paging-eDRXInformation.h"
|
||||
#include "S1AP_Paging.h"
|
||||
#include "S1AP_PagingAttemptCount.h"
|
||||
#include "S1AP_PagingAttemptInformation.h"
|
||||
#include "S1AP_PagingDRX.h"
|
||||
#include "S1AP_PagingPriority.h"
|
||||
#include "S1AP_PagingTimeWindow.h"
|
||||
#include "S1AP_PathSwitchRequest.h"
|
||||
#include "S1AP_PathSwitchRequestAcknowledge.h"
|
||||
#include "S1AP_PathSwitchRequestFailure.h"
|
||||
#include "S1AP_PedestrianUE.h"
|
||||
#include "S1AP_Port-Number.h"
|
||||
#include "S1AP_Pre-emptionCapability.h"
|
||||
#include "S1AP_Pre-emptionVulnerability.h"
|
||||
#include "S1AP_Presence.h"
|
||||
#include "S1AP_PriorityLevel.h"
|
||||
#include "S1AP_PrivacyIndicator.h"
|
||||
#include "S1AP_PrivateIE-Container.h"
|
||||
#include "S1AP_PrivateIE-Field.h"
|
||||
#include "S1AP_PrivateIE-ID.h"
|
||||
#include "S1AP_PrivateMessage.h"
|
||||
#include "S1AP_ProSeAuthorized.h"
|
||||
#include "S1AP_ProSeDirectCommunication.h"
|
||||
#include "S1AP_ProSeDirectDiscovery.h"
|
||||
#include "S1AP_ProSeUEtoNetworkRelaying.h"
|
||||
#include "S1AP_ProcedureCode.h"
|
||||
#include "S1AP_ProtocolError-IE-ContainerList.h"
|
||||
#include "S1AP_ProtocolExtensionContainer.h"
|
||||
#include "S1AP_ProtocolExtensionField.h"
|
||||
#include "S1AP_ProtocolExtensionID.h"
|
||||
#include "S1AP_ProtocolIE-Container.h"
|
||||
#include "S1AP_ProtocolIE-ContainerList.h"
|
||||
#include "S1AP_ProtocolIE-ContainerPair.h"
|
||||
#include "S1AP_ProtocolIE-ContainerPairList.h"
|
||||
#include "S1AP_ProtocolIE-Field.h"
|
||||
#include "S1AP_ProtocolIE-FieldPair.h"
|
||||
#include "S1AP_ProtocolIE-ID.h"
|
||||
#include "S1AP_ProtocolIE-SingleContainer.h"
|
||||
#include "S1AP_QCI.h"
|
||||
#include "S1AP_RAC.h"
|
||||
#include "S1AP_RAT-Type.h"
|
||||
#include "S1AP_RIMInformation.h"
|
||||
#include "S1AP_RIMRoutingAddress.h"
|
||||
#include "S1AP_RIMTransfer.h"
|
||||
#include "S1AP_RLFReportInformation.h"
|
||||
#include "S1AP_RNC-ID.h"
|
||||
#include "S1AP_RRC-Container.h"
|
||||
#include "S1AP_RRC-Establishment-Cause.h"
|
||||
#include "S1AP_ReceiveStatusOfULPDCPSDUsExtended.h"
|
||||
#include "S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h"
|
||||
#include "S1AP_ReceiveStatusofULPDCPSDUs.h"
|
||||
#include "S1AP_RecommendedCellItem.h"
|
||||
#include "S1AP_RecommendedCellList.h"
|
||||
#include "S1AP_RecommendedCellsForPaging.h"
|
||||
#include "S1AP_RecommendedENBItem.h"
|
||||
#include "S1AP_RecommendedENBList.h"
|
||||
#include "S1AP_RecommendedENBsForPaging.h"
|
||||
#include "S1AP_RelativeMMECapacity.h"
|
||||
#include "S1AP_RelayNode-Indicator.h"
|
||||
#include "S1AP_RepetitionPeriod.h"
|
||||
#include "S1AP_ReportAmountMDT.h"
|
||||
#include "S1AP_ReportArea.h"
|
||||
#include "S1AP_ReportIntervalMDT.h"
|
||||
#include "S1AP_RequestType.h"
|
||||
#include "S1AP_RerouteNASRequest.h"
|
||||
#include "S1AP_Reset.h"
|
||||
#include "S1AP_ResetAcknowledge.h"
|
||||
#include "S1AP_ResetAll.h"
|
||||
#include "S1AP_ResetType.h"
|
||||
#include "S1AP_RetrieveUEInformation.h"
|
||||
#include "S1AP_Routing-ID.h"
|
||||
#include "S1AP_S-TMSI.h"
|
||||
#include "S1AP_S1AP-PDU.h"
|
||||
#include "S1AP_S1SetupFailure.h"
|
||||
#include "S1AP_S1SetupRequest.h"
|
||||
#include "S1AP_S1SetupResponse.h"
|
||||
#include "S1AP_SONConfigurationTransfer.h"
|
||||
#include "S1AP_SONInformation-Extension.h"
|
||||
#include "S1AP_SONInformation.h"
|
||||
#include "S1AP_SONInformationReply.h"
|
||||
#include "S1AP_SONInformationReport.h"
|
||||
#include "S1AP_SONInformationRequest.h"
|
||||
#include "S1AP_SRVCCHOIndication.h"
|
||||
#include "S1AP_SRVCCOperationNotPossible.h"
|
||||
#include "S1AP_SRVCCOperationPossible.h"
|
||||
#include "S1AP_SecurityContext.h"
|
||||
#include "S1AP_SecurityKey.h"
|
||||
#include "S1AP_SerialNumber.h"
|
||||
#include "S1AP_ServedDCNs.h"
|
||||
#include "S1AP_ServedDCNsItem.h"
|
||||
#include "S1AP_ServedGUMMEIs.h"
|
||||
#include "S1AP_ServedGUMMEIsItem.h"
|
||||
#include "S1AP_ServedGroupIDs.h"
|
||||
#include "S1AP_ServedMMECs.h"
|
||||
#include "S1AP_ServedPLMNs.h"
|
||||
#include "S1AP_Source-ToTarget-TransparentContainer.h"
|
||||
#include "S1AP_SourceBSS-ToTargetBSS-TransparentContainer.h"
|
||||
#include "S1AP_SourceOfUEActivityBehaviourInformation.h"
|
||||
#include "S1AP_SourceRNC-ToTargetRNC-TransparentContainer.h"
|
||||
#include "S1AP_SourceeNB-ID.h"
|
||||
#include "S1AP_SourceeNB-ToTargeteNB-TransparentContainer.h"
|
||||
#include "S1AP_StratumLevel.h"
|
||||
#include "S1AP_SubscriberProfileIDforRFP.h"
|
||||
#include "S1AP_SuccessfulOutcome.h"
|
||||
#include "S1AP_SupportedTAs-Item.h"
|
||||
#include "S1AP_SupportedTAs.h"
|
||||
#include "S1AP_SynchronisationInformation.h"
|
||||
#include "S1AP_SynchronisationStatus.h"
|
||||
#include "S1AP_TABasedMDT.h"
|
||||
#include "S1AP_TAC.h"
|
||||
#include "S1AP_TAI-Broadcast-Item.h"
|
||||
#include "S1AP_TAI-Broadcast.h"
|
||||
#include "S1AP_TAI-Cancelled-Item.h"
|
||||
#include "S1AP_TAI-Cancelled.h"
|
||||
#include "S1AP_TAI.h"
|
||||
#include "S1AP_TAIBasedMDT.h"
|
||||
#include "S1AP_TAIItem.h"
|
||||
#include "S1AP_TAIList.h"
|
||||
#include "S1AP_TAIListForRestart.h"
|
||||
#include "S1AP_TAIListforMDT.h"
|
||||
#include "S1AP_TAIListforWarning.h"
|
||||
#include "S1AP_TAListforMDT.h"
|
||||
#include "S1AP_TBCD-STRING.h"
|
||||
#include "S1AP_Target-ToSource-TransparentContainer.h"
|
||||
#include "S1AP_TargetBSS-ToSourceBSS-TransparentContainer.h"
|
||||
#include "S1AP_TargetID.h"
|
||||
#include "S1AP_TargetRNC-ID.h"
|
||||
#include "S1AP_TargetRNC-ToSourceRNC-TransparentContainer.h"
|
||||
#include "S1AP_TargeteNB-ID.h"
|
||||
#include "S1AP_TargeteNB-ToSourceeNB-TransparentContainer.h"
|
||||
#include "S1AP_Threshold-RSRP.h"
|
||||
#include "S1AP_Threshold-RSRQ.h"
|
||||
#include "S1AP_Time-UE-StayedInCell-EnhancedGranularity.h"
|
||||
#include "S1AP_Time-UE-StayedInCell.h"
|
||||
#include "S1AP_TimeSynchronisationInfo.h"
|
||||
#include "S1AP_TimeToWait.h"
|
||||
#include "S1AP_TraceActivation.h"
|
||||
#include "S1AP_TraceDepth.h"
|
||||
#include "S1AP_TraceFailureIndication.h"
|
||||
#include "S1AP_TraceStart.h"
|
||||
#include "S1AP_TrafficLoadReductionIndication.h"
|
||||
#include "S1AP_TransportInformation.h"
|
||||
#include "S1AP_TransportLayerAddress.h"
|
||||
#include "S1AP_TriggeringMessage.h"
|
||||
#include "S1AP_TunnelInformation.h"
|
||||
#include "S1AP_TypeOfError.h"
|
||||
#include "S1AP_UE-HistoryInformation.h"
|
||||
#include "S1AP_UE-HistoryInformationFromTheUE.h"
|
||||
#include "S1AP_UE-RLF-Report-Container-for-extended-bands.h"
|
||||
#include "S1AP_UE-RLF-Report-Container.h"
|
||||
#include "S1AP_UE-RetentionInformation.h"
|
||||
#include "S1AP_UE-S1AP-ID-pair.h"
|
||||
#include "S1AP_UE-S1AP-IDs.h"
|
||||
#include "S1AP_UE-Usage-Type.h"
|
||||
#include "S1AP_UE-associatedLogicalS1-ConnectionItem.h"
|
||||
#include "S1AP_UE-associatedLogicalS1-ConnectionListRes.h"
|
||||
#include "S1AP_UE-associatedLogicalS1-ConnectionListResAck.h"
|
||||
#include "S1AP_UEAggregateMaximumBitrate.h"
|
||||
#include "S1AP_UECapabilityInfoIndication.h"
|
||||
#include "S1AP_UEContextModificationConfirm.h"
|
||||
#include "S1AP_UEContextModificationFailure.h"
|
||||
#include "S1AP_UEContextModificationIndication.h"
|
||||
#include "S1AP_UEContextModificationRequest.h"
|
||||
#include "S1AP_UEContextModificationResponse.h"
|
||||
#include "S1AP_UEContextReleaseCommand.h"
|
||||
#include "S1AP_UEContextReleaseComplete.h"
|
||||
#include "S1AP_UEContextReleaseRequest.h"
|
||||
#include "S1AP_UEContextResumeFailure.h"
|
||||
#include "S1AP_UEContextResumeRequest.h"
|
||||
#include "S1AP_UEContextResumeResponse.h"
|
||||
#include "S1AP_UEContextSuspendRequest.h"
|
||||
#include "S1AP_UEContextSuspendResponse.h"
|
||||
#include "S1AP_UEIdentityIndexValue.h"
|
||||
#include "S1AP_UEInformationTransfer.h"
|
||||
#include "S1AP_UEPagingID.h"
|
||||
#include "S1AP_UERadioCapability.h"
|
||||
#include "S1AP_UERadioCapabilityForPaging.h"
|
||||
#include "S1AP_UERadioCapabilityMatchRequest.h"
|
||||
#include "S1AP_UERadioCapabilityMatchResponse.h"
|
||||
#include "S1AP_UESecurityCapabilities.h"
|
||||
#include "S1AP_UESidelinkAggregateMaximumBitrate.h"
|
||||
#include "S1AP_UEUserPlaneCIoTSupportIndicator.h"
|
||||
#include "S1AP_UL-CP-SecurityInformation.h"
|
||||
#include "S1AP_UL-NAS-Count.h"
|
||||
#include "S1AP_UL-NAS-MAC.h"
|
||||
#include "S1AP_UnsuccessfulOutcome.h"
|
||||
#include "S1AP_UplinkNASTransport.h"
|
||||
#include "S1AP_UplinkNonUEAssociatedLPPaTransport.h"
|
||||
#include "S1AP_UplinkS1cdma2000tunnelling.h"
|
||||
#include "S1AP_UplinkUEAssociatedLPPaTransport.h"
|
||||
#include "S1AP_UserLocationInformation.h"
|
||||
#include "S1AP_V2XServicesAuthorized.h"
|
||||
#include "S1AP_VehicleUE.h"
|
||||
#include "S1AP_VoiceSupportMatchIndicator.h"
|
||||
#include "S1AP_WarningAreaList.h"
|
||||
#include "S1AP_WarningMessageContents.h"
|
||||
#include "S1AP_WarningSecurityInfo.h"
|
||||
#include "S1AP_WarningType.h"
|
||||
#include "S1AP_WriteReplaceWarningRequest.h"
|
||||
#include "S1AP_WriteReplaceWarningResponse.h"
|
||||
#include "S1AP_X2TNLConfigurationInfo.h"
|
||||
#include "S1AP_asn_constant.h"
|
||||
|
||||
#endif
|
||||
24
lib/s1ap3/s1ap_decoder.c
Normal file
24
lib/s1ap3/s1ap_decoder.c
Normal file
@@ -0,0 +1,24 @@
|
||||
#define TRACE_MODULE _s1ap_decoder
|
||||
|
||||
#include "s1ap_message.h"
|
||||
|
||||
status_t s1ap_decode_pdu(s1ap_message_t *message, pkbuf_t *pkbuf)
|
||||
{
|
||||
asn_dec_rval_t dec_ret = {0};
|
||||
|
||||
d_assert(message, return CORE_ERROR,);
|
||||
d_assert(pkbuf, return CORE_ERROR,);
|
||||
d_assert(pkbuf->payload, return CORE_ERROR,);
|
||||
|
||||
memset((void *)message, 0, sizeof(s1ap_message_t));
|
||||
dec_ret = aper_decode(NULL, &asn_DEF_S1AP_S1AP_PDU, (void **)&message,
|
||||
pkbuf->payload, pkbuf->len, 0, 0);
|
||||
|
||||
if (dec_ret.code != RC_OK)
|
||||
{
|
||||
d_error("Failed to decode S1AP-PDU[%d]", dec_ret.code);
|
||||
return CORE_ERROR;
|
||||
}
|
||||
|
||||
return CORE_OK;
|
||||
}
|
||||
28
lib/s1ap3/s1ap_encoder.c
Normal file
28
lib/s1ap3/s1ap_encoder.c
Normal file
@@ -0,0 +1,28 @@
|
||||
#define TRACE_MODULE _s1ap_encoder
|
||||
|
||||
#include "3gpp_types.h"
|
||||
|
||||
#include "s1ap_message.h"
|
||||
|
||||
status_t s1ap_encode_pdu(pkbuf_t **pkbuf, s1ap_message_t *message)
|
||||
{
|
||||
asn_enc_rval_t enc_ret = {0};
|
||||
|
||||
d_assert(message, return CORE_ERROR,);
|
||||
|
||||
*pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
||||
d_assert(*pkbuf, return CORE_ERROR,);
|
||||
|
||||
enc_ret = aper_encode_to_buffer(&asn_DEF_S1AP_S1AP_PDU, NULL,
|
||||
message, (*pkbuf)->payload, MAX_SDU_LEN);
|
||||
if (enc_ret.encoded < 0)
|
||||
{
|
||||
d_error("Failed to decode S1AP-PDU[%d]", enc_ret.encoded);
|
||||
pkbuf_free(*pkbuf);
|
||||
return CORE_ERROR;
|
||||
}
|
||||
|
||||
(*pkbuf)->len = (enc_ret.encoded >> 3);
|
||||
|
||||
return CORE_OK;
|
||||
}
|
||||
12
lib/s1ap3/s1ap_free.c
Normal file
12
lib/s1ap3/s1ap_free.c
Normal file
@@ -0,0 +1,12 @@
|
||||
#define TRACE_MODULE _s1ap_free
|
||||
|
||||
#include "s1ap_message.h"
|
||||
|
||||
status_t s1ap_free_pdu(s1ap_message_t *message)
|
||||
{
|
||||
d_assert(message, return CORE_ERROR,);
|
||||
|
||||
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1AP_S1AP_PDU, message);
|
||||
|
||||
return CORE_OK;
|
||||
}
|
||||
44
lib/s1ap3/s1ap_message.h
Normal file
44
lib/s1ap3/s1ap_message.h
Normal file
@@ -0,0 +1,44 @@
|
||||
#ifndef _S1AP_MESSAGE_H__
|
||||
#define _S1AP_MESSAGE_H__
|
||||
|
||||
#include "core_pkbuf.h"
|
||||
#include "s1ap_asn1c.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* Octets */
|
||||
#define S1AP_CLEAR_DATA(__dATA) \
|
||||
do { \
|
||||
d_assert((__dATA), , "Null param"); \
|
||||
if ((__dATA)->buf) \
|
||||
{ \
|
||||
CORE_FREE((__dATA)->buf); \
|
||||
(__dATA)->buf = NULL; \
|
||||
(__dATA)->size = 0; \
|
||||
} \
|
||||
} while(0)
|
||||
#define S1AP_STORE_DATA(__dST, __sRC) \
|
||||
do { \
|
||||
d_assert((__sRC),, "Null param") \
|
||||
d_assert((__sRC)->buf,, "Null param") \
|
||||
d_assert((__dST),, "Null param") \
|
||||
S1AP_CLEAR_DATA(__dST); \
|
||||
(__dST)->size = (__sRC)->size; \
|
||||
(__dST)->buf = core_calloc(1, sizeof((__dST)->size)); \
|
||||
memcpy((__dST)->buf, (__sRC)->buf, (__dST)->size); \
|
||||
} while(0)
|
||||
|
||||
typedef struct S1AP_S1AP_PDU s1ap_message_t;
|
||||
|
||||
CORE_DECLARE(int) s1ap_decode_pdu(s1ap_message_t *message, pkbuf_t *pkbuf);
|
||||
CORE_DECLARE(int) s1ap_encode_pdu(pkbuf_t **pkbuf, s1ap_message_t *message);
|
||||
CORE_DECLARE(int) s1ap_free_pdu(s1ap_message_t *message);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif
|
||||
|
||||
Binary file not shown.
@@ -29,6 +29,9 @@ user@host ~/Documents/git/nextepc/lib/s1ap/s1ap/asn1c$ \
|
||||
user@host ~/Documents/git/nextepc/lib/s1ap/asn1c$ \
|
||||
git diff asn_internal.h
|
||||
|
||||
user@host ~/Documents/git/nextepc/lib/s1ap/asn1c$ \
|
||||
git diff constr_SET_OF.c
|
||||
|
||||
Remove unnecessary files
|
||||
===========================================
|
||||
user@host ~/Documents/git/nextepc/lib/s1ap/s1ap/asn1c$ \
|
||||
|
||||
@@ -3,16 +3,17 @@
|
||||
bin_PROGRAMS = tests1ap
|
||||
|
||||
tests1ap_SOURCES = \
|
||||
abts.c abts.h abts_tests.h testutil.c testutil.h s1ap_conv.c \
|
||||
abts.c abts.h abts_tests.h testutil.c testutil.h \
|
||||
s1ap_conv.h s1ap_conv.c s1ap_build.h s1ap_build.c \
|
||||
s1ap_message_test.c
|
||||
|
||||
tests1ap_LDADD = \
|
||||
$(top_srcdir)/lib/s1ap2/libs1ap.la
|
||||
$(top_srcdir)/lib/s1ap3/libs1ap.la
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_srcdir)/lib/core/include \
|
||||
-I$(top_srcdir)/lib/s1ap2/asn1c \
|
||||
-I$(top_srcdir)/lib/s1ap2 \
|
||||
-I$(top_srcdir)/lib/s1ap3/asn1c \
|
||||
-I$(top_srcdir)/lib/s1ap3 \
|
||||
$(NULL)
|
||||
|
||||
AM_CFLAGS = \
|
||||
|
||||
1191
lib/s1ap3/test/s1ap_build.c
Normal file
1191
lib/s1ap3/test/s1ap_build.c
Normal file
File diff suppressed because it is too large
Load Diff
68
lib/s1ap3/test/s1ap_build.h
Normal file
68
lib/s1ap3/test/s1ap_build.h
Normal file
@@ -0,0 +1,68 @@
|
||||
#ifndef __S1AP_BUILD_H__
|
||||
#define __S1AP_BUILD_H__
|
||||
|
||||
#if 0
|
||||
#include "s1ap/s1ap_message.h"
|
||||
#else
|
||||
#include "s1ap_message.h"
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
#include "mme_context.h"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
CORE_DECLARE(status_t) s1ap_build_setup_rsp(pkbuf_t **pkbuf);
|
||||
CORE_DECLARE(status_t) s1ap_build_setup_failure(
|
||||
pkbuf_t **pkbuf, S1AP_Cause_PR group, long cause, long time_to_wait);
|
||||
|
||||
#if 0
|
||||
CORE_DECLARE(status_t) s1ap_build_downlink_nas_transport(
|
||||
pkbuf_t **s1apbuf, enb_ue_t *enb_ue, pkbuf_t *emmbuf);
|
||||
CORE_DECLARE(status_t) s1ap_build_initial_context_setup_request(
|
||||
pkbuf_t **s1apbuf, mme_ue_t *mme_ue, pkbuf_t *emmbuf);
|
||||
CORE_DECLARE(status_t) s1ap_build_e_rab_setup_request(
|
||||
pkbuf_t **s1apbuf, mme_bearer_t *bearer, pkbuf_t *esmbuf);
|
||||
CORE_DECLARE(status_t) s1ap_build_e_rab_modify_request(
|
||||
pkbuf_t **s1apbuf, mme_bearer_t *bearer, pkbuf_t *esmbuf);
|
||||
CORE_DECLARE(status_t) s1ap_build_e_rab_release_command(pkbuf_t **s1apbuf,
|
||||
mme_bearer_t *bearer, pkbuf_t *esmbuf, S1ap_Cause_PR group, long cause);
|
||||
CORE_DECLARE(status_t) s1ap_build_ue_context_release_command(
|
||||
pkbuf_t **s1apbuf, enb_ue_t *enb_ue, S1ap_Cause_PR group, long cause);
|
||||
CORE_DECLARE(status_t) s1ap_build_paging(pkbuf_t **s1apbuf, mme_ue_t *mme_ue);
|
||||
|
||||
CORE_DECLARE(status_t) s1ap_build_path_switch_ack(
|
||||
pkbuf_t **s1apbuf, mme_ue_t *mme_ue);
|
||||
CORE_DECLARE(status_t) s1ap_build_path_switch_failure(pkbuf_t **s1apbuf,
|
||||
c_uint32_t enb_ue_s1ap_id, c_uint32_t mme_ue_s1ap_id,
|
||||
S1ap_Cause_PR group, long cause);
|
||||
|
||||
CORE_DECLARE(status_t) s1ap_build_handover_command(
|
||||
pkbuf_t **s1apbuf, enb_ue_t *source_ue);
|
||||
CORE_DECLARE(status_t) s1ap_build_handover_preparation_failure(
|
||||
pkbuf_t **s1apbuf, enb_ue_t *source_ue, S1ap_Cause_t *cause);
|
||||
|
||||
CORE_DECLARE(status_t) s1ap_build_handover_request(
|
||||
pkbuf_t **s1apbuf, mme_ue_t *mme_ue, enb_ue_t *target_ue,
|
||||
S1ap_HandoverRequiredIEs_t *required);
|
||||
|
||||
CORE_DECLARE(status_t) s1ap_build_handover_cancel_ack(
|
||||
pkbuf_t **s1apbuf, enb_ue_t *source_ue);
|
||||
|
||||
CORE_DECLARE(status_t) s1ap_build_mme_status_transfer(pkbuf_t **s1apbuf,
|
||||
enb_ue_t *target_ue, S1ap_ENBStatusTransferIEs_t *enb_ies);
|
||||
|
||||
CORE_DECLARE(status_t) s1ap_build_error_indication(
|
||||
pkbuf_t **s1apbuf, c_uint16_t presenceMask,
|
||||
c_uint32_t enb_ue_s1ap_id, c_uint32_t mme_ue_s1ap_id,
|
||||
S1ap_Cause_PR group, long cause);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __S1AP_BUILD_H__ */
|
||||
@@ -7,9 +7,7 @@
|
||||
#include "3gpp_types.h"
|
||||
|
||||
#include "s1ap_message.h"
|
||||
#if 0
|
||||
#include "mme/s1ap_build.h"
|
||||
#endif
|
||||
#include "s1ap_build.h"
|
||||
#include "s1ap_conv.h"
|
||||
|
||||
#include "testutil.h"
|
||||
@@ -19,189 +17,11 @@
|
||||
|
||||
static void s1ap_message_test1(abts_case *tc, void *data)
|
||||
{
|
||||
/* S1SetupRequest */
|
||||
char *payload =
|
||||
"0011002d000004003b00090000f11040"
|
||||
"54f64010003c400903004a4c542d3632"
|
||||
"3100400007000c0e4000f11000894001"
|
||||
"00";
|
||||
|
||||
pkbuf_t *pkbuf;
|
||||
s1ap_message_t message;
|
||||
struct S1AP_InitiatingMessage *initiatingMessage;
|
||||
S1AP_S1SetupRequest_t *pdu;
|
||||
S1AP_Global_ENB_ID_t *Global_ENB_ID;
|
||||
S1AP_ENBname_t *ENBname;
|
||||
S1AP_SupportedTAs_t *SupportedTAs;
|
||||
S1AP_PagingDRX_t *PagingDRX;
|
||||
int i;
|
||||
int result;
|
||||
char hexbuf[MAX_SDU_LEN];
|
||||
|
||||
pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
||||
ABTS_PTR_NOTNULL(tc, pkbuf);
|
||||
pkbuf->len = 49;
|
||||
memcpy(pkbuf->payload,
|
||||
CORE_HEX(payload, strlen(payload), hexbuf), pkbuf->len);
|
||||
|
||||
result = s1ap_decode_pdu(&message, pkbuf);
|
||||
ABTS_INT_EQUAL(tc, 0, result);
|
||||
|
||||
asn_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, &message);
|
||||
|
||||
initiatingMessage = message.choice.initiatingMessage;
|
||||
printf("procedireCode : %ld\n", initiatingMessage->procedureCode);
|
||||
printf("criticalty : %ld\n", initiatingMessage->criticality);
|
||||
pdu = &initiatingMessage->value.choice.S1SetupRequest;
|
||||
|
||||
for (i = 0; i < pdu->protocolIEs.list.count; i++)
|
||||
{
|
||||
S1AP_S1SetupRequestIEs_t *ie = pdu->protocolIEs.list.array[i];
|
||||
switch(ie->id)
|
||||
{
|
||||
case S1AP_ProtocolIE_ID_S1AP_id_Global_ENB_ID:
|
||||
Global_ENB_ID = &ie->value.choice.Global_ENB_ID;
|
||||
break;
|
||||
case S1AP_ProtocolIE_ID_S1AP_id_eNBname:
|
||||
ENBname = &ie->value.choice.ENBname;
|
||||
break;
|
||||
case S1AP_ProtocolIE_ID_S1AP_id_SupportedTAs:
|
||||
SupportedTAs = &ie->value.choice.SupportedTAs;
|
||||
break;
|
||||
case S1AP_ProtocolIE_ID_S1AP_id_DefaultPagingDRX:
|
||||
PagingDRX = &ie->value.choice.PagingDRX;
|
||||
break;
|
||||
default:
|
||||
d_warn("Unknown Procotol ID[%d]\n", ie->id);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
asn_fprint(stdout, &asn_DEF_S1AP_Global_ENB_ID, Global_ENB_ID);
|
||||
asn_fprint(stdout, &asn_DEF_S1AP_ENBname, ENBname);
|
||||
asn_fprint(stdout, &asn_DEF_S1AP_SupportedTAs, SupportedTAs);
|
||||
asn_fprint(stdout, &asn_DEF_S1AP_PagingDRX, PagingDRX);
|
||||
|
||||
#if 0
|
||||
asn_enc_rval_t enc_ret = {0};
|
||||
enc_ret = aper_encode_to_buffer(&asn_DEF_S1AP_S1AP_PDU, NULL,
|
||||
&message, pkbuf->payload, MAX_SDU_LEN);
|
||||
if (enc_ret.encoded < 0)
|
||||
{
|
||||
d_error("Encoding of failed");
|
||||
}
|
||||
else
|
||||
{
|
||||
d_info("Success = %d\n", enc_ret.encoded);
|
||||
}
|
||||
#endif
|
||||
|
||||
s1ap_free_pdu(&message);
|
||||
|
||||
pkbuf_free(pkbuf);
|
||||
}
|
||||
|
||||
static void s1ap_message_test2(abts_case *tc, void *data)
|
||||
{
|
||||
pkbuf_t *pkbuf;
|
||||
s1ap_message_t message;
|
||||
S1AP_S1AP_PDU_t pdu;
|
||||
S1AP_InitiatingMessage_t *InitiatingMessage;
|
||||
S1AP_S1SetupRequestIEs_t *ie;
|
||||
S1AP_S1SetupRequest_t *S1SetupRequest;
|
||||
S1AP_Global_ENB_ID_t *Global_ENB_ID;
|
||||
S1AP_ENBname_t *ENBname;
|
||||
S1AP_SupportedTAs_t SupportedTAs;
|
||||
S1AP_PagingDRX_t PagingDRX;
|
||||
int i;
|
||||
int result;
|
||||
asn_enc_rval_t enc_ret = {0};
|
||||
char hexbuf[MAX_SDU_LEN];
|
||||
c_uint32_t enb_id = 0x54f64;
|
||||
int tac = 12345;
|
||||
plmn_id_t plmn_id;
|
||||
|
||||
pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
||||
ABTS_PTR_NOTNULL(tc, pkbuf);
|
||||
|
||||
memset(&pdu, 0, sizeof (S1AP_S1AP_PDU_t));
|
||||
pdu.present = S1AP_PDU_PR_initiatingMessage;
|
||||
pdu.choice.initiatingMessage = core_calloc(
|
||||
1, sizeof(S1AP_InitiatingMessage_t));
|
||||
InitiatingMessage = pdu.choice.initiatingMessage;
|
||||
InitiatingMessage->procedureCode = S1AP_ProcedureCode_S1AP_id_S1Setup;
|
||||
InitiatingMessage->criticality = S1AP_Criticality_ignore;
|
||||
|
||||
InitiatingMessage->value.present =
|
||||
InitiatingMessage__value_PR_S1SetupRequest;
|
||||
S1SetupRequest = &InitiatingMessage->value.choice.S1SetupRequest;
|
||||
|
||||
ie = core_calloc(1, sizeof(S1AP_S1SetupRequestIEs_t));
|
||||
ie->id = S1AP_ProtocolIE_ID_S1AP_id_Global_ENB_ID;
|
||||
ie->criticality = S1AP_Criticality_reject;
|
||||
ie->value.present = S1SetupRequestIEs__value_PR_Global_ENB_ID;
|
||||
|
||||
Global_ENB_ID = &ie->value.choice.Global_ENB_ID;
|
||||
plmn_id_build(&plmn_id, 1, 1, 2);
|
||||
s1ap_uint32_to_ENB_ID(ENB_ID_PR_macroENB_ID,
|
||||
enb_id, &Global_ENB_ID->eNB_ID);
|
||||
s1ap_buffer_to_OCTET_STRING(
|
||||
&plmn_id, PLMN_ID_LEN, &Global_ENB_ID->pLMNidentity);
|
||||
ASN_SEQUENCE_ADD(&S1SetupRequest->protocolIEs, ie);
|
||||
|
||||
ie = core_calloc(1, sizeof(S1AP_S1SetupRequestIEs_t));
|
||||
ie->id = S1AP_ProtocolIE_ID_S1AP_id_eNBname;
|
||||
ie->criticality = S1AP_Criticality_ignore;
|
||||
ie->value.present = S1SetupRequestIEs__value_PR_ENBname;
|
||||
|
||||
ENBname = &ie->value.choice.ENBname;
|
||||
s1ap_buffer_to_OCTET_STRING("ACETCOM", strlen("ACETCOM"), ENBname);
|
||||
ASN_SEQUENCE_ADD(&S1SetupRequest->protocolIEs, ie);
|
||||
enc_ret = aper_encode_to_buffer(&asn_DEF_S1AP_S1AP_PDU, NULL,
|
||||
&pdu, pkbuf->payload, MAX_SDU_LEN);
|
||||
|
||||
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1AP_S1AP_PDU, &pdu);
|
||||
|
||||
if (enc_ret.encoded < 0)
|
||||
{
|
||||
d_error("Encoding of failed");
|
||||
}
|
||||
else
|
||||
{
|
||||
d_info("Success = %d\n", enc_ret.encoded);
|
||||
}
|
||||
|
||||
#if 1
|
||||
result = s1ap_decode_pdu(&message, pkbuf);
|
||||
ABTS_INT_EQUAL(tc, 0, result);
|
||||
asn_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, &message);
|
||||
s1ap_free_pdu(&message);
|
||||
#endif
|
||||
|
||||
pkbuf_free(pkbuf);
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void s1ap_message_test1(abts_case *tc, void *data)
|
||||
{
|
||||
/* S1SetupRequest */
|
||||
char *payload =
|
||||
"0011002d000004003b00090000f11040"
|
||||
"54f64010003c400903004a4c542d3632"
|
||||
"3100400007000c0e4000f11000894001"
|
||||
"00";
|
||||
#if 0
|
||||
char *payload =
|
||||
"000e001500000200 0240020060005c00 084000005b000220 04";
|
||||
char *payload =
|
||||
"000e0025"
|
||||
"0000020002400200 60005c0018400200 5b00046064000400 5b00046063000300"
|
||||
"5b0002402c";
|
||||
/* S1Reset */
|
||||
char *payload =
|
||||
"000e"
|
||||
"0025000002000240 020000005c001840 02005b0004606400 04005b0004606300"
|
||||
"03005b0002402c";
|
||||
#endif
|
||||
|
||||
pkbuf_t *pkbuf;
|
||||
s1ap_message_t message;
|
||||
@@ -210,17 +30,15 @@ static void s1ap_message_test1(abts_case *tc, void *data)
|
||||
|
||||
pkbuf = pkbuf_alloc(0, MAX_SDU_LEN);
|
||||
ABTS_PTR_NOTNULL(tc, pkbuf);
|
||||
pkbuf->len = 49;
|
||||
#if 0
|
||||
pkbuf->len = 25;
|
||||
pkbuf->len = 41;
|
||||
pkbuf->len = 41;
|
||||
#endif
|
||||
memcpy(pkbuf->payload,
|
||||
CORE_HEX(payload, strlen(payload), hexbuf), pkbuf->len);
|
||||
|
||||
result = s1ap_decode_pdu(&message, pkbuf);
|
||||
ABTS_INT_EQUAL(tc, 0, result);
|
||||
#if 0
|
||||
asn_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, &message);
|
||||
#endif
|
||||
s1ap_free_pdu(&message);
|
||||
|
||||
pkbuf_free(pkbuf);
|
||||
@@ -252,6 +70,9 @@ static void s1ap_message_test2(abts_case *tc, void *data)
|
||||
|
||||
result = s1ap_decode_pdu(&message, pkbuf);
|
||||
ABTS_INT_EQUAL(tc, 0, result);
|
||||
#if 0
|
||||
asn_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, &message);
|
||||
#endif
|
||||
s1ap_free_pdu(&message);
|
||||
|
||||
pkbuf_free(pkbuf);
|
||||
@@ -278,11 +99,15 @@ static void s1ap_message_test3(abts_case *tc, void *data)
|
||||
|
||||
result = s1ap_decode_pdu(&message, pkbuf);
|
||||
ABTS_INT_EQUAL(tc, 0, result);
|
||||
#if 0
|
||||
asn_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, &message);
|
||||
#endif
|
||||
s1ap_free_pdu(&message);
|
||||
|
||||
pkbuf_free(pkbuf);
|
||||
}
|
||||
|
||||
#if 0
|
||||
status_t s1ap_build_setup_failure(
|
||||
pkbuf_t **pkbuf, S1AP_Cause_PR group, long cause, long time_to_wait)
|
||||
{
|
||||
@@ -432,6 +257,7 @@ status_t s1ap_build_setup_rsp(pkbuf_t **pkbuf)
|
||||
|
||||
return CORE_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void s1ap_message_test4(abts_case *tc, void *data)
|
||||
{
|
||||
@@ -447,15 +273,19 @@ static void s1ap_message_test4(abts_case *tc, void *data)
|
||||
ABTS_PTR_NOTNULL(tc, pkbuf->payload);
|
||||
#if 0
|
||||
ABTS_INT_EQUAL(tc, 27, pkbuf->len);
|
||||
#endif
|
||||
|
||||
result = s1ap_decode_pdu(&message, pkbuf);
|
||||
ABTS_INT_EQUAL(tc, 0, result);
|
||||
#if 0
|
||||
asn_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, &message);
|
||||
#endif
|
||||
|
||||
s1ap_free_pdu(&message);
|
||||
pkbuf_free(pkbuf);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void s1ap_message_test5(abts_case *tc, void *data)
|
||||
{
|
||||
s1ap_message_t message;
|
||||
@@ -521,9 +351,9 @@ abts_suite *test_s1ap_message(abts_suite *suite)
|
||||
|
||||
abts_run_test(suite, s1ap_message_test1, NULL);
|
||||
abts_run_test(suite, s1ap_message_test2, NULL);
|
||||
#if 0
|
||||
abts_run_test(suite, s1ap_message_test3, NULL);
|
||||
abts_run_test(suite, s1ap_message_test4, NULL);
|
||||
#if 0
|
||||
abts_run_test(suite, s1ap_message_test5, NULL);
|
||||
abts_run_test(suite, s1ap_message_test6, NULL);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user