update it

This commit is contained in:
Sukchan Lee
2018-03-04 23:23:35 +09:00
parent 0d8928ff05
commit 0628b76296
14 changed files with 1951 additions and 1329 deletions

View File

@@ -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

View File

@@ -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
View 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
View 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
View 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
View 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
View 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.

View File

@@ -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$ \

View File

@@ -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

File diff suppressed because it is too large Load Diff

View 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__ */

View File

@@ -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