/* * Copyright 2013-2019 Software Radio Systems Limited * * This file is part of srsLTE. * * srsLTE is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * srsLTE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * A copy of the GNU Affero General Public License can be found in * the LICENSE file in the top-level directory of this distribution * and at http://www.gnu.org/licenses/. * */ #ifndef SRSLTE_LIBLTE_S1AP_H #define SRSLTE_LIBLTE_S1AP_H /******************************************************************************* /* Warnings/Todos ********************************************************************************/ // Extensions are not yet handled correctly // Dynamic Sequence Of types have max 32 elements to reduce memory footprint // Container Lists are not yet handled correctly e.g. E-RAB-IE-ContainerList /******************************************************************************* /* INCLUDES ********************************************************************************/ #include "liblte_common.h" /******************************************************************************* LOGGING *******************************************************************************/ typedef void (*log_handler_t)(void* ctx, char* str); void liblte_log_register_handler(void* ctx, log_handler_t handler); /******************************************************************************* /* MAX defines ********************************************************************************/ #define LIBLTE_S1AP_MAXPRIVATEIES 65535 #define LIBLTE_S1AP_MAXPROTOCOLIES 65535 #define LIBLTE_S1AP_MAXNOOFE_RABS 256 #define LIBLTE_S1AP_MAXNOOFTACS 256 #define LIBLTE_S1AP_MAXNOOFBPLMNS 6 #define LIBLTE_S1AP_MAXNOOFEPLMNS 15 #define LIBLTE_S1AP_MAXNOOFFORBLACS 4096 #define LIBLTE_S1AP_MAXNOOFINDIVIDUALS1CONNECTIONSTORESET 256 #define LIBLTE_S1AP_MAXNOOFTAIFORWARNING 65535 #define LIBLTE_S1AP_MAXNOOFEMERGENCYAREAID 65535 #define LIBLTE_S1AP_MAXNOOFCELLINEAI 65535 #define LIBLTE_S1AP_MAXNOOFENBX2EXTTLAS 16 #define LIBLTE_S1AP_MAXNOOFRATS 8 #define LIBLTE_S1AP_MAXNOOFMMECS 256 #define LIBLTE_S1AP_MAXNOOFTAFORMDT 8 #define LIBLTE_S1AP_MAXNOOFCELLSFORRESTART 256 #define LIBLTE_S1AP_MAXNOOFRESTARTEMERGENCYAREAIDS 256 #define LIBLTE_S1AP_MAXNOOFCSGS 256 #define LIBLTE_S1AP_MAXNOOFERRORS 256 #define LIBLTE_S1AP_MAXNOOFEPLMNSPLUSONE 16 #define LIBLTE_S1AP_MAXNOOFCELLS 16 #define LIBLTE_S1AP_MAXNOOFCELLINTAI 65535 #define LIBLTE_S1AP_MAXNOOFENBX2GTPTLAS 16 #define LIBLTE_S1AP_MAXNOOFCELLIDFORMDT 32 #define LIBLTE_S1AP_MAXNOOFRESTARTTAIS 2048 #define LIBLTE_S1AP_MAXPROTOCOLEXTENSIONS 65535 #define LIBLTE_S1AP_MAXNOOFPLMNSPERMME 32 #define LIBLTE_S1AP_MAXNOOFCELLID 65535 #define LIBLTE_S1AP_MAXNOOFGROUPIDS 65535 #define LIBLTE_S1AP_MAXNOOFTAIS 256 #define LIBLTE_S1AP_MAXNOOFENBX2TLAS 2 #define LIBLTE_S1AP_MAXNOOFMDTPLMNS 16 #define LIBLTE_S1AP_MAXNOOFFORBTACS 4096 /******************************************************************************* /* Elementary Procedures ********************************************************************************/ typedef enum { LIBLTE_S1AP_PROC_ID_HANDOVERPREPARATION = 0, LIBLTE_S1AP_PROC_ID_HANDOVERRESOURCEALLOCATION = 1, LIBLTE_S1AP_PROC_ID_HANDOVERNOTIFICATION = 2, LIBLTE_S1AP_PROC_ID_PATHSWITCHREQUEST = 3, LIBLTE_S1AP_PROC_ID_HANDOVERCANCEL = 4, LIBLTE_S1AP_PROC_ID_E_RABSETUP = 5, LIBLTE_S1AP_PROC_ID_E_RABMODIFY = 6, LIBLTE_S1AP_PROC_ID_E_RABRELEASE = 7, LIBLTE_S1AP_PROC_ID_E_RABRELEASEINDICATION = 8, LIBLTE_S1AP_PROC_ID_INITIALCONTEXTSETUP = 9, LIBLTE_S1AP_PROC_ID_PAGING = 10, LIBLTE_S1AP_PROC_ID_DOWNLINKNASTRANSPORT = 11, LIBLTE_S1AP_PROC_ID_INITIALUEMESSAGE = 12, LIBLTE_S1AP_PROC_ID_UPLINKNASTRANSPORT = 13, LIBLTE_S1AP_PROC_ID_RESET = 14, LIBLTE_S1AP_PROC_ID_ERRORINDICATION = 15, LIBLTE_S1AP_PROC_ID_NASNONDELIVERYINDICATION = 16, LIBLTE_S1AP_PROC_ID_S1SETUP = 17, LIBLTE_S1AP_PROC_ID_UECONTEXTRELEASEREQUEST = 18, LIBLTE_S1AP_PROC_ID_DOWNLINKS1CDMA2000TUNNELING = 19, LIBLTE_S1AP_PROC_ID_UPLINKS1CDMA2000TUNNELING = 20, LIBLTE_S1AP_PROC_ID_UECONTEXTMODIFICATION = 21, LIBLTE_S1AP_PROC_ID_UECAPABILITYINFOINDICATION = 22, LIBLTE_S1AP_PROC_ID_UECONTEXTRELEASE = 23, LIBLTE_S1AP_PROC_ID_ENBSTATUSTRANSFER = 24, LIBLTE_S1AP_PROC_ID_MMESTATUSTRANSFER = 25, LIBLTE_S1AP_PROC_ID_DEACTIVATETRACE = 26, LIBLTE_S1AP_PROC_ID_TRACESTART = 27, LIBLTE_S1AP_PROC_ID_TRACEFAILUREINDICATION = 28, LIBLTE_S1AP_PROC_ID_ENBCONFIGURATIONUPDATE = 29, LIBLTE_S1AP_PROC_ID_MMECONFIGURATIONUPDATE = 30, LIBLTE_S1AP_PROC_ID_LOCATIONREPORTINGCONTROL = 31, LIBLTE_S1AP_PROC_ID_LOCATIONREPORTINGFAILUREINDICATION = 32, LIBLTE_S1AP_PROC_ID_LOCATIONREPORT = 33, LIBLTE_S1AP_PROC_ID_OVERLOADSTART = 34, LIBLTE_S1AP_PROC_ID_OVERLOADSTOP = 35, LIBLTE_S1AP_PROC_ID_WRITEREPLACEWARNING = 36, LIBLTE_S1AP_PROC_ID_ENBDIRECTINFORMATIONTRANSFER = 37, LIBLTE_S1AP_PROC_ID_MMEDIRECTINFORMATIONTRANSFER = 38, LIBLTE_S1AP_PROC_ID_PRIVATEMESSAGE = 39, LIBLTE_S1AP_PROC_ID_ENBCONFIGURATIONTRANSFER = 40, LIBLTE_S1AP_PROC_ID_MMECONFIGURATIONTRANSFER = 41, LIBLTE_S1AP_PROC_ID_CELLTRAFFICTRACE = 42, LIBLTE_S1AP_PROC_ID_KILL = 43, LIBLTE_S1AP_PROC_ID_DOWNLINKUEASSOCIATEDLPPATRANSPORT = 44, LIBLTE_S1AP_PROC_ID_UPLINKUEASSOCIATEDLPPATRANSPORT = 45, LIBLTE_S1AP_PROC_ID_DOWNLINKNONUEASSOCIATEDLPPATRANSPORT = 46, LIBLTE_S1AP_PROC_ID_UPLINKNONUEASSOCIATEDLPPATRANSPORT = 47, LIBLTE_S1AP_PROC_ID_UERADIOCAPABILITYMATCH = 48, LIBLTE_S1AP_PROC_ID_PWSRESTARTINDICATION = 49, LIBLTE_S1AP_PROC_N_ITEMS, } LIBLTE_S1AP_PROC_ENUM; static const char liblte_s1ap_proc_text[LIBLTE_S1AP_PROC_N_ITEMS][64] = { "id-HandoverPreparation", "id-HandoverResourceAllocation", "id-HandoverNotification", "id-PathSwitchRequest", "id-HandoverCancel", "id-E-RABSetup", "id-E-RABModify", "id-E-RABRelease", "id-E-RABReleaseIndication", "id-InitialContextSetup", "id-Paging", "id-downlinkNASTransport", "id-initialUEMessage", "id-uplinkNASTransport", "id-Reset", "id-ErrorIndication", "id-NASNonDeliveryIndication", "id-S1Setup", "id-UEContextReleaseRequest", "id-DownlinkS1cdma2000tunneling", "id-UplinkS1cdma2000tunneling", "id-UEContextModification", "id-UECapabilityInfoIndication", "id-UEContextRelease", "id-eNBStatusTransfer", "id-MMEStatusTransfer", "id-DeactivateTrace", "id-TraceStart", "id-TraceFailureIndication", "id-ENBConfigurationUpdate", "id-MMEConfigurationUpdate", "id-LocationReportingControl", "id-LocationReportingFailureIndication", "id-LocationReport", "id-OverloadStart", "id-OverloadStop", "id-WriteReplaceWarning", "id-eNBDirectInformationTransfer", "id-MMEDirectInformationTransfer", "id-PrivateMessage", "id-eNBConfigurationTransfer", "id-MMEConfigurationTransfer", "id-CellTrafficTrace", "id-Kill", "id-downlinkUEAssociatedLPPaTransport", "id-uplinkUEAssociatedLPPaTransport", "id-downlinkNonUEAssociatedLPPaTransport", "id-uplinkNonUEAssociatedLPPaTransport", "id-UERadioCapabilityMatch", "id-PWSRestartIndication", }; /******************************************************************************* /* ProtocolIE Ids ********************************************************************************/ typedef enum { LIBLTE_S1AP_IE_ID_MME_UE_S1AP_ID = 0, LIBLTE_S1AP_IE_ID_HANDOVERTYPE = 1, LIBLTE_S1AP_IE_ID_CAUSE = 2, LIBLTE_S1AP_IE_ID_SOURCEID = 3, LIBLTE_S1AP_IE_ID_TARGETID = 4, LIBLTE_S1AP_IE_ID_SPARE5 = 5, LIBLTE_S1AP_IE_ID_SPARE6 = 6, LIBLTE_S1AP_IE_ID_SPARE7 = 7, LIBLTE_S1AP_IE_ID_ENB_UE_S1AP_ID = 8, LIBLTE_S1AP_IE_ID_SPARE9 = 9, LIBLTE_S1AP_IE_ID_SPARE10 = 10, LIBLTE_S1AP_IE_ID_SPARE11 = 11, LIBLTE_S1AP_IE_ID_E_RABSUBJECTTODATAFORWARDINGLIST = 12, LIBLTE_S1AP_IE_ID_E_RABTORELEASELISTHOCMD = 13, LIBLTE_S1AP_IE_ID_E_RABDATAFORWARDINGITEM = 14, LIBLTE_S1AP_IE_ID_E_RABRELEASEITEMBEARERRELCOMP = 15, LIBLTE_S1AP_IE_ID_E_RABTOBESETUPLISTBEARERSUREQ = 16, LIBLTE_S1AP_IE_ID_E_RABTOBESETUPITEMBEARERSUREQ = 17, LIBLTE_S1AP_IE_ID_E_RABADMITTEDLIST = 18, LIBLTE_S1AP_IE_ID_E_RABFAILEDTOSETUPLISTHOREQACK = 19, LIBLTE_S1AP_IE_ID_E_RABADMITTEDITEM = 20, LIBLTE_S1AP_IE_ID_E_RABFAILEDTOSETUPITEMHOREQACK = 21, LIBLTE_S1AP_IE_ID_E_RABTOBESWITCHEDDLLIST = 22, LIBLTE_S1AP_IE_ID_E_RABTOBESWITCHEDDLITEM = 23, LIBLTE_S1AP_IE_ID_E_RABTOBESETUPLISTCTXTSUREQ = 24, LIBLTE_S1AP_IE_ID_TRACEACTIVATION = 25, LIBLTE_S1AP_IE_ID_NAS_PDU = 26, LIBLTE_S1AP_IE_ID_E_RABTOBESETUPITEMHOREQ = 27, LIBLTE_S1AP_IE_ID_E_RABSETUPLISTBEARERSURES = 28, LIBLTE_S1AP_IE_ID_E_RABFAILEDTOSETUPLISTBEARERSURES = 29, LIBLTE_S1AP_IE_ID_E_RABTOBEMODIFIEDLISTBEARERMODREQ = 30, LIBLTE_S1AP_IE_ID_E_RABMODIFYLISTBEARERMODRES = 31, LIBLTE_S1AP_IE_ID_E_RABFAILEDTOMODIFYLIST = 32, LIBLTE_S1AP_IE_ID_E_RABTOBERELEASEDLIST = 33, LIBLTE_S1AP_IE_ID_E_RABFAILEDTORELEASELIST = 34, LIBLTE_S1AP_IE_ID_E_RABITEM = 35, LIBLTE_S1AP_IE_ID_E_RABTOBEMODIFIEDITEMBEARERMODREQ = 36, LIBLTE_S1AP_IE_ID_E_RABMODIFYITEMBEARERMODRES = 37, LIBLTE_S1AP_IE_ID_E_RABRELEASEITEM = 38, LIBLTE_S1AP_IE_ID_E_RABSETUPITEMBEARERSURES = 39, LIBLTE_S1AP_IE_ID_SECURITYCONTEXT = 40, LIBLTE_S1AP_IE_ID_HANDOVERRESTRICTIONLIST = 41, LIBLTE_S1AP_IE_ID_SPARE42 = 42, LIBLTE_S1AP_IE_ID_UEPAGINGID = 43, LIBLTE_S1AP_IE_ID_PAGINGDRX = 44, LIBLTE_S1AP_IE_ID_SPARE45 = 45, LIBLTE_S1AP_IE_ID_TAILIST = 46, LIBLTE_S1AP_IE_ID_TAIITEM = 47, LIBLTE_S1AP_IE_ID_E_RABFAILEDTOSETUPLISTCTXTSURES = 48, LIBLTE_S1AP_IE_ID_E_RABRELEASEITEMHOCMD = 49, LIBLTE_S1AP_IE_ID_E_RABSETUPITEMCTXTSURES = 50, LIBLTE_S1AP_IE_ID_E_RABSETUPLISTCTXTSURES = 51, LIBLTE_S1AP_IE_ID_E_RABTOBESETUPITEMCTXTSUREQ = 52, LIBLTE_S1AP_IE_ID_E_RABTOBESETUPLISTHOREQ = 53, LIBLTE_S1AP_IE_ID_SPARE54 = 54, LIBLTE_S1AP_IE_ID_GERANTOLTEHOINFORMATIONRES = 55, LIBLTE_S1AP_IE_ID_SPARE56 = 56, LIBLTE_S1AP_IE_ID_UTRANTOLTEHOINFORMATIONRES = 57, LIBLTE_S1AP_IE_ID_CRITICALITYDIAGNOSTICS = 58, LIBLTE_S1AP_IE_ID_GLOBAL_ENB_ID = 59, LIBLTE_S1AP_IE_ID_ENBNAME = 60, LIBLTE_S1AP_IE_ID_MMENAME = 61, LIBLTE_S1AP_IE_ID_SPARE62 = 62, LIBLTE_S1AP_IE_ID_SERVEDPLMNS = 63, LIBLTE_S1AP_IE_ID_SUPPORTEDTAS = 64, LIBLTE_S1AP_IE_ID_TIMETOWAIT = 65, LIBLTE_S1AP_IE_ID_UEAGGREGATEMAXIMUMBITRATE = 66, LIBLTE_S1AP_IE_ID_TAI = 67, LIBLTE_S1AP_IE_ID_SPARE68 = 68, LIBLTE_S1AP_IE_ID_E_RABRELEASELISTBEARERRELCOMP = 69, LIBLTE_S1AP_IE_ID_CDMA2000PDU = 70, LIBLTE_S1AP_IE_ID_CDMA2000RATTYPE = 71, LIBLTE_S1AP_IE_ID_CDMA2000SECTORID = 72, LIBLTE_S1AP_IE_ID_SECURITYKEY = 73, LIBLTE_S1AP_IE_ID_UERADIOCAPABILITY = 74, LIBLTE_S1AP_IE_ID_GUMMEI_ID = 75, LIBLTE_S1AP_IE_ID_SPARE76 = 76, LIBLTE_S1AP_IE_ID_SPARE77 = 77, LIBLTE_S1AP_IE_ID_E_RABINFORMATIONLISTITEM = 78, LIBLTE_S1AP_IE_ID_DIRECT_FORWARDING_PATH_AVAILABILITY = 79, LIBLTE_S1AP_IE_ID_UEIDENTITYINDEXVALUE = 80, LIBLTE_S1AP_IE_ID_SPARE81 = 81, LIBLTE_S1AP_IE_ID_SPARE82 = 82, LIBLTE_S1AP_IE_ID_CDMA2000HOSTATUS = 83, LIBLTE_S1AP_IE_ID_CDMA2000HOREQUIREDINDICATION = 84, LIBLTE_S1AP_IE_ID_SPARE85 = 85, LIBLTE_S1AP_IE_ID_E_UTRAN_TRACE_ID = 86, LIBLTE_S1AP_IE_ID_RELATIVEMMECAPACITY = 87, LIBLTE_S1AP_IE_ID_SOURCEMME_UE_S1AP_ID = 88, LIBLTE_S1AP_IE_ID_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEM = 89, LIBLTE_S1AP_IE_ID_ENB_STATUSTRANSFER_TRANSPARENTCONTAINER = 90, LIBLTE_S1AP_IE_ID_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM = 91, LIBLTE_S1AP_IE_ID_RESETTYPE = 92, LIBLTE_S1AP_IE_ID_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK = 93, LIBLTE_S1AP_IE_ID_E_RABTOBESWITCHEDULITEM = 94, LIBLTE_S1AP_IE_ID_E_RABTOBESWITCHEDULLIST = 95, LIBLTE_S1AP_IE_ID_S_TMSI = 96, LIBLTE_S1AP_IE_ID_CDMA2000ONEXRAND = 97, LIBLTE_S1AP_IE_ID_REQUESTTYPE = 98, LIBLTE_S1AP_IE_ID_UE_S1AP_IDS = 99, LIBLTE_S1AP_IE_ID_EUTRAN_CGI = 100, LIBLTE_S1AP_IE_ID_OVERLOADRESPONSE = 101, LIBLTE_S1AP_IE_ID_CDMA2000ONEXSRVCCINFO = 102, LIBLTE_S1AP_IE_ID_E_RABFAILEDTOBERELEASEDLIST = 103, LIBLTE_S1AP_IE_ID_SOURCE_TOTARGET_TRANSPARENTCONTAINER = 104, LIBLTE_S1AP_IE_ID_SERVEDGUMMEIS = 105, LIBLTE_S1AP_IE_ID_SUBSCRIBERPROFILEIDFORRFP = 106, LIBLTE_S1AP_IE_ID_UESECURITYCAPABILITIES = 107, LIBLTE_S1AP_IE_ID_CSFALLBACKINDICATOR = 108, LIBLTE_S1AP_IE_ID_CNDOMAIN = 109, LIBLTE_S1AP_IE_ID_E_RABRELEASEDLIST = 110, LIBLTE_S1AP_IE_ID_MESSAGEIDENTIFIER = 111, LIBLTE_S1AP_IE_ID_SERIALNUMBER = 112, LIBLTE_S1AP_IE_ID_WARNINGAREALIST = 113, LIBLTE_S1AP_IE_ID_REPETITIONPERIOD = 114, LIBLTE_S1AP_IE_ID_NUMBEROFBROADCASTREQUEST = 115, LIBLTE_S1AP_IE_ID_WARNINGTYPE = 116, LIBLTE_S1AP_IE_ID_WARNINGSECURITYINFO = 117, LIBLTE_S1AP_IE_ID_DATACODINGSCHEME = 118, LIBLTE_S1AP_IE_ID_WARNINGMESSAGECONTENTS = 119, LIBLTE_S1AP_IE_ID_BROADCASTCOMPLETEDAREALIST = 120, LIBLTE_S1AP_IE_ID_INTER_SYSTEMINFORMATIONTRANSFERTYPEEDT = 121, LIBLTE_S1AP_IE_ID_INTER_SYSTEMINFORMATIONTRANSFERTYPEMDT = 122, LIBLTE_S1AP_IE_ID_TARGET_TOSOURCE_TRANSPARENTCONTAINER = 123, LIBLTE_S1AP_IE_ID_SRVCCOPERATIONPOSSIBLE = 124, LIBLTE_S1AP_IE_ID_SRVCCHOINDICATION = 125, LIBLTE_S1AP_IE_ID_NAS_DOWNLINKCOUNT = 126, LIBLTE_S1AP_IE_ID_CSG_ID = 127, LIBLTE_S1AP_IE_ID_CSG_IDLIST = 128, LIBLTE_S1AP_IE_ID_SONCONFIGURATIONTRANSFERECT = 129, LIBLTE_S1AP_IE_ID_SONCONFIGURATIONTRANSFERMCT = 130, LIBLTE_S1AP_IE_ID_TRACECOLLECTIONENTITYIPADDRESS = 131, LIBLTE_S1AP_IE_ID_MSCLASSMARK2 = 132, LIBLTE_S1AP_IE_ID_MSCLASSMARK3 = 133, LIBLTE_S1AP_IE_ID_RRC_ESTABLISHMENT_CAUSE = 134, LIBLTE_S1AP_IE_ID_NASSECURITYPARAMETERSFROME_UTRAN = 135, LIBLTE_S1AP_IE_ID_NASSECURITYPARAMETERSTOE_UTRAN = 136, LIBLTE_S1AP_IE_ID_DEFAULTPAGINGDRX = 137, LIBLTE_S1AP_IE_ID_SOURCE_TOTARGET_TRANSPARENTCONTAINER_SECONDARY = 138, LIBLTE_S1AP_IE_ID_TARGET_TOSOURCE_TRANSPARENTCONTAINER_SECONDARY = 139, LIBLTE_S1AP_IE_ID_EUTRANROUNDTRIPDELAYESTIMATIONINFO = 140, LIBLTE_S1AP_IE_ID_BROADCASTCANCELLEDAREALIST = 141, LIBLTE_S1AP_IE_ID_CONCURRENTWARNINGMESSAGEINDICATOR = 142, LIBLTE_S1AP_IE_ID_DATA_FORWARDING_NOT_POSSIBLE = 143, LIBLTE_S1AP_IE_ID_EXTENDEDREPETITIONPERIOD = 144, LIBLTE_S1AP_IE_ID_CELLACCESSMODE = 145, LIBLTE_S1AP_IE_ID_CSGMEMBERSHIPSTATUS = 146, LIBLTE_S1AP_IE_ID_LPPA_PDU = 147, LIBLTE_S1AP_IE_ID_ROUTING_ID = 148, LIBLTE_S1AP_IE_ID_TIME_SYNCHRONIZATION_INFO = 149, LIBLTE_S1AP_IE_ID_PS_SERVICENOTAVAILABLE = 150, LIBLTE_S1AP_IE_ID_PAGINGPRIORITY = 151, LIBLTE_S1AP_IE_ID_X2TNLCONFIGURATIONINFO = 152, LIBLTE_S1AP_IE_ID_ENBX2EXTENDEDTRANSPORTLAYERADDRESSES = 153, LIBLTE_S1AP_IE_ID_GUMMEILIST = 154, LIBLTE_S1AP_IE_ID_GW_TRANSPORTLAYERADDRESS = 155, LIBLTE_S1AP_IE_ID_CORRELATION_ID = 156, LIBLTE_S1AP_IE_ID_SOURCEMME_GUMMEI = 157, LIBLTE_S1AP_IE_ID_MME_UE_S1AP_ID_2 = 158, LIBLTE_S1AP_IE_ID_REGISTEREDLAI = 159, LIBLTE_S1AP_IE_ID_RELAYNODE_INDICATOR = 160, LIBLTE_S1AP_IE_ID_TRAFFICLOADREDUCTIONINDICATION = 161, LIBLTE_S1AP_IE_ID_MDTCONFIGURATION = 162, LIBLTE_S1AP_IE_ID_MMERELAYSUPPORTINDICATOR = 163, LIBLTE_S1AP_IE_ID_GWCONTEXTRELEASEINDICATION = 164, LIBLTE_S1AP_IE_ID_MANAGEMENTBASEDMDTALLOWED = 165, LIBLTE_S1AP_IE_ID_PRIVACYINDICATOR = 166, LIBLTE_S1AP_IE_ID_TIME_UE_STAYEDINCELL_ENHANCEDGRANULARITY = 167, LIBLTE_S1AP_IE_ID_HO_CAUSE = 168, LIBLTE_S1AP_IE_ID_VOICESUPPORTMATCHINDICATOR = 169, LIBLTE_S1AP_IE_ID_GUMMEITYPE = 170, LIBLTE_S1AP_IE_ID_M3CONFIGURATION = 171, LIBLTE_S1AP_IE_ID_M4CONFIGURATION = 172, LIBLTE_S1AP_IE_ID_M5CONFIGURATION = 173, LIBLTE_S1AP_IE_ID_MDT_LOCATION_INFO = 174, LIBLTE_S1AP_IE_ID_MOBILITYINFORMATION = 175, LIBLTE_S1AP_IE_ID_TUNNEL_INFORMATION_FOR_BBF = 176, LIBLTE_S1AP_IE_ID_MANAGEMENTBASEDMDTPLMNLIST = 177, LIBLTE_S1AP_IE_ID_SIGNALLINGBASEDMDTPLMNLIST = 178, LIBLTE_S1AP_IE_ID_ULCOUNTVALUEEXTENDED = 179, LIBLTE_S1AP_IE_ID_DLCOUNTVALUEEXTENDED = 180, LIBLTE_S1AP_IE_ID_RECEIVESTATUSOFULPDCPSDUSEXTENDED = 181, LIBLTE_S1AP_IE_ID_ECGILISTFORRESTART = 182, LIBLTE_S1AP_IE_ID_SIPTO_CORRELATION_ID = 183, LIBLTE_S1AP_IE_ID_SIPTO_L_GW_TRANSPORTLAYERADDRESS = 184, LIBLTE_S1AP_IE_ID_TRANSPORTINFORMATION = 185, LIBLTE_S1AP_IE_ID_LHN_ID = 186, LIBLTE_S1AP_IE_ID_ADDITIONALCSFALLBACKINDICATOR = 187, LIBLTE_S1AP_IE_ID_TAILISTFORRESTART = 188, LIBLTE_S1AP_IE_ID_USERLOCATIONINFORMATION = 189, LIBLTE_S1AP_IE_ID_EMERGENCYAREAIDLISTFORRESTART = 190, LIBLTE_S1AP_IE_ID_KILLALLWARNINGMESSAGES = 191, LIBLTE_S1AP_IE_N_ITEMS, } LIBLTE_S1AP_IE_ENUM; static const char liblte_s1ap_ie_text[LIBLTE_S1AP_IE_N_ITEMS][64] = { "id-MME-UE-S1AP-ID", "id-HandoverType", "id-Cause", "id-SourceID", "id-TargetID", "id-spare5", "id-spare6", "id-spare7", "id-eNB-UE-S1AP-ID", "id-spare9", "id-spare10", "id-spare11", "id-E-RABSubjecttoDataForwardingList", "id-E-RABtoReleaseListHOCmd", "id-E-RABDataForwardingItem", "id-E-RABReleaseItemBearerRelComp", "id-E-RABToBeSetupListBearerSUReq", "id-E-RABToBeSetupItemBearerSUReq", "id-E-RABAdmittedList", "id-E-RABFailedToSetupListHOReqAck", "id-E-RABAdmittedItem", "id-E-RABFailedtoSetupItemHOReqAck", "id-E-RABToBeSwitchedDLList", "id-E-RABToBeSwitchedDLItem", "id-E-RABToBeSetupListCtxtSUReq", "id-TraceActivation", "id-NAS-PDU", "id-E-RABToBeSetupItemHOReq", "id-E-RABSetupListBearerSURes", "id-E-RABFailedToSetupListBearerSURes", "id-E-RABToBeModifiedListBearerModReq", "id-E-RABModifyListBearerModRes", "id-E-RABFailedToModifyList", "id-E-RABToBeReleasedList", "id-E-RABFailedToReleaseList", "id-E-RABItem", "id-E-RABToBeModifiedItemBearerModReq", "id-E-RABModifyItemBearerModRes", "id-E-RABReleaseItem", "id-E-RABSetupItemBearerSURes", "id-SecurityContext", "id-HandoverRestrictionList", "id-spare42", "id-UEPagingID", "id-pagingDRX", "id-spare45", "id-TAIList", "id-TAIItem", "id-E-RABFailedToSetupListCtxtSURes", "id-E-RABReleaseItemHOCmd", "id-E-RABSetupItemCtxtSURes", "id-E-RABSetupListCtxtSURes", "id-E-RABToBeSetupItemCtxtSUReq", "id-E-RABToBeSetupListHOReq", "id-spare54", "id-GERANtoLTEHOInformationRes", "id-spare56", "id-UTRANtoLTEHOInformationRes", "id-CriticalityDiagnostics", "id-Global-ENB-ID", "id-eNBname", "id-MMEname", "id-spare62", "id-ServedPLMNs", "id-SupportedTAs", "id-TimeToWait", "id-uEaggregateMaximumBitrate", "id-TAI", "id-spare68", "id-E-RABReleaseListBearerRelComp", "id-cdma2000PDU", "id-cdma2000RATType", "id-cdma2000SectorID", "id-SecurityKey", "id-UERadioCapability", "id-GUMMEI-ID", "id-spare76", "id-spare77", "id-E-RABInformationListItem", "id-Direct-Forwarding-Path-Availability", "id-UEIdentityIndexValue", "id-spare81", "id-spare82", "id-cdma2000HOStatus", "id-cdma2000HORequiredIndication", "id-spare85", "id-E-UTRAN-Trace-ID", "id-RelativeMMECapacity", "id-SourceMME-UE-S1AP-ID", "id-Bearers-SubjectToStatusTransfer-Item", "id-eNB-StatusTransfer-TransparentContainer", "id-UE-associatedLogicalS1-ConnectionItem", "id-ResetType", "id-UE-associatedLogicalS1-ConnectionListResAck", "id-E-RABToBeSwitchedULItem", "id-E-RABToBeSwitchedULList", "id-S-TMSI", "id-cdma2000OneXRAND", "id-RequestType", "id-UE-S1AP-IDs", "id-EUTRAN-CGI", "id-OverloadResponse", "id-cdma2000OneXSRVCCInfo", "id-E-RABFailedToBeReleasedList", "id-Source-ToTarget-TransparentContainer", "id-ServedGUMMEIs", "id-SubscriberProfileIDforRFP", "id-UESecurityCapabilities", "id-CSFallbackIndicator", "id-CNDomain", "id-E-RABReleasedList", "id-MessageIdentifier", "id-SerialNumber", "id-WarningAreaList", "id-RepetitionPeriod", "id-NumberofBroadcastRequest", "id-WarningType", "id-WarningSecurityInfo", "id-DataCodingScheme", "id-WarningMessageContents", "id-BroadcastCompletedAreaList", "id-Inter-SystemInformationTransferTypeEDT", "id-Inter-SystemInformationTransferTypeMDT", "id-Target-ToSource-TransparentContainer", "id-SRVCCOperationPossible", "id-SRVCCHOIndication", "id-NAS-DownlinkCount", "id-CSG-Id", "id-CSG-IdList", "id-SONConfigurationTransferECT", "id-SONConfigurationTransferMCT", "id-TraceCollectionEntityIPAddress", "id-MSClassmark2", "id-MSClassmark3", "id-RRC-Establishment-Cause", "id-NASSecurityParametersfromE-UTRAN", "id-NASSecurityParameterstoE-UTRAN", "id-DefaultPagingDRX", "id-Source-ToTarget-TransparentContainer-Secondary", "id-Target-ToSource-TransparentContainer-Secondary", "id-EUTRANRoundTripDelayEstimationInfo", "id-BroadcastCancelledAreaList", "id-ConcurrentWarningMessageIndicator", "id-Data-Forwarding-Not-Possible", "id-ExtendedRepetitionPeriod", "id-CellAccessMode", "id-CSGMembershipStatus", "id-LPPa-PDU", "id-Routing-ID", "id-Time-Synchronization-Info", "id-PS-ServiceNotAvailable", "id-PagingPriority", "id-x2TNLConfigurationInfo", "id-eNBX2ExtendedTransportLayerAddresses", "id-GUMMEIList", "id-GW-TransportLayerAddress", "id-Correlation-ID", "id-SourceMME-GUMMEI", "id-MME-UE-S1AP-ID-2", "id-RegisteredLAI", "id-RelayNode-Indicator", "id-TrafficLoadReductionIndication", "id-MDTConfiguration", "id-MMERelaySupportIndicator", "id-GWContextReleaseIndication", "id-ManagementBasedMDTAllowed", "id-PrivacyIndicator", "id-Time-UE-StayedInCell-EnhancedGranularity", "id-HO-Cause", "id-VoiceSupportMatchIndicator", "id-GUMMEIType", "id-M3Configuration", "id-M4Configuration", "id-M5Configuration", "id-MDT-Location-Info", "id-MobilityInformation", "id-Tunnel-Information-for-BBF", "id-ManagementBasedMDTPLMNList", "id-SignallingBasedMDTPLMNList", "id-ULCOUNTValueExtended", "id-DLCOUNTValueExtended", "id-ReceiveStatusOfULPDCPSDUsExtended", "id-ECGIListForRestart", "id-SIPTO-Correlation-ID", "id-SIPTO-L-GW-TransportLayerAddress", "id-TransportInformation", "id-LHN-ID", "id-AdditionalCSFallbackIndicator", "id-TAIListForRestart", "id-UserLocationInformation", "id-EmergencyAreaIDListForRestart", "id-KillAllWarningMessages", }; /******************************************************************************* /* ProtocolIE Criticality ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_NOTIFY, LIBLTE_S1AP_CRITICALITY_N_ITEMS, } LIBLTE_S1AP_CRITICALITY_ENUM; static const char liblte_s1ap_criticality_text[LIBLTE_S1AP_CRITICALITY_N_ITEMS][80] = { "reject", "ignore", "notify", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_criticality(LIBLTE_S1AP_CRITICALITY_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_criticality(uint8_t** ptr, LIBLTE_S1AP_CRITICALITY_ENUM* ie); /******************************************************************************* /* ProtocolIE local INTEGER ********************************************************************************/ typedef struct { uint16_t local; } LIBLTE_S1AP_LOCAL_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_local(LIBLTE_S1AP_LOCAL_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_local(uint8_t** ptr, LIBLTE_S1AP_LOCAL_STRUCT* ie); /******************************************************************************* /* ProtocolIE PrivateIE_ID CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_PRIVATEIE_ID_CHOICE_LOCAL, LIBLTE_S1AP_PRIVATEIE_ID_CHOICE_GLOBAL, LIBLTE_S1AP_PRIVATEIE_ID_CHOICE_N_ITEMS, } LIBLTE_S1AP_PRIVATEIE_ID_CHOICE_ENUM; static const char liblte_s1ap_privateie_id_choice_text[LIBLTE_S1AP_PRIVATEIE_ID_CHOICE_N_ITEMS][50] = { "local", "global", }; typedef union { LIBLTE_S1AP_LOCAL_STRUCT local; LIBLTE_ASN1_OID_STRUCT global; } LIBLTE_S1AP_PRIVATEIE_ID_CHOICE_UNION; typedef struct { LIBLTE_S1AP_PRIVATEIE_ID_CHOICE_UNION choice; LIBLTE_S1AP_PRIVATEIE_ID_CHOICE_ENUM choice_type; } LIBLTE_S1AP_PRIVATEIE_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_privateie_id(LIBLTE_S1AP_PRIVATEIE_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_privateie_id(uint8_t** ptr, LIBLTE_S1AP_PRIVATEIE_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE ProtocolExtensionID INTEGER ********************************************************************************/ typedef struct { uint16_t ProtocolExtensionID; } LIBLTE_S1AP_PROTOCOLEXTENSIONID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolextensionid(LIBLTE_S1AP_PROTOCOLEXTENSIONID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolextensionid(uint8_t** ptr, LIBLTE_S1AP_PROTOCOLEXTENSIONID_STRUCT* ie); /******************************************************************************* /* ProtocolIE TriggeringMessage ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_TRIGGERINGMESSAGE_INITIATING_MESSAGE, LIBLTE_S1AP_TRIGGERINGMESSAGE_SUCCESSFUL_OUTCOME, LIBLTE_S1AP_TRIGGERINGMESSAGE_UNSUCCESSFULL_OUTCOME, LIBLTE_S1AP_TRIGGERINGMESSAGE_N_ITEMS, } LIBLTE_S1AP_TRIGGERINGMESSAGE_ENUM; static const char liblte_s1ap_triggeringmessage_text[LIBLTE_S1AP_TRIGGERINGMESSAGE_N_ITEMS][80] = { "initiating-message", "successful-outcome", "unsuccessfull-outcome", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_triggeringmessage(LIBLTE_S1AP_TRIGGERINGMESSAGE_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_triggeringmessage(uint8_t** ptr, LIBLTE_S1AP_TRIGGERINGMESSAGE_ENUM* ie); /******************************************************************************* /* ProtocolIE Presence ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_PRESENCE_OPTIONAL, LIBLTE_S1AP_PRESENCE_CONDITIONAL, LIBLTE_S1AP_PRESENCE_MANDATORY, LIBLTE_S1AP_PRESENCE_N_ITEMS, } LIBLTE_S1AP_PRESENCE_ENUM; static const char liblte_s1ap_presence_text[LIBLTE_S1AP_PRESENCE_N_ITEMS][80] = { "optional", "conditional", "mandatory", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_presence(LIBLTE_S1AP_PRESENCE_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_presence(uint8_t** ptr, LIBLTE_S1AP_PRESENCE_ENUM* ie); /******************************************************************************* /* ProtocolIE ProtocolIE_ID INTEGER ********************************************************************************/ typedef struct { uint16_t ProtocolIE_ID; } LIBLTE_S1AP_PROTOCOLIE_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolie_id(LIBLTE_S1AP_PROTOCOLIE_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolie_id(uint8_t** ptr, LIBLTE_S1AP_PROTOCOLIE_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE ProcedureCode INTEGER ********************************************************************************/ typedef struct { uint8_t ProcedureCode; } LIBLTE_S1AP_PROCEDURECODE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_procedurecode(LIBLTE_S1AP_PROCEDURECODE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_procedurecode(uint8_t** ptr, LIBLTE_S1AP_PROCEDURECODE_STRUCT* ie); /******************************************************************************* /* ProtocolIE ProtocolIE_Field SEQUENCE ********************************************************************************/ typedef struct { LIBLTE_S1AP_PROTOCOLIE_ID_STRUCT id; LIBLTE_S1AP_CRITICALITY_ENUM criticality; LIBLTE_ASN1_OPEN_TYPE_STRUCT value; } LIBLTE_S1AP_PROTOCOLIE_FIELD_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolie_field(LIBLTE_S1AP_PROTOCOLIE_FIELD_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolie_field(uint8_t** ptr, LIBLTE_S1AP_PROTOCOLIE_FIELD_STRUCT* ie); /******************************************************************************* /* ProtocolIE ProtocolExtensionField SEQUENCE ********************************************************************************/ typedef struct { LIBLTE_S1AP_PROTOCOLEXTENSIONID_STRUCT id; LIBLTE_S1AP_CRITICALITY_ENUM criticality; LIBLTE_ASN1_OPEN_TYPE_STRUCT extensionValue; } LIBLTE_S1AP_PROTOCOLEXTENSIONFIELD_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolextensionfield(LIBLTE_S1AP_PROTOCOLEXTENSIONFIELD_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolextensionfield(uint8_t** ptr, LIBLTE_S1AP_PROTOCOLEXTENSIONFIELD_STRUCT* ie); /******************************************************************************* /* ProtocolIE ProtocolIE_FieldPair SEQUENCE ********************************************************************************/ typedef struct { LIBLTE_S1AP_PROTOCOLIE_ID_STRUCT id; LIBLTE_S1AP_CRITICALITY_ENUM firstCriticality; LIBLTE_ASN1_OPEN_TYPE_STRUCT firstValue; LIBLTE_S1AP_CRITICALITY_ENUM secondCriticality; LIBLTE_ASN1_OPEN_TYPE_STRUCT secondValue; } LIBLTE_S1AP_PROTOCOLIE_FIELDPAIR_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolie_fieldpair(LIBLTE_S1AP_PROTOCOLIE_FIELDPAIR_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolie_fieldpair(uint8_t** ptr, LIBLTE_S1AP_PROTOCOLIE_FIELDPAIR_STRUCT* ie); /******************************************************************************* /* ProtocolIE ProtocolExtensionContainer DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_PROTOCOLEXTENSIONFIELD_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolextensioncontainer(LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolextensioncontainer(uint8_t** ptr, LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE ProtocolIE_ContainerPair DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:0, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_PROTOCOLIE_FIELDPAIR_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_PROTOCOLIE_CONTAINERPAIR_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolie_containerpair(LIBLTE_S1AP_PROTOCOLIE_CONTAINERPAIR_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolie_containerpair(uint8_t** ptr, LIBLTE_S1AP_PROTOCOLIE_CONTAINERPAIR_STRUCT* ie); /******************************************************************************* /* ProtocolIE ProtocolIE_ContainerPairList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:None, ub:None typedef struct { uint32_t len; LIBLTE_S1AP_PROTOCOLIE_CONTAINERPAIR_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_PROTOCOLIE_CONTAINERPAIRLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolie_containerpairlist(LIBLTE_S1AP_PROTOCOLIE_CONTAINERPAIRLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolie_containerpairlist(uint8_t** ptr, LIBLTE_S1AP_PROTOCOLIE_CONTAINERPAIRLIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE PrivateIE_Field SEQUENCE ********************************************************************************/ typedef struct { LIBLTE_S1AP_PRIVATEIE_ID_STRUCT id; LIBLTE_S1AP_CRITICALITY_ENUM criticality; LIBLTE_ASN1_OPEN_TYPE_STRUCT value; } LIBLTE_S1AP_PRIVATEIE_FIELD_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_privateie_field(LIBLTE_S1AP_PRIVATEIE_FIELD_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_privateie_field(uint8_t** ptr, LIBLTE_S1AP_PRIVATEIE_FIELD_STRUCT* ie); /******************************************************************************* /* ProtocolIE ProtocolIE_SingleContainer SEQUENCE ********************************************************************************/ typedef struct { LIBLTE_S1AP_PROTOCOLIE_ID_STRUCT id; LIBLTE_S1AP_CRITICALITY_ENUM criticality; LIBLTE_ASN1_OPEN_TYPE_STRUCT value; } LIBLTE_S1AP_PROTOCOLIE_SINGLECONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolie_singlecontainer(LIBLTE_S1AP_PROTOCOLIE_SINGLECONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolie_singlecontainer(uint8_t** ptr, LIBLTE_S1AP_PROTOCOLIE_SINGLECONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE PrivateIE_Container DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_PRIVATEIE_FIELD_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_PRIVATEIE_CONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_privateie_container(LIBLTE_S1AP_PRIVATEIE_CONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_privateie_container(uint8_t** ptr, LIBLTE_S1AP_PRIVATEIE_CONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE BitRate INTEGER ********************************************************************************/ typedef struct { uint32_t BitRate; } LIBLTE_S1AP_BITRATE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_bitrate(LIBLTE_S1AP_BITRATE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_bitrate(uint8_t** ptr, LIBLTE_S1AP_BITRATE_STRUCT* ie); /******************************************************************************* /* ProtocolIE CauseMisc ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CAUSEMISC_CONTROL_PROCESSING_OVERLOAD, LIBLTE_S1AP_CAUSEMISC_NOT_ENOUGH_USER_PLANE_PROCESSING_RESOURCES, LIBLTE_S1AP_CAUSEMISC_HARDWARE_FAILURE, LIBLTE_S1AP_CAUSEMISC_OM_INTERVENTION, LIBLTE_S1AP_CAUSEMISC_UNSPECIFIED, LIBLTE_S1AP_CAUSEMISC_UNKNOWN_PLMN, LIBLTE_S1AP_CAUSEMISC_N_ITEMS, } LIBLTE_S1AP_CAUSEMISC_ENUM; static const char liblte_s1ap_causemisc_text[LIBLTE_S1AP_CAUSEMISC_N_ITEMS][80] = { "control-processing-overload", "not-enough-user-plane-processing-resources", "hardware-failure", "om-intervention", "unspecified", "unknown-PLMN", }; typedef struct { bool ext; LIBLTE_S1AP_CAUSEMISC_ENUM e; } LIBLTE_S1AP_CAUSEMISC_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_causemisc(LIBLTE_S1AP_CAUSEMISC_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_causemisc(uint8_t** ptr, LIBLTE_S1AP_CAUSEMISC_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE CauseRadioNetwork ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CAUSERADIONETWORK_UNSPECIFIED, LIBLTE_S1AP_CAUSERADIONETWORK_TX2RELOCOVERALL_EXPIRY, LIBLTE_S1AP_CAUSERADIONETWORK_SUCCESSFUL_HANDOVER, LIBLTE_S1AP_CAUSERADIONETWORK_RELEASE_DUE_TO_EUTRAN_GENERATED_REASON, LIBLTE_S1AP_CAUSERADIONETWORK_HANDOVER_CANCELLED, LIBLTE_S1AP_CAUSERADIONETWORK_PARTIAL_HANDOVER, LIBLTE_S1AP_CAUSERADIONETWORK_HO_FAILURE_IN_TARGET_EPC_ENB_OR_TARGET_SYSTEM, LIBLTE_S1AP_CAUSERADIONETWORK_HO_TARGET_NOT_ALLOWED, LIBLTE_S1AP_CAUSERADIONETWORK_TS1RELOCOVERALL_EXPIRY, LIBLTE_S1AP_CAUSERADIONETWORK_TS1RELOCPREP_EXPIRY, LIBLTE_S1AP_CAUSERADIONETWORK_CELL_NOT_AVAILABLE, LIBLTE_S1AP_CAUSERADIONETWORK_UNKNOWN_TARGETID, LIBLTE_S1AP_CAUSERADIONETWORK_NO_RADIO_RESOURCES_AVAILABLE_IN_TARGET_CELL, LIBLTE_S1AP_CAUSERADIONETWORK_UNKNOWN_MME_UE_S1AP_ID, LIBLTE_S1AP_CAUSERADIONETWORK_UNKNOWN_ENB_UE_S1AP_ID, LIBLTE_S1AP_CAUSERADIONETWORK_UNKNOWN_PAIR_UE_S1AP_ID, LIBLTE_S1AP_CAUSERADIONETWORK_HANDOVER_DESIRABLE_FOR_RADIO_REASON, LIBLTE_S1AP_CAUSERADIONETWORK_TIME_CRITICAL_HANDOVER, LIBLTE_S1AP_CAUSERADIONETWORK_RESOURCE_OPTIMISATION_HANDOVER, LIBLTE_S1AP_CAUSERADIONETWORK_REDUCE_LOAD_IN_SERVING_CELL, LIBLTE_S1AP_CAUSERADIONETWORK_USER_INACTIVITY, LIBLTE_S1AP_CAUSERADIONETWORK_RADIO_CONNECTION_WITH_UE_LOST, LIBLTE_S1AP_CAUSERADIONETWORK_LOAD_BALANCING_TAU_REQUIRED, LIBLTE_S1AP_CAUSERADIONETWORK_CS_FALLBACK_TRIGGERED, LIBLTE_S1AP_CAUSERADIONETWORK_UE_NOT_AVAILABLE_FOR_PS_SERVICE, LIBLTE_S1AP_CAUSERADIONETWORK_RADIO_RESOURCES_NOT_AVAILABLE, LIBLTE_S1AP_CAUSERADIONETWORK_FAILURE_IN_RADIO_INTERFACE_PROCEDURE, LIBLTE_S1AP_CAUSERADIONETWORK_INVALID_QOS_COMBINATION, LIBLTE_S1AP_CAUSERADIONETWORK_INTERRAT_REDIRECTION, LIBLTE_S1AP_CAUSERADIONETWORK_INTERACTION_WITH_OTHER_PROCEDURE, LIBLTE_S1AP_CAUSERADIONETWORK_UNKNOWN_E_RAB_ID, LIBLTE_S1AP_CAUSERADIONETWORK_MULTIPLE_E_RAB_ID_INSTANCES, LIBLTE_S1AP_CAUSERADIONETWORK_ENCRYPTION_AND_OR_INTEGRITY_PROTECTION_ALGORITHMS_NOT_SUPPORTED, LIBLTE_S1AP_CAUSERADIONETWORK_S1_INTRA_SYSTEM_HANDOVER_TRIGGERED, LIBLTE_S1AP_CAUSERADIONETWORK_S1_INTER_SYSTEM_HANDOVER_TRIGGERED, LIBLTE_S1AP_CAUSERADIONETWORK_X2_HANDOVER_TRIGGERED, LIBLTE_S1AP_CAUSERADIONETWORK_REDIRECTION_TOWARDS_1XRTT, LIBLTE_S1AP_CAUSERADIONETWORK_NOT_SUPPORTED_QCI_VALUE, LIBLTE_S1AP_CAUSERADIONETWORK_INVALID_CSG_ID, LIBLTE_S1AP_CAUSERADIONETWORK_N_ITEMS, } LIBLTE_S1AP_CAUSERADIONETWORK_ENUM; static const char liblte_s1ap_causeradionetwork_text[LIBLTE_S1AP_CAUSERADIONETWORK_N_ITEMS][80] = { "unspecified", "tx2relocoverall-expiry", "successful-handover", "release-due-to-eutran-generated-reason", "handover-cancelled", "partial-handover", "ho-failure-in-target-EPC-eNB-or-target-system", "ho-target-not-allowed", "tS1relocoverall-expiry", "tS1relocprep-expiry", "cell-not-available", "unknown-targetID", "no-radio-resources-available-in-target-cell", "unknown-mme-ue-s1ap-id", "unknown-enb-ue-s1ap-id", "unknown-pair-ue-s1ap-id", "handover-desirable-for-radio-reason", "time-critical-handover", "resource-optimisation-handover", "reduce-load-in-serving-cell", "user-inactivity", "radio-connection-with-ue-lost", "load-balancing-tau-required", "cs-fallback-triggered", "ue-not-available-for-ps-service", "radio-resources-not-available", "failure-in-radio-interface-procedure", "invalid-qos-combination", "interrat-redirection", "interaction-with-other-procedure", "unknown-E-RAB-ID", "multiple-E-RAB-ID-instances", "encryption-and-or-integrity-protection-algorithms-not-supported", "s1-intra-system-handover-triggered", "s1-inter-system-handover-triggered", "x2-handover-triggered", "redirection-towards-1xRTT", "not-supported-QCI-value", "invalid-CSG-Id", }; typedef struct { bool ext; LIBLTE_S1AP_CAUSERADIONETWORK_ENUM e; } LIBLTE_S1AP_CAUSERADIONETWORK_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_causeradionetwork(LIBLTE_S1AP_CAUSERADIONETWORK_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_causeradionetwork(uint8_t** ptr, LIBLTE_S1AP_CAUSERADIONETWORK_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE CauseNas ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CAUSENAS_NORMAL_RELEASE, LIBLTE_S1AP_CAUSENAS_AUTHENTICATION_FAILURE, LIBLTE_S1AP_CAUSENAS_DETACH, LIBLTE_S1AP_CAUSENAS_UNSPECIFIED, LIBLTE_S1AP_CAUSENAS_CSG_SUBSCRIPTION_EXPIRY, LIBLTE_S1AP_CAUSENAS_N_ITEMS, } LIBLTE_S1AP_CAUSENAS_ENUM; static const char liblte_s1ap_causenas_text[LIBLTE_S1AP_CAUSENAS_N_ITEMS][80] = { "normal-release", "authentication-failure", "detach", "unspecified", "csg-subscription-expiry", }; typedef struct { bool ext; LIBLTE_S1AP_CAUSENAS_ENUM e; } LIBLTE_S1AP_CAUSENAS_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_causenas(LIBLTE_S1AP_CAUSENAS_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_causenas(uint8_t** ptr, LIBLTE_S1AP_CAUSENAS_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE CellIdentity STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_CELLIDENTITY_BIT_STRING_LEN 28 typedef struct { uint8_t buffer[28]; } LIBLTE_S1AP_CELLIDENTITY_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellidentity(LIBLTE_S1AP_CELLIDENTITY_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellidentity(uint8_t** ptr, LIBLTE_S1AP_CELLIDENTITY_STRUCT* ie); /******************************************************************************* /* ProtocolIE Cdma2000PDU DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_CDMA2000PDU_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000pdu(LIBLTE_S1AP_CDMA2000PDU_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000pdu(uint8_t** ptr, LIBLTE_S1AP_CDMA2000PDU_STRUCT* ie); /******************************************************************************* /* ProtocolIE Cdma2000SectorID DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_CDMA2000SECTORID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000sectorid(LIBLTE_S1AP_CDMA2000SECTORID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000sectorid(uint8_t** ptr, LIBLTE_S1AP_CDMA2000SECTORID_STRUCT* ie); /******************************************************************************* /* ProtocolIE Cdma2000HORequiredIndication ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CDMA2000HOREQUIREDINDICATION_TRUE, LIBLTE_S1AP_CDMA2000HOREQUIREDINDICATION_N_ITEMS, } LIBLTE_S1AP_CDMA2000HOREQUIREDINDICATION_ENUM; static const char liblte_s1ap_cdma2000horequiredindication_text[LIBLTE_S1AP_CDMA2000HOREQUIREDINDICATION_N_ITEMS][80] = { "true", }; typedef struct { bool ext; LIBLTE_S1AP_CDMA2000HOREQUIREDINDICATION_ENUM e; } LIBLTE_S1AP_CDMA2000HOREQUIREDINDICATION_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000horequiredindication(LIBLTE_S1AP_CDMA2000HOREQUIREDINDICATION_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000horequiredindication(uint8_t** ptr, LIBLTE_S1AP_CDMA2000HOREQUIREDINDICATION_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE Cdma2000OneXMSI DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_CDMA2000ONEXMSI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000onexmsi(LIBLTE_S1AP_CDMA2000ONEXMSI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000onexmsi(uint8_t** ptr, LIBLTE_S1AP_CDMA2000ONEXMSI_STRUCT* ie); /******************************************************************************* /* ProtocolIE Cdma2000OneXRAND DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_CDMA2000ONEXRAND_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000onexrand(LIBLTE_S1AP_CDMA2000ONEXRAND_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000onexrand(uint8_t** ptr, LIBLTE_S1AP_CDMA2000ONEXRAND_STRUCT* ie); /******************************************************************************* /* ProtocolIE CNDomain ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CNDOMAIN_PS, LIBLTE_S1AP_CNDOMAIN_CS, LIBLTE_S1AP_CNDOMAIN_N_ITEMS, } LIBLTE_S1AP_CNDOMAIN_ENUM; static const char liblte_s1ap_cndomain_text[LIBLTE_S1AP_CNDOMAIN_N_ITEMS][80] = { "ps", "cs", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cndomain(LIBLTE_S1AP_CNDOMAIN_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cndomain(uint8_t** ptr, LIBLTE_S1AP_CNDOMAIN_ENUM* ie); /******************************************************************************* /* ProtocolIE Correlation_ID STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_CORRELATION_ID_OCTET_STRING_LEN 4 typedef struct { uint8_t buffer[4]; } LIBLTE_S1AP_CORRELATION_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_correlation_id(LIBLTE_S1AP_CORRELATION_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_correlation_id(uint8_t** ptr, LIBLTE_S1AP_CORRELATION_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE AdditionalCSFallbackIndicator ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_NO_RESTRICTION, LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_RESTRICTION, LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_N_ITEMS, } LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_ENUM; static const char liblte_s1ap_additionalcsfallbackindicator_text[LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_N_ITEMS] [80] = { "no-restriction", "restriction", }; typedef struct { bool ext; LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_ENUM e; } LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_additionalcsfallbackindicator(LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_additionalcsfallbackindicator(uint8_t** ptr, LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE DL_Forwarding ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_DL_FORWARDING_DL_FORWARDING_PROPOSED, LIBLTE_S1AP_DL_FORWARDING_N_ITEMS, } LIBLTE_S1AP_DL_FORWARDING_ENUM; static const char liblte_s1ap_dl_forwarding_text[LIBLTE_S1AP_DL_FORWARDING_N_ITEMS][80] = { "dL-Forwarding-proposed", }; typedef struct { bool ext; LIBLTE_S1AP_DL_FORWARDING_ENUM e; } LIBLTE_S1AP_DL_FORWARDING_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_dl_forwarding(LIBLTE_S1AP_DL_FORWARDING_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_dl_forwarding(uint8_t** ptr, LIBLTE_S1AP_DL_FORWARDING_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE Data_Forwarding_Not_Possible ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_DATA_FORWARDING_NOT_POSSIBLE_DATA_FORWARDING_NOT_POSSIBLE, LIBLTE_S1AP_DATA_FORWARDING_NOT_POSSIBLE_N_ITEMS, } LIBLTE_S1AP_DATA_FORWARDING_NOT_POSSIBLE_ENUM; static const char liblte_s1ap_data_forwarding_not_possible_text[LIBLTE_S1AP_DATA_FORWARDING_NOT_POSSIBLE_N_ITEMS][80] = { "data-Forwarding-not-Possible", }; typedef struct { bool ext; LIBLTE_S1AP_DATA_FORWARDING_NOT_POSSIBLE_ENUM e; } LIBLTE_S1AP_DATA_FORWARDING_NOT_POSSIBLE_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_data_forwarding_not_possible(LIBLTE_S1AP_DATA_FORWARDING_NOT_POSSIBLE_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_data_forwarding_not_possible(uint8_t** ptr, LIBLTE_S1AP_DATA_FORWARDING_NOT_POSSIBLE_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE EmergencyAreaID STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_EMERGENCYAREAID_OCTET_STRING_LEN 3 typedef struct { uint8_t buffer[3]; } LIBLTE_S1AP_EMERGENCYAREAID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_emergencyareaid(LIBLTE_S1AP_EMERGENCYAREAID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_emergencyareaid(uint8_t** ptr, LIBLTE_S1AP_EMERGENCYAREAID_STRUCT* ie); /******************************************************************************* /* ProtocolIE macroENB_ID STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_MACROENB_ID_BIT_STRING_LEN 20 typedef struct { uint8_t buffer[20]; } LIBLTE_S1AP_MACROENB_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_macroenb_id(LIBLTE_S1AP_MACROENB_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_macroenb_id(uint8_t** ptr, LIBLTE_S1AP_MACROENB_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE homeENB_ID STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_HOMEENB_ID_BIT_STRING_LEN 28 typedef struct { uint8_t buffer[28]; } LIBLTE_S1AP_HOMEENB_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_homeenb_id(LIBLTE_S1AP_HOMEENB_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_homeenb_id(uint8_t** ptr, LIBLTE_S1AP_HOMEENB_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE ENB_ID CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_ENB_ID_CHOICE_MACROENB_ID, LIBLTE_S1AP_ENB_ID_CHOICE_HOMEENB_ID, LIBLTE_S1AP_ENB_ID_CHOICE_N_ITEMS, } LIBLTE_S1AP_ENB_ID_CHOICE_ENUM; static const char liblte_s1ap_enb_id_choice_text[LIBLTE_S1AP_ENB_ID_CHOICE_N_ITEMS][50] = { "macroENB_ID", "homeENB_ID", }; typedef union { LIBLTE_S1AP_MACROENB_ID_STRUCT macroENB_ID; LIBLTE_S1AP_HOMEENB_ID_STRUCT homeENB_ID; } LIBLTE_S1AP_ENB_ID_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_ENB_ID_CHOICE_UNION choice; LIBLTE_S1AP_ENB_ID_CHOICE_ENUM choice_type; } LIBLTE_S1AP_ENB_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enb_id(LIBLTE_S1AP_ENB_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enb_id(uint8_t** ptr, LIBLTE_S1AP_ENB_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE ENBname PrintableString ********************************************************************************/ typedef struct { bool ext; uint32_t n_octets; uint8_t buffer[150]; } LIBLTE_S1AP_ENBNAME_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbname(LIBLTE_S1AP_ENBNAME_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbname(uint8_t** ptr, LIBLTE_S1AP_ENBNAME_STRUCT* ie); /******************************************************************************* /* ProtocolIE EncryptionAlgorithms STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_ENCRYPTIONALGORITHMS_BIT_STRING_LEN 16 typedef struct { bool ext; uint8_t buffer[16]; } LIBLTE_S1AP_ENCRYPTIONALGORITHMS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_encryptionalgorithms(LIBLTE_S1AP_ENCRYPTIONALGORITHMS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_encryptionalgorithms(uint8_t** ptr, LIBLTE_S1AP_ENCRYPTIONALGORITHMS_STRUCT* ie); /******************************************************************************* /* ProtocolIE EventType ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_EVENTTYPE_DIRECT, LIBLTE_S1AP_EVENTTYPE_CHANGE_OF_SERVE_CELL, LIBLTE_S1AP_EVENTTYPE_STOP_CHANGE_OF_SERVE_CELL, LIBLTE_S1AP_EVENTTYPE_N_ITEMS, } LIBLTE_S1AP_EVENTTYPE_ENUM; static const char liblte_s1ap_eventtype_text[LIBLTE_S1AP_EVENTTYPE_N_ITEMS][80] = { "direct", "change-of-serve-cell", "stop-change-of-serve-cell", }; typedef struct { bool ext; LIBLTE_S1AP_EVENTTYPE_ENUM e; } LIBLTE_S1AP_EVENTTYPE_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_eventtype(LIBLTE_S1AP_EVENTTYPE_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_eventtype(uint8_t** ptr, LIBLTE_S1AP_EVENTTYPE_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE ExtendedRNC_ID INTEGER ********************************************************************************/ typedef struct { uint16_t ExtendedRNC_ID; } LIBLTE_S1AP_EXTENDEDRNC_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_extendedrnc_id(LIBLTE_S1AP_EXTENDEDRNC_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_extendedrnc_id(uint8_t** ptr, LIBLTE_S1AP_EXTENDEDRNC_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE ForbiddenInterRATs ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_FORBIDDENINTERRATS_ALL, LIBLTE_S1AP_FORBIDDENINTERRATS_GERAN, LIBLTE_S1AP_FORBIDDENINTERRATS_UTRAN, LIBLTE_S1AP_FORBIDDENINTERRATS_CDMA2000, LIBLTE_S1AP_FORBIDDENINTERRATS_GERANANDUTRAN, LIBLTE_S1AP_FORBIDDENINTERRATS_CDMA2000ANDUTRAN, LIBLTE_S1AP_FORBIDDENINTERRATS_N_ITEMS, } LIBLTE_S1AP_FORBIDDENINTERRATS_ENUM; static const char liblte_s1ap_forbiddeninterrats_text[LIBLTE_S1AP_FORBIDDENINTERRATS_N_ITEMS][80] = { "all", "geran", "utran", "cdma2000", "geranandutran", "cdma2000andutran", }; typedef struct { bool ext; LIBLTE_S1AP_FORBIDDENINTERRATS_ENUM e; } LIBLTE_S1AP_FORBIDDENINTERRATS_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_forbiddeninterrats(LIBLTE_S1AP_FORBIDDENINTERRATS_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_forbiddeninterrats(uint8_t** ptr, LIBLTE_S1AP_FORBIDDENINTERRATS_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE GWContextReleaseIndication ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_GWCONTEXTRELEASEINDICATION_TRUE, LIBLTE_S1AP_GWCONTEXTRELEASEINDICATION_N_ITEMS, } LIBLTE_S1AP_GWCONTEXTRELEASEINDICATION_ENUM; static const char liblte_s1ap_gwcontextreleaseindication_text[LIBLTE_S1AP_GWCONTEXTRELEASEINDICATION_N_ITEMS][80] = { "true", }; typedef struct { bool ext; LIBLTE_S1AP_GWCONTEXTRELEASEINDICATION_ENUM e; } LIBLTE_S1AP_GWCONTEXTRELEASEINDICATION_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_gwcontextreleaseindication(LIBLTE_S1AP_GWCONTEXTRELEASEINDICATION_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_gwcontextreleaseindication(uint8_t** ptr, LIBLTE_S1AP_GWCONTEXTRELEASEINDICATION_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE HFN INTEGER ********************************************************************************/ typedef struct { uint32_t HFN; } LIBLTE_S1AP_HFN_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_hfn(LIBLTE_S1AP_HFN_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_hfn(uint8_t** ptr, LIBLTE_S1AP_HFN_STRUCT* ie); /******************************************************************************* /* ProtocolIE IMSI DYNAMIC OCTET STRING ********************************************************************************/ // lb:3, ub:8 typedef struct { uint32_t n_octets; uint8_t buffer[8]; } LIBLTE_S1AP_IMSI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_imsi(LIBLTE_S1AP_IMSI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_imsi(uint8_t** ptr, LIBLTE_S1AP_IMSI_STRUCT* ie); /******************************************************************************* /* ProtocolIE InterfacesToTrace STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_INTERFACESTOTRACE_BIT_STRING_LEN 8 typedef struct { uint8_t buffer[8]; } LIBLTE_S1AP_INTERFACESTOTRACE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_interfacestotrace(LIBLTE_S1AP_INTERFACESTOTRACE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_interfacestotrace(uint8_t** ptr, LIBLTE_S1AP_INTERFACESTOTRACE_STRUCT* ie); /******************************************************************************* /* ProtocolIE LAC STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_LAC_OCTET_STRING_LEN 2 typedef struct { uint8_t buffer[2]; } LIBLTE_S1AP_LAC_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_lac(LIBLTE_S1AP_LAC_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lac(uint8_t** ptr, LIBLTE_S1AP_LAC_STRUCT* ie); /******************************************************************************* /* ProtocolIE LastVisitedUTRANCellInformation DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_LASTVISITEDUTRANCELLINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_lastvisitedutrancellinformation(LIBLTE_S1AP_LASTVISITEDUTRANCELLINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lastvisitedutrancellinformation(uint8_t** ptr, LIBLTE_S1AP_LASTVISITEDUTRANCELLINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE L3_Information DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_L3_INFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_l3_information(LIBLTE_S1AP_L3_INFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_l3_information(uint8_t** ptr, LIBLTE_S1AP_L3_INFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE LHN_ID DYNAMIC OCTET STRING ********************************************************************************/ // lb:32, ub:256 typedef struct { uint32_t n_octets; uint8_t buffer[256]; } LIBLTE_S1AP_LHN_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_lhn_id(LIBLTE_S1AP_LHN_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lhn_id(uint8_t** ptr, LIBLTE_S1AP_LHN_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE LoggingDuration ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_LOGGINGDURATION_M10, LIBLTE_S1AP_LOGGINGDURATION_M20, LIBLTE_S1AP_LOGGINGDURATION_M40, LIBLTE_S1AP_LOGGINGDURATION_M60, LIBLTE_S1AP_LOGGINGDURATION_M90, LIBLTE_S1AP_LOGGINGDURATION_M120, LIBLTE_S1AP_LOGGINGDURATION_N_ITEMS, } LIBLTE_S1AP_LOGGINGDURATION_ENUM; static const char liblte_s1ap_loggingduration_text[LIBLTE_S1AP_LOGGINGDURATION_N_ITEMS][80] = { "m10", "m20", "m40", "m60", "m90", "m120", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_loggingduration(LIBLTE_S1AP_LOGGINGDURATION_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_loggingduration(uint8_t** ptr, LIBLTE_S1AP_LOGGINGDURATION_ENUM* ie); /******************************************************************************* /* ProtocolIE MDT_Activation ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_MDT_ACTIVATION_IMMEDIATE_MDT_ONLY, LIBLTE_S1AP_MDT_ACTIVATION_IMMEDIATE_MDT_AND_TRACE, LIBLTE_S1AP_MDT_ACTIVATION_LOGGED_MDT_ONLY, LIBLTE_S1AP_MDT_ACTIVATION_N_ITEMS, } LIBLTE_S1AP_MDT_ACTIVATION_ENUM; static const char liblte_s1ap_mdt_activation_text[LIBLTE_S1AP_MDT_ACTIVATION_N_ITEMS][80] = { "immediate-MDT-only", "immediate-MDT-and-Trace", "logged-MDT-only", }; typedef struct { bool ext; LIBLTE_S1AP_MDT_ACTIVATION_ENUM e; } LIBLTE_S1AP_MDT_ACTIVATION_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mdt_activation(LIBLTE_S1AP_MDT_ACTIVATION_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mdt_activation(uint8_t** ptr, LIBLTE_S1AP_MDT_ACTIVATION_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE ManagementBasedMDTAllowed ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_MANAGEMENTBASEDMDTALLOWED_ALLOWED, LIBLTE_S1AP_MANAGEMENTBASEDMDTALLOWED_N_ITEMS, } LIBLTE_S1AP_MANAGEMENTBASEDMDTALLOWED_ENUM; static const char liblte_s1ap_managementbasedmdtallowed_text[LIBLTE_S1AP_MANAGEMENTBASEDMDTALLOWED_N_ITEMS][80] = { "allowed", }; typedef struct { bool ext; LIBLTE_S1AP_MANAGEMENTBASEDMDTALLOWED_ENUM e; } LIBLTE_S1AP_MANAGEMENTBASEDMDTALLOWED_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_managementbasedmdtallowed(LIBLTE_S1AP_MANAGEMENTBASEDMDTALLOWED_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_managementbasedmdtallowed(uint8_t** ptr, LIBLTE_S1AP_MANAGEMENTBASEDMDTALLOWED_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE PrivacyIndicator ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_PRIVACYINDICATOR_IMMEDIATE_MDT, LIBLTE_S1AP_PRIVACYINDICATOR_LOGGED_MDT, LIBLTE_S1AP_PRIVACYINDICATOR_N_ITEMS, } LIBLTE_S1AP_PRIVACYINDICATOR_ENUM; static const char liblte_s1ap_privacyindicator_text[LIBLTE_S1AP_PRIVACYINDICATOR_N_ITEMS][80] = { "immediate-MDT", "logged-MDT", }; typedef struct { bool ext; LIBLTE_S1AP_PRIVACYINDICATOR_ENUM e; } LIBLTE_S1AP_PRIVACYINDICATOR_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_privacyindicator(LIBLTE_S1AP_PRIVACYINDICATOR_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_privacyindicator(uint8_t** ptr, LIBLTE_S1AP_PRIVACYINDICATOR_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE MeasurementsToActivate STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_MEASUREMENTSTOACTIVATE_BIT_STRING_LEN 8 typedef struct { uint8_t buffer[8]; } LIBLTE_S1AP_MEASUREMENTSTOACTIVATE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_measurementstoactivate(LIBLTE_S1AP_MEASUREMENTSTOACTIVATE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_measurementstoactivate(uint8_t** ptr, LIBLTE_S1AP_MEASUREMENTSTOACTIVATE_STRUCT* ie); /******************************************************************************* /* ProtocolIE MessageIdentifier STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_MESSAGEIDENTIFIER_BIT_STRING_LEN 16 typedef struct { uint8_t buffer[16]; } LIBLTE_S1AP_MESSAGEIDENTIFIER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_messageidentifier(LIBLTE_S1AP_MESSAGEIDENTIFIER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_messageidentifier(uint8_t** ptr, LIBLTE_S1AP_MESSAGEIDENTIFIER_STRUCT* ie); /******************************************************************************* /* ProtocolIE MMEname PrintableString ********************************************************************************/ typedef struct { bool ext; uint32_t n_octets; uint8_t buffer[150]; } LIBLTE_S1AP_MMENAME_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mmename(LIBLTE_S1AP_MMENAME_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mmename(uint8_t** ptr, LIBLTE_S1AP_MMENAME_STRUCT* ie); /******************************************************************************* /* ProtocolIE MME_Group_ID STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_MME_GROUP_ID_OCTET_STRING_LEN 2 typedef struct { uint8_t buffer[2]; } LIBLTE_S1AP_MME_GROUP_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mme_group_id(LIBLTE_S1AP_MME_GROUP_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mme_group_id(uint8_t** ptr, LIBLTE_S1AP_MME_GROUP_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE MME_UE_S1AP_ID INTEGER ********************************************************************************/ typedef struct { uint32_t MME_UE_S1AP_ID; } LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mme_ue_s1ap_id(LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mme_ue_s1ap_id(uint8_t** ptr, LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE MSClassmark2 DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_MSCLASSMARK2_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_msclassmark2(LIBLTE_S1AP_MSCLASSMARK2_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_msclassmark2(uint8_t** ptr, LIBLTE_S1AP_MSCLASSMARK2_STRUCT* ie); /******************************************************************************* /* ProtocolIE NAS_PDU DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_NAS_PDU_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_nas_pdu(LIBLTE_S1AP_NAS_PDU_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_nas_pdu(uint8_t** ptr, LIBLTE_S1AP_NAS_PDU_STRUCT* ie); /******************************************************************************* /* ProtocolIE NASSecurityParameterstoE_UTRAN DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_NASSECURITYPARAMETERSTOE_UTRAN_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_nassecurityparameterstoe_utran(LIBLTE_S1AP_NASSECURITYPARAMETERSTOE_UTRAN_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_nassecurityparameterstoe_utran(uint8_t** ptr, LIBLTE_S1AP_NASSECURITYPARAMETERSTOE_UTRAN_STRUCT* ie); /******************************************************************************* /* ProtocolIE NumberOfBroadcasts INTEGER ********************************************************************************/ typedef struct { uint16_t NumberOfBroadcasts; } LIBLTE_S1AP_NUMBEROFBROADCASTS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_numberofbroadcasts(LIBLTE_S1AP_NUMBEROFBROADCASTS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_numberofbroadcasts(uint8_t** ptr, LIBLTE_S1AP_NUMBEROFBROADCASTS_STRUCT* ie); /******************************************************************************* /* ProtocolIE OverloadAction ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_OVERLOADACTION_REJECT_NON_EMERGENCY_MO_DT, LIBLTE_S1AP_OVERLOADACTION_REJECT_RRC_CR_SIGNALLING, LIBLTE_S1AP_OVERLOADACTION_PERMIT_EMERGENCY_SESSIONS_AND_MOBILE_TERMINATED_SERVICES_ONLY, LIBLTE_S1AP_OVERLOADACTION_PERMIT_HIGH_PRIORITY_SESSIONS_AND_MOBILE_TERMINATED_SERVICES_ONLY, LIBLTE_S1AP_OVERLOADACTION_REJECT_DELAY_TOLERANT_ACCESS, LIBLTE_S1AP_OVERLOADACTION_N_ITEMS, } LIBLTE_S1AP_OVERLOADACTION_ENUM; static const char liblte_s1ap_overloadaction_text[LIBLTE_S1AP_OVERLOADACTION_N_ITEMS][80] = { "reject-non-emergency-mo-dt", "reject-rrc-cr-signalling", "permit-emergency-sessions-and-mobile-terminated-services-only", "permit-high-priority-sessions-and-mobile-terminated-services-only", "reject-delay-tolerant-access", }; typedef struct { bool ext; LIBLTE_S1AP_OVERLOADACTION_ENUM e; } LIBLTE_S1AP_OVERLOADACTION_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_overloadaction(LIBLTE_S1AP_OVERLOADACTION_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_overloadaction(uint8_t** ptr, LIBLTE_S1AP_OVERLOADACTION_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE PagingDRX ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_PAGINGDRX_V32, LIBLTE_S1AP_PAGINGDRX_V64, LIBLTE_S1AP_PAGINGDRX_V128, LIBLTE_S1AP_PAGINGDRX_V256, LIBLTE_S1AP_PAGINGDRX_N_ITEMS, } LIBLTE_S1AP_PAGINGDRX_ENUM; static const char liblte_s1ap_pagingdrx_text[LIBLTE_S1AP_PAGINGDRX_N_ITEMS][80] = { "v32", "v64", "v128", "v256", }; typedef struct { bool ext; LIBLTE_S1AP_PAGINGDRX_ENUM e; } LIBLTE_S1AP_PAGINGDRX_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_pagingdrx(LIBLTE_S1AP_PAGINGDRX_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_pagingdrx(uint8_t** ptr, LIBLTE_S1AP_PAGINGDRX_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE PDCP_SN INTEGER ********************************************************************************/ typedef struct { uint16_t PDCP_SN; } LIBLTE_S1AP_PDCP_SN_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_pdcp_sn(LIBLTE_S1AP_PDCP_SN_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_pdcp_sn(uint8_t** ptr, LIBLTE_S1AP_PDCP_SN_STRUCT* ie); /******************************************************************************* /* ProtocolIE Port_Number STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_PORT_NUMBER_OCTET_STRING_LEN 2 typedef struct { uint8_t buffer[2]; } LIBLTE_S1AP_PORT_NUMBER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_port_number(LIBLTE_S1AP_PORT_NUMBER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_port_number(uint8_t** ptr, LIBLTE_S1AP_PORT_NUMBER_STRUCT* ie); /******************************************************************************* /* ProtocolIE Pre_emptionVulnerability ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_PRE_EMPTIONVULNERABILITY_NOT_PRE_EMPTABLE, LIBLTE_S1AP_PRE_EMPTIONVULNERABILITY_PRE_EMPTABLE, LIBLTE_S1AP_PRE_EMPTIONVULNERABILITY_N_ITEMS, } LIBLTE_S1AP_PRE_EMPTIONVULNERABILITY_ENUM; static const char liblte_s1ap_pre_emptionvulnerability_text[LIBLTE_S1AP_PRE_EMPTIONVULNERABILITY_N_ITEMS][80] = { "not-pre-emptable", "pre-emptable", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_pre_emptionvulnerability(LIBLTE_S1AP_PRE_EMPTIONVULNERABILITY_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_pre_emptionvulnerability(uint8_t** ptr, LIBLTE_S1AP_PRE_EMPTIONVULNERABILITY_ENUM* ie); /******************************************************************************* /* ProtocolIE PS_ServiceNotAvailable ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_PS_SERVICENOTAVAILABLE_PS_SERVICE_NOT_AVAILABLE, LIBLTE_S1AP_PS_SERVICENOTAVAILABLE_N_ITEMS, } LIBLTE_S1AP_PS_SERVICENOTAVAILABLE_ENUM; static const char liblte_s1ap_ps_servicenotavailable_text[LIBLTE_S1AP_PS_SERVICENOTAVAILABLE_N_ITEMS][80] = { "ps-service-not-available", }; typedef struct { bool ext; LIBLTE_S1AP_PS_SERVICENOTAVAILABLE_ENUM e; } LIBLTE_S1AP_PS_SERVICENOTAVAILABLE_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ps_servicenotavailable(LIBLTE_S1AP_PS_SERVICENOTAVAILABLE_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ps_servicenotavailable(uint8_t** ptr, LIBLTE_S1AP_PS_SERVICENOTAVAILABLE_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE ReceiveStatusofULPDCPSDUs STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_RECEIVESTATUSOFULPDCPSDUS_BIT_STRING_LEN 4096 typedef struct { uint8_t buffer[4096]; } LIBLTE_S1AP_RECEIVESTATUSOFULPDCPSDUS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_receivestatusofulpdcpsdus(LIBLTE_S1AP_RECEIVESTATUSOFULPDCPSDUS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_receivestatusofulpdcpsdus(uint8_t** ptr, LIBLTE_S1AP_RECEIVESTATUSOFULPDCPSDUS_STRUCT* ie); /******************************************************************************* /* ProtocolIE RelativeMMECapacity INTEGER ********************************************************************************/ typedef struct { uint8_t RelativeMMECapacity; } LIBLTE_S1AP_RELATIVEMMECAPACITY_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_relativemmecapacity(LIBLTE_S1AP_RELATIVEMMECAPACITY_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_relativemmecapacity(uint8_t** ptr, LIBLTE_S1AP_RELATIVEMMECAPACITY_STRUCT* ie); /******************************************************************************* /* ProtocolIE RAC STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_RAC_OCTET_STRING_LEN 1 typedef struct { uint8_t buffer[1]; } LIBLTE_S1AP_RAC_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_rac(LIBLTE_S1AP_RAC_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_rac(uint8_t** ptr, LIBLTE_S1AP_RAC_STRUCT* ie); /******************************************************************************* /* ProtocolIE ReportIntervalMDT ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_REPORTINTERVALMDT_MS120, LIBLTE_S1AP_REPORTINTERVALMDT_MS240, LIBLTE_S1AP_REPORTINTERVALMDT_MS480, LIBLTE_S1AP_REPORTINTERVALMDT_MS640, LIBLTE_S1AP_REPORTINTERVALMDT_MS1024, LIBLTE_S1AP_REPORTINTERVALMDT_MS2048, LIBLTE_S1AP_REPORTINTERVALMDT_MS5120, LIBLTE_S1AP_REPORTINTERVALMDT_MS10240, LIBLTE_S1AP_REPORTINTERVALMDT_MIN1, LIBLTE_S1AP_REPORTINTERVALMDT_MIN6, LIBLTE_S1AP_REPORTINTERVALMDT_MIN12, LIBLTE_S1AP_REPORTINTERVALMDT_MIN30, LIBLTE_S1AP_REPORTINTERVALMDT_MIN60, LIBLTE_S1AP_REPORTINTERVALMDT_N_ITEMS, } LIBLTE_S1AP_REPORTINTERVALMDT_ENUM; static const char liblte_s1ap_reportintervalmdt_text[LIBLTE_S1AP_REPORTINTERVALMDT_N_ITEMS][80] = { "ms120", "ms240", "ms480", "ms640", "ms1024", "ms2048", "ms5120", "ms10240", "min1", "min6", "min12", "min30", "min60", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_reportintervalmdt(LIBLTE_S1AP_REPORTINTERVALMDT_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_reportintervalmdt(uint8_t** ptr, LIBLTE_S1AP_REPORTINTERVALMDT_ENUM* ie); /******************************************************************************* /* ProtocolIE ReportArea ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_REPORTAREA_ECGI, LIBLTE_S1AP_REPORTAREA_N_ITEMS, } LIBLTE_S1AP_REPORTAREA_ENUM; static const char liblte_s1ap_reportarea_text[LIBLTE_S1AP_REPORTAREA_N_ITEMS][80] = { "ecgi", }; typedef struct { bool ext; LIBLTE_S1AP_REPORTAREA_ENUM e; } LIBLTE_S1AP_REPORTAREA_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_reportarea(LIBLTE_S1AP_REPORTAREA_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_reportarea(uint8_t** ptr, LIBLTE_S1AP_REPORTAREA_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE RNC_ID INTEGER ********************************************************************************/ typedef struct { uint16_t RNC_ID; } LIBLTE_S1AP_RNC_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_rnc_id(LIBLTE_S1AP_RNC_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_rnc_id(uint8_t** ptr, LIBLTE_S1AP_RNC_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE RRC_Establishment_Cause ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_EMERGENCY, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_HIGHPRIORITYACCESS, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_MT_ACCESS, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_MO_SIGNALLING, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_MO_DATA, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_DELAY_TOLERANTACCESS, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_N_ITEMS, } LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM; static const char liblte_s1ap_rrc_establishment_cause_text[LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_N_ITEMS][80] = { "emergency", "highPriorityAccess", "mt-Access", "mo-Signalling", "mo-Data", "delay-TolerantAccess", }; typedef struct { bool ext; LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM e; } LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_rrc_establishment_cause(LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_rrc_establishment_cause(uint8_t** ptr, LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE Routing_ID INTEGER ********************************************************************************/ typedef struct { uint8_t Routing_ID; } LIBLTE_S1AP_ROUTING_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_routing_id(LIBLTE_S1AP_ROUTING_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_routing_id(uint8_t** ptr, LIBLTE_S1AP_ROUTING_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE SONInformationRequest ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_SONINFORMATIONREQUEST_X2TNL_CONFIGURATION_INFO, LIBLTE_S1AP_SONINFORMATIONREQUEST_TIME_SYNCHRONIZATION_INFO, LIBLTE_S1AP_SONINFORMATIONREQUEST_N_ITEMS, } LIBLTE_S1AP_SONINFORMATIONREQUEST_ENUM; static const char liblte_s1ap_soninformationrequest_text[LIBLTE_S1AP_SONINFORMATIONREQUEST_N_ITEMS][80] = { "x2TNL-Configuration-Info", "time-Synchronization-Info", }; typedef struct { bool ext; LIBLTE_S1AP_SONINFORMATIONREQUEST_ENUM e; } LIBLTE_S1AP_SONINFORMATIONREQUEST_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_soninformationrequest(LIBLTE_S1AP_SONINFORMATIONREQUEST_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_soninformationrequest(uint8_t** ptr, LIBLTE_S1AP_SONINFORMATIONREQUEST_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE Source_ToTarget_TransparentContainer DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_SOURCE_TOTARGET_TRANSPARENTCONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_source_totarget_transparentcontainer(LIBLTE_S1AP_SOURCE_TOTARGET_TRANSPARENTCONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_source_totarget_transparentcontainer(uint8_t** ptr, LIBLTE_S1AP_SOURCE_TOTARGET_TRANSPARENTCONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE SRVCCHOIndication ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_SRVCCHOINDICATION_PSANDCS, LIBLTE_S1AP_SRVCCHOINDICATION_CSONLY, LIBLTE_S1AP_SRVCCHOINDICATION_N_ITEMS, } LIBLTE_S1AP_SRVCCHOINDICATION_ENUM; static const char liblte_s1ap_srvcchoindication_text[LIBLTE_S1AP_SRVCCHOINDICATION_N_ITEMS][80] = { "pSandCS", "cSonly", }; typedef struct { bool ext; LIBLTE_S1AP_SRVCCHOINDICATION_ENUM e; } LIBLTE_S1AP_SRVCCHOINDICATION_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_srvcchoindication(LIBLTE_S1AP_SRVCCHOINDICATION_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_srvcchoindication(uint8_t** ptr, LIBLTE_S1AP_SRVCCHOINDICATION_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE SourceRNC_ToTargetRNC_TransparentContainer DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_SOURCERNC_TOTARGETRNC_TRANSPARENTCONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_sourcernc_totargetrnc_transparentcontainer( LIBLTE_S1AP_SOURCERNC_TOTARGETRNC_TRANSPARENTCONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_sourcernc_totargetrnc_transparentcontainer( uint8_t** ptr, LIBLTE_S1AP_SOURCERNC_TOTARGETRNC_TRANSPARENTCONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE SubscriberProfileIDforRFP INTEGER ********************************************************************************/ typedef struct { uint8_t SubscriberProfileIDforRFP; } LIBLTE_S1AP_SUBSCRIBERPROFILEIDFORRFP_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_subscriberprofileidforrfp(LIBLTE_S1AP_SUBSCRIBERPROFILEIDFORRFP_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_subscriberprofileidforrfp(uint8_t** ptr, LIBLTE_S1AP_SUBSCRIBERPROFILEIDFORRFP_STRUCT* ie); /******************************************************************************* /* ProtocolIE SynchronizationStatus ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_SYNCHRONIZATIONSTATUS_SYNCHRONOUS, LIBLTE_S1AP_SYNCHRONIZATIONSTATUS_ASYNCHRONOUS, LIBLTE_S1AP_SYNCHRONIZATIONSTATUS_N_ITEMS, } LIBLTE_S1AP_SYNCHRONIZATIONSTATUS_ENUM; static const char liblte_s1ap_synchronizationstatus_text[LIBLTE_S1AP_SYNCHRONIZATIONSTATUS_N_ITEMS][80] = { "synchronous", "asynchronous", }; typedef struct { bool ext; LIBLTE_S1AP_SYNCHRONIZATIONSTATUS_ENUM e; } LIBLTE_S1AP_SYNCHRONIZATIONSTATUS_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_synchronizationstatus(LIBLTE_S1AP_SYNCHRONIZATIONSTATUS_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_synchronizationstatus(uint8_t** ptr, LIBLTE_S1AP_SYNCHRONIZATIONSTATUS_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE TargetRNC_ToSourceRNC_TransparentContainer DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_TARGETRNC_TOSOURCERNC_TRANSPARENTCONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetrnc_tosourcernc_transparentcontainer( LIBLTE_S1AP_TARGETRNC_TOSOURCERNC_TRANSPARENTCONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetrnc_tosourcernc_transparentcontainer( uint8_t** ptr, LIBLTE_S1AP_TARGETRNC_TOSOURCERNC_TRANSPARENTCONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE Threshold_RSRQ INTEGER ********************************************************************************/ typedef struct { uint8_t Threshold_RSRQ; } LIBLTE_S1AP_THRESHOLD_RSRQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_threshold_rsrq(LIBLTE_S1AP_THRESHOLD_RSRQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_threshold_rsrq(uint8_t** ptr, LIBLTE_S1AP_THRESHOLD_RSRQ_STRUCT* ie); /******************************************************************************* /* ProtocolIE Time_UE_StayedInCell INTEGER ********************************************************************************/ typedef struct { uint16_t Time_UE_StayedInCell; } LIBLTE_S1AP_TIME_UE_STAYEDINCELL_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_time_ue_stayedincell(LIBLTE_S1AP_TIME_UE_STAYEDINCELL_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_time_ue_stayedincell(uint8_t** ptr, LIBLTE_S1AP_TIME_UE_STAYEDINCELL_STRUCT* ie); /******************************************************************************* /* ProtocolIE TransportLayerAddress DYNAMIC BIT STRING ********************************************************************************/ // lb:1, ub:160 typedef struct { bool ext; uint32_t n_bits; uint8_t buffer[160]; } LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_transportlayeraddress(LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_transportlayeraddress(uint8_t** ptr, LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT* ie); /******************************************************************************* /* ProtocolIE TraceDepth ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_TRACEDEPTH_MINIMUM, LIBLTE_S1AP_TRACEDEPTH_MEDIUM, LIBLTE_S1AP_TRACEDEPTH_MAXIMUM, LIBLTE_S1AP_TRACEDEPTH_MINIMUMWITHOUTVENDORSPECIFICEXTENSION, LIBLTE_S1AP_TRACEDEPTH_MEDIUMWITHOUTVENDORSPECIFICEXTENSION, LIBLTE_S1AP_TRACEDEPTH_MAXIMUMWITHOUTVENDORSPECIFICEXTENSION, LIBLTE_S1AP_TRACEDEPTH_N_ITEMS, } LIBLTE_S1AP_TRACEDEPTH_ENUM; static const char liblte_s1ap_tracedepth_text[LIBLTE_S1AP_TRACEDEPTH_N_ITEMS][80] = { "minimum", "medium", "maximum", "minimumWithoutVendorSpecificExtension", "mediumWithoutVendorSpecificExtension", "maximumWithoutVendorSpecificExtension", }; typedef struct { bool ext; LIBLTE_S1AP_TRACEDEPTH_ENUM e; } LIBLTE_S1AP_TRACEDEPTH_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tracedepth(LIBLTE_S1AP_TRACEDEPTH_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tracedepth(uint8_t** ptr, LIBLTE_S1AP_TRACEDEPTH_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE TrafficLoadReductionIndication INTEGER ********************************************************************************/ typedef struct { uint8_t TrafficLoadReductionIndication; } LIBLTE_S1AP_TRAFFICLOADREDUCTIONINDICATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_trafficloadreductionindication(LIBLTE_S1AP_TRAFFICLOADREDUCTIONINDICATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_trafficloadreductionindication(uint8_t** ptr, LIBLTE_S1AP_TRAFFICLOADREDUCTIONINDICATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE UERadioCapability DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_UERADIOCAPABILITY_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ueradiocapability(LIBLTE_S1AP_UERADIOCAPABILITY_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ueradiocapability(uint8_t** ptr, LIBLTE_S1AP_UERADIOCAPABILITY_STRUCT* ie); /******************************************************************************* /* ProtocolIE WarningType STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_WARNINGTYPE_OCTET_STRING_LEN 2 typedef struct { uint8_t buffer[2]; } LIBLTE_S1AP_WARNINGTYPE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_warningtype(LIBLTE_S1AP_WARNINGTYPE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_warningtype(uint8_t** ptr, LIBLTE_S1AP_WARNINGTYPE_STRUCT* ie); /******************************************************************************* /* ProtocolIE WarningMessageContents DYNAMIC OCTET STRING ********************************************************************************/ // lb:1, ub:9600 typedef struct { uint32_t n_octets; uint8_t buffer[9600]; } LIBLTE_S1AP_WARNINGMESSAGECONTENTS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_warningmessagecontents(LIBLTE_S1AP_WARNINGMESSAGECONTENTS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_warningmessagecontents(uint8_t** ptr, LIBLTE_S1AP_WARNINGMESSAGECONTENTS_STRUCT* ie); /******************************************************************************* /* ProtocolIE CauseProtocol ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CAUSEPROTOCOL_TRANSFER_SYNTAX_ERROR, LIBLTE_S1AP_CAUSEPROTOCOL_ABSTRACT_SYNTAX_ERROR_REJECT, LIBLTE_S1AP_CAUSEPROTOCOL_ABSTRACT_SYNTAX_ERROR_IGNORE_AND_NOTIFY, LIBLTE_S1AP_CAUSEPROTOCOL_MESSAGE_NOT_COMPATIBLE_WITH_RECEIVER_STATE, LIBLTE_S1AP_CAUSEPROTOCOL_SEMANTIC_ERROR, LIBLTE_S1AP_CAUSEPROTOCOL_ABSTRACT_SYNTAX_ERROR_FALSELY_CONSTRUCTED_MESSAGE, LIBLTE_S1AP_CAUSEPROTOCOL_UNSPECIFIED, LIBLTE_S1AP_CAUSEPROTOCOL_N_ITEMS, } LIBLTE_S1AP_CAUSEPROTOCOL_ENUM; static const char liblte_s1ap_causeprotocol_text[LIBLTE_S1AP_CAUSEPROTOCOL_N_ITEMS][80] = { "transfer-syntax-error", "abstract-syntax-error-reject", "abstract-syntax-error-ignore-and-notify", "message-not-compatible-with-receiver-state", "semantic-error", "abstract-syntax-error-falsely-constructed-message", "unspecified", }; typedef struct { bool ext; LIBLTE_S1AP_CAUSEPROTOCOL_ENUM e; } LIBLTE_S1AP_CAUSEPROTOCOL_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_causeprotocol(LIBLTE_S1AP_CAUSEPROTOCOL_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_causeprotocol(uint8_t** ptr, LIBLTE_S1AP_CAUSEPROTOCOL_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE CellAccessMode ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CELLACCESSMODE_HYBRID, LIBLTE_S1AP_CELLACCESSMODE_N_ITEMS, } LIBLTE_S1AP_CELLACCESSMODE_ENUM; static const char liblte_s1ap_cellaccessmode_text[LIBLTE_S1AP_CELLACCESSMODE_N_ITEMS][80] = { "hybrid", }; typedef struct { bool ext; LIBLTE_S1AP_CELLACCESSMODE_ENUM e; } LIBLTE_S1AP_CELLACCESSMODE_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellaccessmode(LIBLTE_S1AP_CELLACCESSMODE_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellaccessmode(uint8_t** ptr, LIBLTE_S1AP_CELLACCESSMODE_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE Cdma2000RATType ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CDMA2000RATTYPE_HRPD, LIBLTE_S1AP_CDMA2000RATTYPE_ONEXRTT, LIBLTE_S1AP_CDMA2000RATTYPE_N_ITEMS, } LIBLTE_S1AP_CDMA2000RATTYPE_ENUM; static const char liblte_s1ap_cdma2000rattype_text[LIBLTE_S1AP_CDMA2000RATTYPE_N_ITEMS][80] = { "hRPD", "onexRTT", }; typedef struct { bool ext; LIBLTE_S1AP_CDMA2000RATTYPE_ENUM e; } LIBLTE_S1AP_CDMA2000RATTYPE_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000rattype(LIBLTE_S1AP_CDMA2000RATTYPE_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000rattype(uint8_t** ptr, LIBLTE_S1AP_CDMA2000RATTYPE_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE Cdma2000OneXMEID DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_CDMA2000ONEXMEID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000onexmeid(LIBLTE_S1AP_CDMA2000ONEXMEID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000onexmeid(uint8_t** ptr, LIBLTE_S1AP_CDMA2000ONEXMEID_STRUCT* ie); /******************************************************************************* /* ProtocolIE Cell_Size ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CELL_SIZE_VERYSMALL, LIBLTE_S1AP_CELL_SIZE_SMALL, LIBLTE_S1AP_CELL_SIZE_MEDIUM, LIBLTE_S1AP_CELL_SIZE_LARGE, LIBLTE_S1AP_CELL_SIZE_N_ITEMS, } LIBLTE_S1AP_CELL_SIZE_ENUM; static const char liblte_s1ap_cell_size_text[LIBLTE_S1AP_CELL_SIZE_N_ITEMS][80] = { "verysmall", "small", "medium", "large", }; typedef struct { bool ext; LIBLTE_S1AP_CELL_SIZE_ENUM e; } LIBLTE_S1AP_CELL_SIZE_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cell_size(LIBLTE_S1AP_CELL_SIZE_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cell_size(uint8_t** ptr, LIBLTE_S1AP_CELL_SIZE_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE CI STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_CI_OCTET_STRING_LEN 2 typedef struct { uint8_t buffer[2]; } LIBLTE_S1AP_CI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ci(LIBLTE_S1AP_CI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ci(uint8_t** ptr, LIBLTE_S1AP_CI_STRUCT* ie); /******************************************************************************* /* ProtocolIE CSFallbackIndicator ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CSFALLBACKINDICATOR_CS_FALLBACK_REQUIRED, LIBLTE_S1AP_CSFALLBACKINDICATOR_CS_FALLBACK_HIGH_PRIORITY, LIBLTE_S1AP_CSFALLBACKINDICATOR_N_ITEMS, } LIBLTE_S1AP_CSFALLBACKINDICATOR_ENUM; static const char liblte_s1ap_csfallbackindicator_text[LIBLTE_S1AP_CSFALLBACKINDICATOR_N_ITEMS][80] = { "cs-fallback-required", "cs-fallback-high-priority", }; typedef struct { bool ext; LIBLTE_S1AP_CSFALLBACKINDICATOR_ENUM e; } LIBLTE_S1AP_CSFALLBACKINDICATOR_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_csfallbackindicator(LIBLTE_S1AP_CSFALLBACKINDICATOR_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_csfallbackindicator(uint8_t** ptr, LIBLTE_S1AP_CSFALLBACKINDICATOR_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE CSGMembershipStatus ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_MEMBER, LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_NOT_MEMBER, LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_N_ITEMS, } LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_ENUM; static const char liblte_s1ap_csgmembershipstatus_text[LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_N_ITEMS][80] = { "member", "not-member", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_csgmembershipstatus(LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_csgmembershipstatus(uint8_t** ptr, LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_ENUM* ie); /******************************************************************************* /* ProtocolIE DataCodingScheme STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_DATACODINGSCHEME_BIT_STRING_LEN 8 typedef struct { uint8_t buffer[8]; } LIBLTE_S1AP_DATACODINGSCHEME_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_datacodingscheme(LIBLTE_S1AP_DATACODINGSCHEME_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_datacodingscheme(uint8_t** ptr, LIBLTE_S1AP_DATACODINGSCHEME_STRUCT* ie); /******************************************************************************* /* ProtocolIE EmergencyAreaIDList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_EMERGENCYAREAID_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_EMERGENCYAREAIDLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_emergencyareaidlist(LIBLTE_S1AP_EMERGENCYAREAIDLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_emergencyareaidlist(uint8_t** ptr, LIBLTE_S1AP_EMERGENCYAREAIDLIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE EmergencyAreaIDListForRestart DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_EMERGENCYAREAID_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_EMERGENCYAREAIDLISTFORRESTART_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_emergencyareaidlistforrestart(LIBLTE_S1AP_EMERGENCYAREAIDLISTFORRESTART_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_emergencyareaidlistforrestart(uint8_t** ptr, LIBLTE_S1AP_EMERGENCYAREAIDLISTFORRESTART_STRUCT* ie); /******************************************************************************* /* ProtocolIE ENB_UE_S1AP_ID INTEGER ********************************************************************************/ typedef struct { uint32_t ENB_UE_S1AP_ID; } LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enb_ue_s1ap_id(LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enb_ue_s1ap_id(uint8_t** ptr, LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RAB_ID INTEGER ********************************************************************************/ typedef struct { bool ext; uint8_t E_RAB_ID; } LIBLTE_S1AP_E_RAB_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rab_id(LIBLTE_S1AP_E_RAB_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rab_id(uint8_t** ptr, LIBLTE_S1AP_E_RAB_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABInformationListItem SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_DL_FORWARDING_ENUM_EXT dL_Forwarding; bool dL_Forwarding_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABINFORMATIONLISTITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabinformationlistitem(LIBLTE_S1AP_E_RABINFORMATIONLISTITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabinformationlistitem(uint8_t** ptr, LIBLTE_S1AP_E_RABINFORMATIONLISTITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE EUTRANRoundTripDelayEstimationInfo INTEGER ********************************************************************************/ typedef struct { uint16_t EUTRANRoundTripDelayEstimationInfo; } LIBLTE_S1AP_EUTRANROUNDTRIPDELAYESTIMATIONINFO_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_eutranroundtripdelayestimationinfo(LIBLTE_S1AP_EUTRANROUNDTRIPDELAYESTIMATIONINFO_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_eutranroundtripdelayestimationinfo(uint8_t** ptr, LIBLTE_S1AP_EUTRANROUNDTRIPDELAYESTIMATIONINFO_STRUCT* ie); /******************************************************************************* /* ProtocolIE ForbiddenLACs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:4096 typedef struct { uint32_t len; LIBLTE_S1AP_LAC_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_FORBIDDENLACS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_forbiddenlacs(LIBLTE_S1AP_FORBIDDENLACS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_forbiddenlacs(uint8_t** ptr, LIBLTE_S1AP_FORBIDDENLACS_STRUCT* ie); /******************************************************************************* /* ProtocolIE GTP_TEID STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_GTP_TEID_OCTET_STRING_LEN 4 typedef struct { uint8_t buffer[4]; } LIBLTE_S1AP_GTP_TEID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_gtp_teid(LIBLTE_S1AP_GTP_TEID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_gtp_teid(uint8_t** ptr, LIBLTE_S1AP_GTP_TEID_STRUCT* ie); /******************************************************************************* /* ProtocolIE GUMMEIType ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_GUMMEITYPE_NATIVE, LIBLTE_S1AP_GUMMEITYPE_MAPPED, LIBLTE_S1AP_GUMMEITYPE_N_ITEMS, } LIBLTE_S1AP_GUMMEITYPE_ENUM; static const char liblte_s1ap_gummeitype_text[LIBLTE_S1AP_GUMMEITYPE_N_ITEMS][80] = { "native", "mapped", }; typedef struct { bool ext; LIBLTE_S1AP_GUMMEITYPE_ENUM e; } LIBLTE_S1AP_GUMMEITYPE_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_gummeitype(LIBLTE_S1AP_GUMMEITYPE_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_gummeitype(uint8_t** ptr, LIBLTE_S1AP_GUMMEITYPE_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE HandoverType ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_HANDOVERTYPE_INTRALTE, LIBLTE_S1AP_HANDOVERTYPE_LTETOUTRAN, LIBLTE_S1AP_HANDOVERTYPE_LTETOGERAN, LIBLTE_S1AP_HANDOVERTYPE_UTRANTOLTE, LIBLTE_S1AP_HANDOVERTYPE_GERANTOLTE, LIBLTE_S1AP_HANDOVERTYPE_N_ITEMS, } LIBLTE_S1AP_HANDOVERTYPE_ENUM; static const char liblte_s1ap_handovertype_text[LIBLTE_S1AP_HANDOVERTYPE_N_ITEMS][80] = { "intralte", "ltetoutran", "ltetogeran", "utrantolte", "gerantolte", }; typedef struct { bool ext; LIBLTE_S1AP_HANDOVERTYPE_ENUM e; } LIBLTE_S1AP_HANDOVERTYPE_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handovertype(LIBLTE_S1AP_HANDOVERTYPE_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handovertype(uint8_t** ptr, LIBLTE_S1AP_HANDOVERTYPE_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE IntegrityProtectionAlgorithms STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_INTEGRITYPROTECTIONALGORITHMS_BIT_STRING_LEN 16 typedef struct { bool ext; uint8_t buffer[16]; } LIBLTE_S1AP_INTEGRITYPROTECTIONALGORITHMS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_integrityprotectionalgorithms(LIBLTE_S1AP_INTEGRITYPROTECTIONALGORITHMS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_integrityprotectionalgorithms(uint8_t** ptr, LIBLTE_S1AP_INTEGRITYPROTECTIONALGORITHMS_STRUCT* ie); // TODO: Type undefined NULL /******************************************************************************* /* ProtocolIE LastVisitedGERANCellInformation CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_CHOICE_UNDEFINED, LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_CHOICE_N_ITEMS, } LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_CHOICE_ENUM; static const char liblte_s1ap_lastvisitedgerancellinformation_choice_text[LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_CHOICE_N_ITEMS] [50] = { "undefined", }; typedef union { // TODO: NULL undefined; } LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_CHOICE_UNION choice; LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_CHOICE_ENUM choice_type; } LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_lastvisitedgerancellinformation(LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lastvisitedgerancellinformation(uint8_t** ptr, LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE Links_to_log ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_LINKS_TO_LOG_UPLINK, LIBLTE_S1AP_LINKS_TO_LOG_DOWNLINK, LIBLTE_S1AP_LINKS_TO_LOG_BOTH_UPLINK_AND_DOWNLINK, LIBLTE_S1AP_LINKS_TO_LOG_N_ITEMS, } LIBLTE_S1AP_LINKS_TO_LOG_ENUM; static const char liblte_s1ap_links_to_log_text[LIBLTE_S1AP_LINKS_TO_LOG_N_ITEMS][80] = { "uplink", "downlink", "both-uplink-and-downlink", }; typedef struct { bool ext; LIBLTE_S1AP_LINKS_TO_LOG_ENUM e; } LIBLTE_S1AP_LINKS_TO_LOG_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_links_to_log(LIBLTE_S1AP_LINKS_TO_LOG_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_links_to_log(uint8_t** ptr, LIBLTE_S1AP_LINKS_TO_LOG_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE LoggingInterval ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_LOGGINGINTERVAL_MS128, LIBLTE_S1AP_LOGGINGINTERVAL_MS256, LIBLTE_S1AP_LOGGINGINTERVAL_MS512, LIBLTE_S1AP_LOGGINGINTERVAL_MS1024, LIBLTE_S1AP_LOGGINGINTERVAL_MS2048, LIBLTE_S1AP_LOGGINGINTERVAL_MS3072, LIBLTE_S1AP_LOGGINGINTERVAL_MS4096, LIBLTE_S1AP_LOGGINGINTERVAL_MS6144, LIBLTE_S1AP_LOGGINGINTERVAL_N_ITEMS, } LIBLTE_S1AP_LOGGINGINTERVAL_ENUM; static const char liblte_s1ap_logginginterval_text[LIBLTE_S1AP_LOGGINGINTERVAL_N_ITEMS][80] = { "ms128", "ms256", "ms512", "ms1024", "ms2048", "ms3072", "ms4096", "ms6144", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_logginginterval(LIBLTE_S1AP_LOGGINGINTERVAL_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_logginginterval(uint8_t** ptr, LIBLTE_S1AP_LOGGINGINTERVAL_ENUM* ie); /******************************************************************************* /* ProtocolIE M3period ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_M3PERIOD_MS100, LIBLTE_S1AP_M3PERIOD_MS1000, LIBLTE_S1AP_M3PERIOD_MS10000, LIBLTE_S1AP_M3PERIOD_N_ITEMS, } LIBLTE_S1AP_M3PERIOD_ENUM; static const char liblte_s1ap_m3period_text[LIBLTE_S1AP_M3PERIOD_N_ITEMS][80] = { "ms100", "ms1000", "ms10000", }; typedef struct { bool ext; LIBLTE_S1AP_M3PERIOD_ENUM e; } LIBLTE_S1AP_M3PERIOD_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m3period(LIBLTE_S1AP_M3PERIOD_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m3period(uint8_t** ptr, LIBLTE_S1AP_M3PERIOD_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE M4period ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_M4PERIOD_MS1024, LIBLTE_S1AP_M4PERIOD_MS2048, LIBLTE_S1AP_M4PERIOD_MS5120, LIBLTE_S1AP_M4PERIOD_MS10240, LIBLTE_S1AP_M4PERIOD_MIN1, LIBLTE_S1AP_M4PERIOD_N_ITEMS, } LIBLTE_S1AP_M4PERIOD_ENUM; static const char liblte_s1ap_m4period_text[LIBLTE_S1AP_M4PERIOD_N_ITEMS][80] = { "ms1024", "ms2048", "ms5120", "ms10240", "min1", }; typedef struct { bool ext; LIBLTE_S1AP_M4PERIOD_ENUM e; } LIBLTE_S1AP_M4PERIOD_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m4period(LIBLTE_S1AP_M4PERIOD_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m4period(uint8_t** ptr, LIBLTE_S1AP_M4PERIOD_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE M5period ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_M5PERIOD_MS1024, LIBLTE_S1AP_M5PERIOD_MS2048, LIBLTE_S1AP_M5PERIOD_MS5120, LIBLTE_S1AP_M5PERIOD_MS10240, LIBLTE_S1AP_M5PERIOD_MIN1, LIBLTE_S1AP_M5PERIOD_N_ITEMS, } LIBLTE_S1AP_M5PERIOD_ENUM; static const char liblte_s1ap_m5period_text[LIBLTE_S1AP_M5PERIOD_N_ITEMS][80] = { "ms1024", "ms2048", "ms5120", "ms10240", "min1", }; typedef struct { bool ext; LIBLTE_S1AP_M5PERIOD_ENUM e; } LIBLTE_S1AP_M5PERIOD_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m5period(LIBLTE_S1AP_M5PERIOD_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m5period(uint8_t** ptr, LIBLTE_S1AP_M5PERIOD_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE MobilityInformation STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_MOBILITYINFORMATION_BIT_STRING_LEN 32 typedef struct { uint8_t buffer[32]; } LIBLTE_S1AP_MOBILITYINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mobilityinformation(LIBLTE_S1AP_MOBILITYINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mobilityinformation(uint8_t** ptr, LIBLTE_S1AP_MOBILITYINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE MME_Code STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_MME_CODE_OCTET_STRING_LEN 1 typedef struct { uint8_t buffer[1]; } LIBLTE_S1AP_MME_CODE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mme_code(LIBLTE_S1AP_MME_CODE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mme_code(uint8_t** ptr, LIBLTE_S1AP_MME_CODE_STRUCT* ie); /******************************************************************************* /* ProtocolIE MSClassmark3 DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_MSCLASSMARK3_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_msclassmark3(LIBLTE_S1AP_MSCLASSMARK3_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_msclassmark3(uint8_t** ptr, LIBLTE_S1AP_MSCLASSMARK3_STRUCT* ie); /******************************************************************************* /* ProtocolIE NumberofBroadcastRequest INTEGER ********************************************************************************/ typedef struct { uint16_t NumberofBroadcastRequest; } LIBLTE_S1AP_NUMBEROFBROADCASTREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_numberofbroadcastrequest(LIBLTE_S1AP_NUMBEROFBROADCASTREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_numberofbroadcastrequest(uint8_t** ptr, LIBLTE_S1AP_NUMBEROFBROADCASTREQUEST_STRUCT* ie); /******************************************************************************* /* ProtocolIE OverloadResponse CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_OVERLOADRESPONSE_CHOICE_OVERLOADACTION, LIBLTE_S1AP_OVERLOADRESPONSE_CHOICE_N_ITEMS, } LIBLTE_S1AP_OVERLOADRESPONSE_CHOICE_ENUM; static const char liblte_s1ap_overloadresponse_choice_text[LIBLTE_S1AP_OVERLOADRESPONSE_CHOICE_N_ITEMS][50] = { "overloadAction", }; typedef union { LIBLTE_S1AP_OVERLOADACTION_ENUM_EXT overloadAction; } LIBLTE_S1AP_OVERLOADRESPONSE_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_OVERLOADRESPONSE_CHOICE_UNION choice; LIBLTE_S1AP_OVERLOADRESPONSE_CHOICE_ENUM choice_type; } LIBLTE_S1AP_OVERLOADRESPONSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_overloadresponse(LIBLTE_S1AP_OVERLOADRESPONSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_overloadresponse(uint8_t** ptr, LIBLTE_S1AP_OVERLOADRESPONSE_STRUCT* ie); /******************************************************************************* /* ProtocolIE PDCP_SNExtended INTEGER ********************************************************************************/ typedef struct { uint16_t PDCP_SNExtended; } LIBLTE_S1AP_PDCP_SNEXTENDED_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_pdcp_snextended(LIBLTE_S1AP_PDCP_SNEXTENDED_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_pdcp_snextended(uint8_t** ptr, LIBLTE_S1AP_PDCP_SNEXTENDED_STRUCT* ie); /******************************************************************************* /* ProtocolIE Pre_emptionCapability ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_PRE_EMPTIONCAPABILITY_SHALL_NOT_TRIGGER_PRE_EMPTION, LIBLTE_S1AP_PRE_EMPTIONCAPABILITY_MAY_TRIGGER_PRE_EMPTION, LIBLTE_S1AP_PRE_EMPTIONCAPABILITY_N_ITEMS, } LIBLTE_S1AP_PRE_EMPTIONCAPABILITY_ENUM; static const char liblte_s1ap_pre_emptioncapability_text[LIBLTE_S1AP_PRE_EMPTIONCAPABILITY_N_ITEMS][80] = { "shall-not-trigger-pre-emption", "may-trigger-pre-emption", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_pre_emptioncapability(LIBLTE_S1AP_PRE_EMPTIONCAPABILITY_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_pre_emptioncapability(uint8_t** ptr, LIBLTE_S1AP_PRE_EMPTIONCAPABILITY_ENUM* ie); /******************************************************************************* /* ProtocolIE QCI INTEGER ********************************************************************************/ typedef struct { uint8_t QCI; } LIBLTE_S1AP_QCI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_qci(LIBLTE_S1AP_QCI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_qci(uint8_t** ptr, LIBLTE_S1AP_QCI_STRUCT* ie); /******************************************************************************* /* ProtocolIE RelayNode_Indicator ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_RELAYNODE_INDICATOR_TRUE, LIBLTE_S1AP_RELAYNODE_INDICATOR_N_ITEMS, } LIBLTE_S1AP_RELAYNODE_INDICATOR_ENUM; static const char liblte_s1ap_relaynode_indicator_text[LIBLTE_S1AP_RELAYNODE_INDICATOR_N_ITEMS][80] = { "true", }; typedef struct { bool ext; LIBLTE_S1AP_RELAYNODE_INDICATOR_ENUM e; } LIBLTE_S1AP_RELAYNODE_INDICATOR_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_relaynode_indicator(LIBLTE_S1AP_RELAYNODE_INDICATOR_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_relaynode_indicator(uint8_t** ptr, LIBLTE_S1AP_RELAYNODE_INDICATOR_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE M1ReportingTrigger ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_M1REPORTINGTRIGGER_PERIODIC, LIBLTE_S1AP_M1REPORTINGTRIGGER_A2EVENTTRIGGERED, LIBLTE_S1AP_M1REPORTINGTRIGGER_A2EVENTTRIGGERED_PERIODIC, LIBLTE_S1AP_M1REPORTINGTRIGGER_N_ITEMS, } LIBLTE_S1AP_M1REPORTINGTRIGGER_ENUM; static const char liblte_s1ap_m1reportingtrigger_text[LIBLTE_S1AP_M1REPORTINGTRIGGER_N_ITEMS][80] = { "periodic", "a2eventtriggered", "a2eventtriggered-periodic", }; typedef struct { bool ext; LIBLTE_S1AP_M1REPORTINGTRIGGER_ENUM e; } LIBLTE_S1AP_M1REPORTINGTRIGGER_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m1reportingtrigger(LIBLTE_S1AP_M1REPORTINGTRIGGER_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m1reportingtrigger(uint8_t** ptr, LIBLTE_S1AP_M1REPORTINGTRIGGER_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE RIMInformation DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_RIMINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_riminformation(LIBLTE_S1AP_RIMINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_riminformation(uint8_t** ptr, LIBLTE_S1AP_RIMINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE RepetitionPeriod INTEGER ********************************************************************************/ typedef struct { uint16_t RepetitionPeriod; } LIBLTE_S1AP_REPETITIONPERIOD_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_repetitionperiod(LIBLTE_S1AP_REPETITIONPERIOD_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_repetitionperiod(uint8_t** ptr, LIBLTE_S1AP_REPETITIONPERIOD_STRUCT* ie); /******************************************************************************* /* ProtocolIE SecurityKey STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_SECURITYKEY_BIT_STRING_LEN 256 typedef struct { uint8_t buffer[256]; } LIBLTE_S1AP_SECURITYKEY_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_securitykey(LIBLTE_S1AP_SECURITYKEY_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_securitykey(uint8_t** ptr, LIBLTE_S1AP_SECURITYKEY_STRUCT* ie); /******************************************************************************* /* ProtocolIE SerialNumber STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_SERIALNUMBER_BIT_STRING_LEN 16 typedef struct { uint8_t buffer[16]; } LIBLTE_S1AP_SERIALNUMBER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_serialnumber(LIBLTE_S1AP_SERIALNUMBER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_serialnumber(uint8_t** ptr, LIBLTE_S1AP_SERIALNUMBER_STRUCT* ie); /******************************************************************************* /* ProtocolIE SourceBSS_ToTargetBSS_TransparentContainer DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_SOURCEBSS_TOTARGETBSS_TRANSPARENTCONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_sourcebss_totargetbss_transparentcontainer( LIBLTE_S1AP_SOURCEBSS_TOTARGETBSS_TRANSPARENTCONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_sourcebss_totargetbss_transparentcontainer( uint8_t** ptr, LIBLTE_S1AP_SOURCEBSS_TOTARGETBSS_TRANSPARENTCONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE SRVCCOperationPossible ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_SRVCCOPERATIONPOSSIBLE_POSSIBLE, LIBLTE_S1AP_SRVCCOPERATIONPOSSIBLE_N_ITEMS, } LIBLTE_S1AP_SRVCCOPERATIONPOSSIBLE_ENUM; static const char liblte_s1ap_srvccoperationpossible_text[LIBLTE_S1AP_SRVCCOPERATIONPOSSIBLE_N_ITEMS][80] = { "possible", }; typedef struct { bool ext; LIBLTE_S1AP_SRVCCOPERATIONPOSSIBLE_ENUM e; } LIBLTE_S1AP_SRVCCOPERATIONPOSSIBLE_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_srvccoperationpossible(LIBLTE_S1AP_SRVCCOPERATIONPOSSIBLE_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_srvccoperationpossible(uint8_t** ptr, LIBLTE_S1AP_SRVCCOPERATIONPOSSIBLE_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE ServedGroupIDs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_MME_GROUP_ID_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_SERVEDGROUPIDS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_servedgroupids(LIBLTE_S1AP_SERVEDGROUPIDS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_servedgroupids(uint8_t** ptr, LIBLTE_S1AP_SERVEDGROUPIDS_STRUCT* ie); /******************************************************************************* /* ProtocolIE StratumLevel INTEGER ********************************************************************************/ typedef struct { bool ext; uint8_t StratumLevel; } LIBLTE_S1AP_STRATUMLEVEL_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_stratumlevel(LIBLTE_S1AP_STRATUMLEVEL_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_stratumlevel(uint8_t** ptr, LIBLTE_S1AP_STRATUMLEVEL_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAC STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_TAC_OCTET_STRING_LEN 2 typedef struct { uint8_t buffer[2]; } LIBLTE_S1AP_TAC_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tac(LIBLTE_S1AP_TAC_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tac(uint8_t** ptr, LIBLTE_S1AP_TAC_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAListforMDT DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:8 typedef struct { uint32_t len; LIBLTE_S1AP_TAC_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_TALISTFORMDT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_talistformdt(LIBLTE_S1AP_TALISTFORMDT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_talistformdt(uint8_t** ptr, LIBLTE_S1AP_TALISTFORMDT_STRUCT* ie); /******************************************************************************* /* ProtocolIE TBCD_STRING STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_TBCD_STRING_OCTET_STRING_LEN 3 typedef struct { uint8_t buffer[3]; } LIBLTE_S1AP_TBCD_STRING_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tbcd_string(LIBLTE_S1AP_TBCD_STRING_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tbcd_string(uint8_t** ptr, LIBLTE_S1AP_TBCD_STRING_STRUCT* ie); /******************************************************************************* /* ProtocolIE Target_ToSource_TransparentContainer DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_TARGET_TOSOURCE_TRANSPARENTCONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_target_tosource_transparentcontainer(LIBLTE_S1AP_TARGET_TOSOURCE_TRANSPARENTCONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_target_tosource_transparentcontainer(uint8_t** ptr, LIBLTE_S1AP_TARGET_TOSOURCE_TRANSPARENTCONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE Threshold_RSRP INTEGER ********************************************************************************/ typedef struct { uint8_t Threshold_RSRP; } LIBLTE_S1AP_THRESHOLD_RSRP_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_threshold_rsrp(LIBLTE_S1AP_THRESHOLD_RSRP_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_threshold_rsrp(uint8_t** ptr, LIBLTE_S1AP_THRESHOLD_RSRP_STRUCT* ie); /******************************************************************************* /* ProtocolIE Time_UE_StayedInCell_EnhancedGranularity INTEGER ********************************************************************************/ typedef struct { uint16_t Time_UE_StayedInCell_EnhancedGranularity; } LIBLTE_S1AP_TIME_UE_STAYEDINCELL_ENHANCEDGRANULARITY_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_time_ue_stayedincell_enhancedgranularity( LIBLTE_S1AP_TIME_UE_STAYEDINCELL_ENHANCEDGRANULARITY_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_time_ue_stayedincell_enhancedgranularity( uint8_t** ptr, LIBLTE_S1AP_TIME_UE_STAYEDINCELL_ENHANCEDGRANULARITY_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_UTRAN_Trace_ID STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_E_UTRAN_TRACE_ID_OCTET_STRING_LEN 8 typedef struct { uint8_t buffer[8]; } LIBLTE_S1AP_E_UTRAN_TRACE_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_utran_trace_id(LIBLTE_S1AP_E_UTRAN_TRACE_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_utran_trace_id(uint8_t** ptr, LIBLTE_S1AP_E_UTRAN_TRACE_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE TypeOfError ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_TYPEOFERROR_NOT_UNDERSTOOD, LIBLTE_S1AP_TYPEOFERROR_MISSING, LIBLTE_S1AP_TYPEOFERROR_N_ITEMS, } LIBLTE_S1AP_TYPEOFERROR_ENUM; static const char liblte_s1ap_typeoferror_text[LIBLTE_S1AP_TYPEOFERROR_N_ITEMS][80] = { "not-understood", "missing", }; typedef struct { bool ext; LIBLTE_S1AP_TYPEOFERROR_ENUM e; } LIBLTE_S1AP_TYPEOFERROR_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_typeoferror(LIBLTE_S1AP_TYPEOFERROR_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_typeoferror(uint8_t** ptr, LIBLTE_S1AP_TYPEOFERROR_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE UEAggregateMaximumBitrate SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_BITRATE_STRUCT uEaggregateMaximumBitRateDL; LIBLTE_S1AP_BITRATE_STRUCT uEaggregateMaximumBitRateUL; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_UEAGGREGATEMAXIMUMBITRATE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ueaggregatemaximumbitrate(LIBLTE_S1AP_UEAGGREGATEMAXIMUMBITRATE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ueaggregatemaximumbitrate(uint8_t** ptr, LIBLTE_S1AP_UEAGGREGATEMAXIMUMBITRATE_STRUCT* ie); /******************************************************************************* /* ProtocolIE UE_S1AP_ID_pair SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT mME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_UE_S1AP_ID_PAIR_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ue_s1ap_id_pair(LIBLTE_S1AP_UE_S1AP_ID_PAIR_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ue_s1ap_id_pair(uint8_t** ptr, LIBLTE_S1AP_UE_S1AP_ID_PAIR_STRUCT* ie); /******************************************************************************* /* ProtocolIE UEIdentityIndexValue STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_UEIDENTITYINDEXVALUE_BIT_STRING_LEN 10 typedef struct { uint8_t buffer[10]; } LIBLTE_S1AP_UEIDENTITYINDEXVALUE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ueidentityindexvalue(LIBLTE_S1AP_UEIDENTITYINDEXVALUE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ueidentityindexvalue(uint8_t** ptr, LIBLTE_S1AP_UEIDENTITYINDEXVALUE_STRUCT* ie); /******************************************************************************* /* ProtocolIE UESecurityCapabilities SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_ENCRYPTIONALGORITHMS_STRUCT encryptionAlgorithms; LIBLTE_S1AP_INTEGRITYPROTECTIONALGORITHMS_STRUCT integrityProtectionAlgorithms; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_UESECURITYCAPABILITIES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uesecuritycapabilities(LIBLTE_S1AP_UESECURITYCAPABILITIES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uesecuritycapabilities(uint8_t** ptr, LIBLTE_S1AP_UESECURITYCAPABILITIES_STRUCT* ie); /******************************************************************************* /* ProtocolIE VoiceSupportMatchIndicator ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_VOICESUPPORTMATCHINDICATOR_SUPPORTED, LIBLTE_S1AP_VOICESUPPORTMATCHINDICATOR_NOT_SUPPORTED, LIBLTE_S1AP_VOICESUPPORTMATCHINDICATOR_N_ITEMS, } LIBLTE_S1AP_VOICESUPPORTMATCHINDICATOR_ENUM; static const char liblte_s1ap_voicesupportmatchindicator_text[LIBLTE_S1AP_VOICESUPPORTMATCHINDICATOR_N_ITEMS][80] = { "supported", "not-supported", }; typedef struct { bool ext; LIBLTE_S1AP_VOICESUPPORTMATCHINDICATOR_ENUM e; } LIBLTE_S1AP_VOICESUPPORTMATCHINDICATOR_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_voicesupportmatchindicator(LIBLTE_S1AP_VOICESUPPORTMATCHINDICATOR_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_voicesupportmatchindicator(uint8_t** ptr, LIBLTE_S1AP_VOICESUPPORTMATCHINDICATOR_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE WarningSecurityInfo STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_WARNINGSECURITYINFO_OCTET_STRING_LEN 50 typedef struct { uint8_t buffer[50]; } LIBLTE_S1AP_WARNINGSECURITYINFO_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_warningsecurityinfo(LIBLTE_S1AP_WARNINGSECURITYINFO_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_warningsecurityinfo(uint8_t** ptr, LIBLTE_S1AP_WARNINGSECURITYINFO_STRUCT* ie); /******************************************************************************* /* ProtocolIE ENBX2GTPTLAs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:16 typedef struct { uint32_t len; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_ENBX2GTPTLAS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbx2gtptlas(LIBLTE_S1AP_ENBX2GTPTLAS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbx2gtptlas(uint8_t** ptr, LIBLTE_S1AP_ENBX2GTPTLAS_STRUCT* ie); /******************************************************************************* /* ProtocolIE CauseTransport ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CAUSETRANSPORT_TRANSPORT_RESOURCE_UNAVAILABLE, LIBLTE_S1AP_CAUSETRANSPORT_UNSPECIFIED, LIBLTE_S1AP_CAUSETRANSPORT_N_ITEMS, } LIBLTE_S1AP_CAUSETRANSPORT_ENUM; static const char liblte_s1ap_causetransport_text[LIBLTE_S1AP_CAUSETRANSPORT_N_ITEMS][80] = { "transport-resource-unavailable", "unspecified", }; typedef struct { bool ext; LIBLTE_S1AP_CAUSETRANSPORT_ENUM e; } LIBLTE_S1AP_CAUSETRANSPORT_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_causetransport(LIBLTE_S1AP_CAUSETRANSPORT_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_causetransport(uint8_t** ptr, LIBLTE_S1AP_CAUSETRANSPORT_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE Cdma2000HOStatus ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CDMA2000HOSTATUS_HOSUCCESS, LIBLTE_S1AP_CDMA2000HOSTATUS_HOFAILURE, LIBLTE_S1AP_CDMA2000HOSTATUS_N_ITEMS, } LIBLTE_S1AP_CDMA2000HOSTATUS_ENUM; static const char liblte_s1ap_cdma2000hostatus_text[LIBLTE_S1AP_CDMA2000HOSTATUS_N_ITEMS][80] = { "hOSuccess", "hOFailure", }; typedef struct { bool ext; LIBLTE_S1AP_CDMA2000HOSTATUS_ENUM e; } LIBLTE_S1AP_CDMA2000HOSTATUS_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000hostatus(LIBLTE_S1AP_CDMA2000HOSTATUS_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000hostatus(uint8_t** ptr, LIBLTE_S1AP_CDMA2000HOSTATUS_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE Cdma2000OneXPilot DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_CDMA2000ONEXPILOT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000onexpilot(LIBLTE_S1AP_CDMA2000ONEXPILOT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000onexpilot(uint8_t** ptr, LIBLTE_S1AP_CDMA2000ONEXPILOT_STRUCT* ie); /******************************************************************************* /* ProtocolIE ConcurrentWarningMessageIndicator ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_CONCURRENTWARNINGMESSAGEINDICATOR_TRUE, LIBLTE_S1AP_CONCURRENTWARNINGMESSAGEINDICATOR_N_ITEMS, } LIBLTE_S1AP_CONCURRENTWARNINGMESSAGEINDICATOR_ENUM; static const char liblte_s1ap_concurrentwarningmessageindicator_text[LIBLTE_S1AP_CONCURRENTWARNINGMESSAGEINDICATOR_N_ITEMS][80] = { "true", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_concurrentwarningmessageindicator(LIBLTE_S1AP_CONCURRENTWARNINGMESSAGEINDICATOR_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_concurrentwarningmessageindicator(uint8_t** ptr, LIBLTE_S1AP_CONCURRENTWARNINGMESSAGEINDICATOR_ENUM* ie); /******************************************************************************* /* ProtocolIE COUNTvalue SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_PDCP_SN_STRUCT pDCP_SN; LIBLTE_S1AP_HFN_STRUCT hFN; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_COUNTVALUE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_countvalue(LIBLTE_S1AP_COUNTVALUE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_countvalue(uint8_t** ptr, LIBLTE_S1AP_COUNTVALUE_STRUCT* ie); /******************************************************************************* /* ProtocolIE CriticalityDiagnostics_IE_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CRITICALITY_ENUM iECriticality; LIBLTE_S1AP_PROTOCOLIE_ID_STRUCT iE_ID; LIBLTE_S1AP_TYPEOFERROR_ENUM_EXT typeOfError; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_IE_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_criticalitydiagnostics_ie_item(LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_IE_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_criticalitydiagnostics_ie_item(uint8_t** ptr, LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_IE_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE ENBX2TLAs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:2 typedef struct { uint32_t len; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_ENBX2TLAS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbx2tlas(LIBLTE_S1AP_ENBX2TLAS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbx2tlas(uint8_t** ptr, LIBLTE_S1AP_ENBX2TLAS_STRUCT* ie); /******************************************************************************* /* ProtocolIE ExtendedRepetitionPeriod INTEGER ********************************************************************************/ typedef struct { uint32_t ExtendedRepetitionPeriod; } LIBLTE_S1AP_EXTENDEDREPETITIONPERIOD_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_extendedrepetitionperiod(LIBLTE_S1AP_EXTENDEDREPETITIONPERIOD_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_extendedrepetitionperiod(uint8_t** ptr, LIBLTE_S1AP_EXTENDEDREPETITIONPERIOD_STRUCT* ie); /******************************************************************************* /* ProtocolIE ForbiddenTACs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:4096 typedef struct { uint32_t len; LIBLTE_S1AP_TAC_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_FORBIDDENTACS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_forbiddentacs(LIBLTE_S1AP_FORBIDDENTACS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_forbiddentacs(uint8_t** ptr, LIBLTE_S1AP_FORBIDDENTACS_STRUCT* ie); /******************************************************************************* /* ProtocolIE GBR_QosInformation SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_BITRATE_STRUCT e_RAB_MaximumBitrateDL; LIBLTE_S1AP_BITRATE_STRUCT e_RAB_MaximumBitrateUL; LIBLTE_S1AP_BITRATE_STRUCT e_RAB_GuaranteedBitrateDL; LIBLTE_S1AP_BITRATE_STRUCT e_RAB_GuaranteedBitrateUL; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_GBR_QOSINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_gbr_qosinformation(LIBLTE_S1AP_GBR_QOSINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_gbr_qosinformation(uint8_t** ptr, LIBLTE_S1AP_GBR_QOSINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE HFNModified INTEGER ********************************************************************************/ typedef struct { uint32_t HFNModified; } LIBLTE_S1AP_HFNMODIFIED_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_hfnmodified(LIBLTE_S1AP_HFNMODIFIED_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_hfnmodified(uint8_t** ptr, LIBLTE_S1AP_HFNMODIFIED_STRUCT* ie); /******************************************************************************* /* ProtocolIE KillAllWarningMessages ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_KILLALLWARNINGMESSAGES_TRUE, LIBLTE_S1AP_KILLALLWARNINGMESSAGES_N_ITEMS, } LIBLTE_S1AP_KILLALLWARNINGMESSAGES_ENUM; static const char liblte_s1ap_killallwarningmessages_text[LIBLTE_S1AP_KILLALLWARNINGMESSAGES_N_ITEMS][80] = { "true", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_killallwarningmessages(LIBLTE_S1AP_KILLALLWARNINGMESSAGES_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_killallwarningmessages(uint8_t** ptr, LIBLTE_S1AP_KILLALLWARNINGMESSAGES_ENUM* ie); /******************************************************************************* /* ProtocolIE LPPa_PDU DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_LPPA_PDU_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_lppa_pdu(LIBLTE_S1AP_LPPA_PDU_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lppa_pdu(uint8_t** ptr, LIBLTE_S1AP_LPPA_PDU_STRUCT* ie); /******************************************************************************* /* ProtocolIE M3Configuration SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_M3PERIOD_ENUM_EXT m3period; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_M3CONFIGURATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m3configuration(LIBLTE_S1AP_M3CONFIGURATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m3configuration(uint8_t** ptr, LIBLTE_S1AP_M3CONFIGURATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE M5Configuration SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_M5PERIOD_ENUM_EXT m5period; LIBLTE_S1AP_LINKS_TO_LOG_ENUM_EXT m5_links_to_log; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_M5CONFIGURATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m5configuration(LIBLTE_S1AP_M5CONFIGURATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m5configuration(uint8_t** ptr, LIBLTE_S1AP_M5CONFIGURATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE MeasurementThresholdA2 CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_CHOICE_THRESHOLD_RSRP, LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_CHOICE_THRESHOLD_RSRQ, LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_CHOICE_N_ITEMS, } LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_CHOICE_ENUM; static const char liblte_s1ap_measurementthresholda2_choice_text[LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_CHOICE_N_ITEMS] [50] = { "threshold_RSRP", "threshold_RSRQ", }; typedef union { LIBLTE_S1AP_THRESHOLD_RSRP_STRUCT threshold_RSRP; LIBLTE_S1AP_THRESHOLD_RSRQ_STRUCT threshold_RSRQ; } LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_CHOICE_UNION choice; LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_CHOICE_ENUM choice_type; } LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_measurementthresholda2(LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_measurementthresholda2(uint8_t** ptr, LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_STRUCT* ie); /******************************************************************************* /* ProtocolIE M_TMSI STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_M_TMSI_OCTET_STRING_LEN 4 typedef struct { uint8_t buffer[4]; } LIBLTE_S1AP_M_TMSI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m_tmsi(LIBLTE_S1AP_M_TMSI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m_tmsi(uint8_t** ptr, LIBLTE_S1AP_M_TMSI_STRUCT* ie); /******************************************************************************* /* ProtocolIE OldBSS_ToNewBSS_Information DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_OLDBSS_TONEWBSS_INFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_oldbss_tonewbss_information(LIBLTE_S1AP_OLDBSS_TONEWBSS_INFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_oldbss_tonewbss_information(uint8_t** ptr, LIBLTE_S1AP_OLDBSS_TONEWBSS_INFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE PLMNidentity STATIC OCTET STRING ********************************************************************************/ #define LIBLTE_S1AP_PLMNIDENTITY_OCTET_STRING_LEN 3 typedef struct { uint8_t buffer[3]; } LIBLTE_S1AP_PLMNIDENTITY_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_plmnidentity(LIBLTE_S1AP_PLMNIDENTITY_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_plmnidentity(uint8_t** ptr, LIBLTE_S1AP_PLMNIDENTITY_STRUCT* ie); /******************************************************************************* /* ProtocolIE ReceiveStatusOfULPDCPSDUsExtended DYNAMIC BIT STRING ********************************************************************************/ // lb:1, ub:16384 typedef struct { uint32_t n_bits; uint8_t buffer[16384]; } LIBLTE_S1AP_RECEIVESTATUSOFULPDCPSDUSEXTENDED_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_receivestatusofulpdcpsdusextended(LIBLTE_S1AP_RECEIVESTATUSOFULPDCPSDUSEXTENDED_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_receivestatusofulpdcpsdusextended(uint8_t** ptr, LIBLTE_S1AP_RECEIVESTATUSOFULPDCPSDUSEXTENDED_STRUCT* ie); /******************************************************************************* /* ProtocolIE RequestType SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EVENTTYPE_ENUM_EXT eventType; LIBLTE_S1AP_REPORTAREA_ENUM_EXT reportArea; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_REQUESTTYPE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_requesttype(LIBLTE_S1AP_REQUESTTYPE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_requesttype(uint8_t** ptr, LIBLTE_S1AP_REQUESTTYPE_STRUCT* ie); /******************************************************************************* /* ProtocolIE RRC_Container DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_RRC_CONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_rrc_container(LIBLTE_S1AP_RRC_CONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_rrc_container(uint8_t** ptr, LIBLTE_S1AP_RRC_CONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE nextHopChainingCount INTEGER ********************************************************************************/ typedef struct { uint8_t nextHopChainingCount; } LIBLTE_S1AP_NEXTHOPCHAININGCOUNT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_nexthopchainingcount(LIBLTE_S1AP_NEXTHOPCHAININGCOUNT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_nexthopchainingcount(uint8_t** ptr, LIBLTE_S1AP_NEXTHOPCHAININGCOUNT_STRUCT* ie); /******************************************************************************* /* ProtocolIE SecurityContext SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_NEXTHOPCHAININGCOUNT_STRUCT nextHopChainingCount; LIBLTE_S1AP_SECURITYKEY_STRUCT nextHopParameter; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_SECURITYCONTEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_securitycontext(LIBLTE_S1AP_SECURITYCONTEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_securitycontext(uint8_t** ptr, LIBLTE_S1AP_SECURITYCONTEXT_STRUCT* ie); /******************************************************************************* /* ProtocolIE ServedMMECs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_MME_CODE_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_SERVEDMMECS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_servedmmecs(LIBLTE_S1AP_SERVEDMMECS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_servedmmecs(uint8_t** ptr, LIBLTE_S1AP_SERVEDMMECS_STRUCT* ie); /******************************************************************************* /* ProtocolIE TimeSynchronizationInfo SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_STRATUMLEVEL_STRUCT stratumLevel; LIBLTE_S1AP_SYNCHRONIZATIONSTATUS_ENUM_EXT synchronizationStatus; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TIMESYNCHRONIZATIONINFO_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_timesynchronizationinfo(LIBLTE_S1AP_TIMESYNCHRONIZATIONINFO_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_timesynchronizationinfo(uint8_t** ptr, LIBLTE_S1AP_TIMESYNCHRONIZATIONINFO_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAI SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TBCD_STRING_STRUCT pLMNidentity; LIBLTE_S1AP_TAC_STRUCT tAC; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TAI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tai(LIBLTE_S1AP_TAI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tai(uint8_t** ptr, LIBLTE_S1AP_TAI_STRUCT* ie); /******************************************************************************* /* ProtocolIE TABasedMDT SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TALISTFORMDT_STRUCT tAListforMDT; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TABASEDMDT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tabasedmdt(LIBLTE_S1AP_TABASEDMDT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tabasedmdt(uint8_t** ptr, LIBLTE_S1AP_TABASEDMDT_STRUCT* ie); /******************************************************************************* /* ProtocolIE TargeteNB_ToSourceeNB_TransparentContainer SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_RRC_CONTAINER_STRUCT rRC_Container; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TARGETENB_TOSOURCEENB_TRANSPARENTCONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetenb_tosourceenb_transparentcontainer( LIBLTE_S1AP_TARGETENB_TOSOURCEENB_TRANSPARENTCONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetenb_tosourceenb_transparentcontainer( uint8_t** ptr, LIBLTE_S1AP_TARGETENB_TOSOURCEENB_TRANSPARENTCONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE M1ThresholdEventA2 SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MEASUREMENTTHRESHOLDA2_STRUCT measurementThreshold; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_M1THRESHOLDEVENTA2_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m1thresholdeventa2(LIBLTE_S1AP_M1THRESHOLDEVENTA2_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m1thresholdeventa2(uint8_t** ptr, LIBLTE_S1AP_M1THRESHOLDEVENTA2_STRUCT* ie); /******************************************************************************* /* ProtocolIE TransportInformation SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT transportLayerAddress; LIBLTE_S1AP_GTP_TEID_STRUCT uL_GTP_TEID; } LIBLTE_S1AP_TRANSPORTINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_transportinformation(LIBLTE_S1AP_TRANSPORTINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_transportinformation(uint8_t** ptr, LIBLTE_S1AP_TRANSPORTINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE TunnelInformation SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT transportLayerAddress; LIBLTE_S1AP_PORT_NUMBER_STRUCT uDP_Port_Number; bool uDP_Port_Number_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TUNNELINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tunnelinformation(LIBLTE_S1AP_TUNNELINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tunnelinformation(uint8_t** ptr, LIBLTE_S1AP_TUNNELINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE UE_S1AP_IDs CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_UE_S1AP_IDS_CHOICE_UE_S1AP_ID_PAIR, LIBLTE_S1AP_UE_S1AP_IDS_CHOICE_MME_UE_S1AP_ID, LIBLTE_S1AP_UE_S1AP_IDS_CHOICE_N_ITEMS, } LIBLTE_S1AP_UE_S1AP_IDS_CHOICE_ENUM; static const char liblte_s1ap_ue_s1ap_ids_choice_text[LIBLTE_S1AP_UE_S1AP_IDS_CHOICE_N_ITEMS][50] = { "uE_S1AP_ID_pair", "mME_UE_S1AP_ID", }; typedef union { LIBLTE_S1AP_UE_S1AP_ID_PAIR_STRUCT uE_S1AP_ID_pair; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT mME_UE_S1AP_ID; } LIBLTE_S1AP_UE_S1AP_IDS_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_UE_S1AP_IDS_CHOICE_UNION choice; LIBLTE_S1AP_UE_S1AP_IDS_CHOICE_ENUM choice_type; } LIBLTE_S1AP_UE_S1AP_IDS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ue_s1ap_ids(LIBLTE_S1AP_UE_S1AP_IDS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ue_s1ap_ids(uint8_t** ptr, LIBLTE_S1AP_UE_S1AP_IDS_STRUCT* ie); /******************************************************************************* /* ProtocolIE ENBX2ExtTLA SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT iPsecTLA; bool iPsecTLA_present; LIBLTE_S1AP_ENBX2GTPTLAS_STRUCT gTPTLAa; bool gTPTLAa_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_ENBX2EXTTLA_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbx2exttla(LIBLTE_S1AP_ENBX2EXTTLA_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbx2exttla(uint8_t** ptr, LIBLTE_S1AP_ENBX2EXTTLA_STRUCT* ie); /******************************************************************************* /* ProtocolIE BPLMNs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:6 typedef struct { uint32_t len; LIBLTE_S1AP_TBCD_STRING_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_BPLMNS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_bplmns(LIBLTE_S1AP_BPLMNS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_bplmns(uint8_t** ptr, LIBLTE_S1AP_BPLMNS_STRUCT* ie); /******************************************************************************* /* ProtocolIE Cause CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_CAUSE_CHOICE_RADIONETWORK, LIBLTE_S1AP_CAUSE_CHOICE_TRANSPORT, LIBLTE_S1AP_CAUSE_CHOICE_NAS, LIBLTE_S1AP_CAUSE_CHOICE_PROTOCOL, LIBLTE_S1AP_CAUSE_CHOICE_MISC, LIBLTE_S1AP_CAUSE_CHOICE_N_ITEMS, } LIBLTE_S1AP_CAUSE_CHOICE_ENUM; static const char liblte_s1ap_cause_choice_text[LIBLTE_S1AP_CAUSE_CHOICE_N_ITEMS][50] = { "radioNetwork", "transport", "nas", "protocol", "misc", }; typedef union { LIBLTE_S1AP_CAUSERADIONETWORK_ENUM_EXT radioNetwork; LIBLTE_S1AP_CAUSETRANSPORT_ENUM_EXT transport; LIBLTE_S1AP_CAUSENAS_ENUM_EXT nas; LIBLTE_S1AP_CAUSEPROTOCOL_ENUM_EXT protocol; LIBLTE_S1AP_CAUSEMISC_ENUM_EXT misc; } LIBLTE_S1AP_CAUSE_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_CAUSE_CHOICE_UNION choice; LIBLTE_S1AP_CAUSE_CHOICE_ENUM choice_type; } LIBLTE_S1AP_CAUSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cause(LIBLTE_S1AP_CAUSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cause(uint8_t** ptr, LIBLTE_S1AP_CAUSE_STRUCT* ie); /******************************************************************************* /* ProtocolIE Cdma2000OneXSRVCCInfo SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CDMA2000ONEXMEID_STRUCT cdma2000OneXMEID; LIBLTE_S1AP_CDMA2000ONEXMSI_STRUCT cdma2000OneXMSI; LIBLTE_S1AP_CDMA2000ONEXPILOT_STRUCT cdma2000OneXPilot; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CDMA2000ONEXSRVCCINFO_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000onexsrvccinfo(LIBLTE_S1AP_CDMA2000ONEXSRVCCINFO_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000onexsrvccinfo(uint8_t** ptr, LIBLTE_S1AP_CDMA2000ONEXSRVCCINFO_STRUCT* ie); /******************************************************************************* /* ProtocolIE CGI SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TBCD_STRING_STRUCT pLMNidentity; LIBLTE_S1AP_LAC_STRUCT lAC; LIBLTE_S1AP_CI_STRUCT cI; LIBLTE_S1AP_RAC_STRUCT rAC; bool rAC_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CGI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cgi(LIBLTE_S1AP_CGI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cgi(uint8_t** ptr, LIBLTE_S1AP_CGI_STRUCT* ie); /******************************************************************************* /* ProtocolIE COUNTValueExtended SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_PDCP_SNEXTENDED_STRUCT pDCP_SNExtended; LIBLTE_S1AP_HFNMODIFIED_STRUCT hFNModified; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_COUNTVALUEEXTENDED_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_countvalueextended(LIBLTE_S1AP_COUNTVALUEEXTENDED_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_countvalueextended(uint8_t** ptr, LIBLTE_S1AP_COUNTVALUEEXTENDED_STRUCT* ie); /******************************************************************************* /* ProtocolIE CriticalityDiagnostics_IE_List DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_IE_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_IE_LIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_criticalitydiagnostics_ie_list(LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_IE_LIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_criticalitydiagnostics_ie_list(uint8_t** ptr, LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_IE_LIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE Global_ENB_ID SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TBCD_STRING_STRUCT pLMNidentity; LIBLTE_S1AP_ENB_ID_STRUCT eNB_ID; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_GLOBAL_ENB_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_global_enb_id(LIBLTE_S1AP_GLOBAL_ENB_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_global_enb_id(uint8_t** ptr, LIBLTE_S1AP_GLOBAL_ENB_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE EPLMNs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:15 typedef struct { uint32_t len; LIBLTE_S1AP_TBCD_STRING_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_EPLMNS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_eplmns(LIBLTE_S1AP_EPLMNS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_eplmns(uint8_t** ptr, LIBLTE_S1AP_EPLMNS_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABItem SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_CAUSE_STRUCT cause; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabitem(LIBLTE_S1AP_E_RABITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabitem(uint8_t** ptr, LIBLTE_S1AP_E_RABITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE EUTRAN_CGI SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TBCD_STRING_STRUCT pLMNidentity; LIBLTE_S1AP_CELLIDENTITY_STRUCT cell_ID; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_EUTRAN_CGI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_eutran_cgi(LIBLTE_S1AP_EUTRAN_CGI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_eutran_cgi(uint8_t** ptr, LIBLTE_S1AP_EUTRAN_CGI_STRUCT* ie); /******************************************************************************* /* ProtocolIE ForbiddenTAs_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TBCD_STRING_STRUCT pLMN_Identity; LIBLTE_S1AP_FORBIDDENTACS_STRUCT forbiddenTACs; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_FORBIDDENTAS_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_forbiddentas_item(LIBLTE_S1AP_FORBIDDENTAS_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_forbiddentas_item(uint8_t** ptr, LIBLTE_S1AP_FORBIDDENTAS_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE ForbiddenLAs_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TBCD_STRING_STRUCT pLMN_Identity; LIBLTE_S1AP_FORBIDDENLACS_STRUCT forbiddenLACs; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_FORBIDDENLAS_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_forbiddenlas_item(LIBLTE_S1AP_FORBIDDENLAS_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_forbiddenlas_item(uint8_t** ptr, LIBLTE_S1AP_FORBIDDENLAS_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE LAI SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TBCD_STRING_STRUCT pLMNidentity; LIBLTE_S1AP_LAC_STRUCT lAC; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_LAI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_lai(LIBLTE_S1AP_LAI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lai(uint8_t** ptr, LIBLTE_S1AP_LAI_STRUCT* ie); /******************************************************************************* /* ProtocolIE M4Configuration SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_M4PERIOD_ENUM_EXT m4period; LIBLTE_S1AP_LINKS_TO_LOG_ENUM_EXT m4_links_to_log; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_M4CONFIGURATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m4configuration(LIBLTE_S1AP_M4CONFIGURATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m4configuration(uint8_t** ptr, LIBLTE_S1AP_M4CONFIGURATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE MDTPLMNList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:16 typedef struct { uint32_t len; LIBLTE_S1AP_TBCD_STRING_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_MDTPLMNLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mdtplmnlist(LIBLTE_S1AP_MDTPLMNLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mdtplmnlist(uint8_t** ptr, LIBLTE_S1AP_MDTPLMNLIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE MMERelaySupportIndicator ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_MMERELAYSUPPORTINDICATOR_TRUE, LIBLTE_S1AP_MMERELAYSUPPORTINDICATOR_N_ITEMS, } LIBLTE_S1AP_MMERELAYSUPPORTINDICATOR_ENUM; static const char liblte_s1ap_mmerelaysupportindicator_text[LIBLTE_S1AP_MMERELAYSUPPORTINDICATOR_N_ITEMS][80] = { "true", }; typedef struct { bool ext; LIBLTE_S1AP_MMERELAYSUPPORTINDICATOR_ENUM e; } LIBLTE_S1AP_MMERELAYSUPPORTINDICATOR_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mmerelaysupportindicator(LIBLTE_S1AP_MMERELAYSUPPORTINDICATOR_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mmerelaysupportindicator(uint8_t** ptr, LIBLTE_S1AP_MMERELAYSUPPORTINDICATOR_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE PagingPriority ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_PAGINGPRIORITY_PRIOLEVEL1, LIBLTE_S1AP_PAGINGPRIORITY_PRIOLEVEL2, LIBLTE_S1AP_PAGINGPRIORITY_PRIOLEVEL3, LIBLTE_S1AP_PAGINGPRIORITY_PRIOLEVEL4, LIBLTE_S1AP_PAGINGPRIORITY_PRIOLEVEL5, LIBLTE_S1AP_PAGINGPRIORITY_PRIOLEVEL6, LIBLTE_S1AP_PAGINGPRIORITY_PRIOLEVEL7, LIBLTE_S1AP_PAGINGPRIORITY_PRIOLEVEL8, LIBLTE_S1AP_PAGINGPRIORITY_N_ITEMS, } LIBLTE_S1AP_PAGINGPRIORITY_ENUM; static const char liblte_s1ap_pagingpriority_text[LIBLTE_S1AP_PAGINGPRIORITY_N_ITEMS][80] = { "priolevel1", "priolevel2", "priolevel3", "priolevel4", "priolevel5", "priolevel6", "priolevel7", "priolevel8", }; typedef struct { bool ext; LIBLTE_S1AP_PAGINGPRIORITY_ENUM e; } LIBLTE_S1AP_PAGINGPRIORITY_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_pagingpriority(LIBLTE_S1AP_PAGINGPRIORITY_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_pagingpriority(uint8_t** ptr, LIBLTE_S1AP_PAGINGPRIORITY_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE PriorityLevel INTEGER ********************************************************************************/ typedef struct { uint8_t PriorityLevel; } LIBLTE_S1AP_PRIORITYLEVEL_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_prioritylevel(LIBLTE_S1AP_PRIORITYLEVEL_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_prioritylevel(uint8_t** ptr, LIBLTE_S1AP_PRIORITYLEVEL_STRUCT* ie); /******************************************************************************* /* ProtocolIE ECGIListForRestart DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_EUTRAN_CGI_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_ECGILISTFORRESTART_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ecgilistforrestart(LIBLTE_S1AP_ECGILISTFORRESTART_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ecgilistforrestart(uint8_t** ptr, LIBLTE_S1AP_ECGILISTFORRESTART_STRUCT* ie); /******************************************************************************* /* ProtocolIE SourceeNB_ID SEQUENCE ********************************************************************************/ typedef struct { LIBLTE_S1AP_GLOBAL_ENB_ID_STRUCT global_ENB_ID; LIBLTE_S1AP_TAI_STRUCT selected_TAI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_SOURCEENB_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_sourceenb_id(LIBLTE_S1AP_SOURCEENB_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_sourceenb_id(uint8_t** ptr, LIBLTE_S1AP_SOURCEENB_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE ServedPLMNs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:32 typedef struct { uint32_t len; LIBLTE_S1AP_TBCD_STRING_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_SERVEDPLMNS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_servedplmns(LIBLTE_S1AP_SERVEDPLMNS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_servedplmns(uint8_t** ptr, LIBLTE_S1AP_SERVEDPLMNS_STRUCT* ie); /******************************************************************************* /* ProtocolIE SupportedTAs_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TAC_STRUCT tAC; LIBLTE_S1AP_BPLMNS_STRUCT broadcastPLMNs; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_SUPPORTEDTAS_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_supportedtas_item(LIBLTE_S1AP_SUPPORTEDTAS_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_supportedtas_item(uint8_t** ptr, LIBLTE_S1AP_SUPPORTEDTAS_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAIListforMDT DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:8 typedef struct { uint32_t len; LIBLTE_S1AP_TAI_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_TAILISTFORMDT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tailistformdt(LIBLTE_S1AP_TAILISTFORMDT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tailistformdt(uint8_t** ptr, LIBLTE_S1AP_TAILISTFORMDT_STRUCT* ie); /******************************************************************************* /* ProtocolIE CompletedCellinTAI_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EUTRAN_CGI_STRUCT eCGI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_COMPLETEDCELLINTAI_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_completedcellintai_item(LIBLTE_S1AP_COMPLETEDCELLINTAI_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_completedcellintai_item(uint8_t** ptr, LIBLTE_S1AP_COMPLETEDCELLINTAI_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE TargeteNB_ID SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_GLOBAL_ENB_ID_STRUCT global_ENB_ID; LIBLTE_S1AP_TAI_STRUCT selected_TAI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TARGETENB_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetenb_id(LIBLTE_S1AP_TARGETENB_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetenb_id(uint8_t** ptr, LIBLTE_S1AP_TARGETENB_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE TargetBSS_ToSourceBSS_TransparentContainer DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_TARGETBSS_TOSOURCEBSS_TRANSPARENTCONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetbss_tosourcebss_transparentcontainer( LIBLTE_S1AP_TARGETBSS_TOSOURCEBSS_TRANSPARENTCONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetbss_tosourcebss_transparentcontainer( uint8_t** ptr, LIBLTE_S1AP_TARGETBSS_TOSOURCEBSS_TRANSPARENTCONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAIListForRestart DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:2048 typedef struct { uint32_t len; LIBLTE_S1AP_TAI_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_TAILISTFORRESTART_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tailistforrestart(LIBLTE_S1AP_TAILISTFORRESTART_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tailistforrestart(uint8_t** ptr, LIBLTE_S1AP_TAILISTFORRESTART_STRUCT* ie); /******************************************************************************* /* ProtocolIE UserLocationInformation SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EUTRAN_CGI_STRUCT eutran_cgi; LIBLTE_S1AP_TAI_STRUCT tai; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_USERLOCATIONINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_userlocationinformation(LIBLTE_S1AP_USERLOCATIONINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_userlocationinformation(uint8_t** ptr, LIBLTE_S1AP_USERLOCATIONINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE ENBX2ExtTLAs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:16 typedef struct { uint32_t len; LIBLTE_S1AP_ENBX2EXTTLA_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_ENBX2EXTTLAS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbx2exttlas(LIBLTE_S1AP_ENBX2EXTTLAS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbx2exttlas(uint8_t** ptr, LIBLTE_S1AP_ENBX2EXTTLAS_STRUCT* ie); /******************************************************************************* /* ProtocolIE AllocationAndRetentionPriority SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_PRIORITYLEVEL_STRUCT priorityLevel; LIBLTE_S1AP_PRE_EMPTIONCAPABILITY_ENUM pre_emptionCapability; LIBLTE_S1AP_PRE_EMPTIONVULNERABILITY_ENUM pre_emptionVulnerability; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_ALLOCATIONANDRETENTIONPRIORITY_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_allocationandretentionpriority(LIBLTE_S1AP_ALLOCATIONANDRETENTIONPRIORITY_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_allocationandretentionpriority(uint8_t** ptr, LIBLTE_S1AP_ALLOCATIONANDRETENTIONPRIORITY_STRUCT* ie); /******************************************************************************* /* ProtocolIE CancelledCellinEAI_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EUTRAN_CGI_STRUCT eCGI; LIBLTE_S1AP_NUMBEROFBROADCASTS_STRUCT numberOfBroadcasts; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CANCELLEDCELLINEAI_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cancelledcellineai_item(LIBLTE_S1AP_CANCELLEDCELLINEAI_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cancelledcellineai_item(uint8_t** ptr, LIBLTE_S1AP_CANCELLEDCELLINEAI_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE CancelledCellinTAI_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EUTRAN_CGI_STRUCT eCGI; LIBLTE_S1AP_NUMBEROFBROADCASTS_STRUCT numberOfBroadcasts; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CANCELLEDCELLINTAI_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cancelledcellintai_item(LIBLTE_S1AP_CANCELLEDCELLINTAI_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cancelledcellintai_item(uint8_t** ptr, LIBLTE_S1AP_CANCELLEDCELLINTAI_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE CellID_Broadcast_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EUTRAN_CGI_STRUCT eCGI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CELLID_BROADCAST_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellid_broadcast_item(LIBLTE_S1AP_CELLID_BROADCAST_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellid_broadcast_item(uint8_t** ptr, LIBLTE_S1AP_CELLID_BROADCAST_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE CellID_Cancelled_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EUTRAN_CGI_STRUCT eCGI; LIBLTE_S1AP_NUMBEROFBROADCASTS_STRUCT numberOfBroadcasts; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CELLID_CANCELLED_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellid_cancelled_item(LIBLTE_S1AP_CELLID_CANCELLED_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellid_cancelled_item(uint8_t** ptr, LIBLTE_S1AP_CELLID_CANCELLED_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE CellIdListforMDT DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:32 typedef struct { uint32_t len; LIBLTE_S1AP_EUTRAN_CGI_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_CELLIDLISTFORMDT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellidlistformdt(LIBLTE_S1AP_CELLIDLISTFORMDT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellidlistformdt(uint8_t** ptr, LIBLTE_S1AP_CELLIDLISTFORMDT_STRUCT* ie); /******************************************************************************* /* ProtocolIE CSG_Id STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_CSG_ID_BIT_STRING_LEN 27 typedef struct { uint8_t buffer[27]; } LIBLTE_S1AP_CSG_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_csg_id(LIBLTE_S1AP_CSG_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_csg_id(uint8_t** ptr, LIBLTE_S1AP_CSG_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE CSG_IdList_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CSG_ID_STRUCT cSG_Id; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CSG_IDLIST_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_csg_idlist_item(LIBLTE_S1AP_CSG_IDLIST_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_csg_idlist_item(uint8_t** ptr, LIBLTE_S1AP_CSG_IDLIST_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE Direct_Forwarding_Path_Availability ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_DIRECT_FORWARDING_PATH_AVAILABILITY_DIRECTPATHAVAILABLE, LIBLTE_S1AP_DIRECT_FORWARDING_PATH_AVAILABILITY_N_ITEMS, } LIBLTE_S1AP_DIRECT_FORWARDING_PATH_AVAILABILITY_ENUM; static const char liblte_s1ap_direct_forwarding_path_availability_text[LIBLTE_S1AP_DIRECT_FORWARDING_PATH_AVAILABILITY_N_ITEMS][80] = { "directPathAvailable", }; typedef struct { bool ext; LIBLTE_S1AP_DIRECT_FORWARDING_PATH_AVAILABILITY_ENUM e; } LIBLTE_S1AP_DIRECT_FORWARDING_PATH_AVAILABILITY_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_direct_forwarding_path_availability(LIBLTE_S1AP_DIRECT_FORWARDING_PATH_AVAILABILITY_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_direct_forwarding_path_availability(uint8_t** ptr, LIBLTE_S1AP_DIRECT_FORWARDING_PATH_AVAILABILITY_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE CompletedCellinEAI_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EUTRAN_CGI_STRUCT eCGI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_COMPLETEDCELLINEAI_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_completedcellineai_item(LIBLTE_S1AP_COMPLETEDCELLINEAI_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_completedcellineai_item(uint8_t** ptr, LIBLTE_S1AP_COMPLETEDCELLINEAI_ITEM_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABInformationList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABINFORMATIONLISTITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABINFORMATIONLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabinformationlist(LIBLTE_S1AP_E_RABINFORMATIONLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabinformationlist(uint8_t** ptr, LIBLTE_S1AP_E_RABINFORMATIONLIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE ForbiddenTAs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:16 typedef struct { uint32_t len; LIBLTE_S1AP_FORBIDDENTAS_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_FORBIDDENTAS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_forbiddentas(LIBLTE_S1AP_FORBIDDENTAS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_forbiddentas(uint8_t** ptr, LIBLTE_S1AP_FORBIDDENTAS_STRUCT* ie); /******************************************************************************* /* ProtocolIE GUMMEI SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TBCD_STRING_STRUCT pLMN_Identity; LIBLTE_S1AP_MME_GROUP_ID_STRUCT mME_Group_ID; LIBLTE_S1AP_MME_CODE_STRUCT mME_Code; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_GUMMEI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_gummei(LIBLTE_S1AP_GUMMEI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_gummei(uint8_t** ptr, LIBLTE_S1AP_GUMMEI_STRUCT* ie); /******************************************************************************* /* ProtocolIE LoggedMDT SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_LOGGINGINTERVAL_ENUM loggingInterval; LIBLTE_S1AP_LOGGINGDURATION_ENUM loggingDuration; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_LOGGEDMDT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_loggedmdt(LIBLTE_S1AP_LOGGEDMDT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_loggedmdt(uint8_t** ptr, LIBLTE_S1AP_LOGGEDMDT_STRUCT* ie); /******************************************************************************* /* ProtocolIE NASSecurityParametersfromE_UTRAN DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_NASSECURITYPARAMETERSFROME_UTRAN_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_nassecurityparametersfrome_utran(LIBLTE_S1AP_NASSECURITYPARAMETERSFROME_UTRAN_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_nassecurityparametersfrome_utran(uint8_t** ptr, LIBLTE_S1AP_NASSECURITYPARAMETERSFROME_UTRAN_STRUCT* ie); /******************************************************************************* /* ProtocolIE ReportAmountMDT ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_REPORTAMOUNTMDT_R1, LIBLTE_S1AP_REPORTAMOUNTMDT_R2, LIBLTE_S1AP_REPORTAMOUNTMDT_R4, LIBLTE_S1AP_REPORTAMOUNTMDT_R8, LIBLTE_S1AP_REPORTAMOUNTMDT_R16, LIBLTE_S1AP_REPORTAMOUNTMDT_R32, LIBLTE_S1AP_REPORTAMOUNTMDT_R64, LIBLTE_S1AP_REPORTAMOUNTMDT_RINFINITY, LIBLTE_S1AP_REPORTAMOUNTMDT_N_ITEMS, } LIBLTE_S1AP_REPORTAMOUNTMDT_ENUM; static const char liblte_s1ap_reportamountmdt_text[LIBLTE_S1AP_REPORTAMOUNTMDT_N_ITEMS][80] = { "r1", "r2", "r4", "r8", "r16", "r32", "r64", "rinfinity", }; LIBLTE_ERROR_ENUM liblte_s1ap_pack_reportamountmdt(LIBLTE_S1AP_REPORTAMOUNTMDT_ENUM* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_reportamountmdt(uint8_t** ptr, LIBLTE_S1AP_REPORTAMOUNTMDT_ENUM* ie); /******************************************************************************* /* ProtocolIE ServedGUMMEIsItem SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_SERVEDPLMNS_STRUCT servedPLMNs; LIBLTE_S1AP_SERVEDGROUPIDS_STRUCT servedGroupIDs; LIBLTE_S1AP_SERVEDMMECS_STRUCT servedMMECs; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_SERVEDGUMMEISITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_servedgummeisitem(LIBLTE_S1AP_SERVEDGUMMEISITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_servedgummeisitem(uint8_t** ptr, LIBLTE_S1AP_SERVEDGUMMEISITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE S_TMSI SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_CODE_STRUCT mMEC; LIBLTE_S1AP_M_TMSI_STRUCT m_TMSI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_S_TMSI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_s_tmsi(LIBLTE_S1AP_S_TMSI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_s_tmsi(uint8_t** ptr, LIBLTE_S1AP_S_TMSI_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAIListforWarning DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_TAI_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_TAILISTFORWARNING_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tailistforwarning(LIBLTE_S1AP_TAILISTFORWARNING_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tailistforwarning(uint8_t** ptr, LIBLTE_S1AP_TAILISTFORWARNING_STRUCT* ie); /******************************************************************************* /* ProtocolIE CompletedCellinTAI DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_COMPLETEDCELLINTAI_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_COMPLETEDCELLINTAI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_completedcellintai(LIBLTE_S1AP_COMPLETEDCELLINTAI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_completedcellintai(uint8_t** ptr, LIBLTE_S1AP_COMPLETEDCELLINTAI_STRUCT* ie); /******************************************************************************* /* ProtocolIE TargetRNC_ID SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_LAI_STRUCT lAI; LIBLTE_S1AP_RAC_STRUCT rAC; bool rAC_present; LIBLTE_S1AP_RNC_ID_STRUCT rNC_ID; LIBLTE_S1AP_EXTENDEDRNC_ID_STRUCT extendedRNC_ID; bool extendedRNC_ID_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TARGETRNC_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetrnc_id(LIBLTE_S1AP_TARGETRNC_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetrnc_id(uint8_t** ptr, LIBLTE_S1AP_TARGETRNC_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE UE_associatedLogicalS1_ConnectionItem SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT mME_UE_S1AP_ID; bool mME_UE_S1AP_ID_present; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; bool eNB_UE_S1AP_ID_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ue_associatedlogicals1_connectionitem(LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ue_associatedlogicals1_connectionitem(uint8_t** ptr, LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE UEPagingID CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_UEPAGINGID_CHOICE_S_TMSI, LIBLTE_S1AP_UEPAGINGID_CHOICE_IMSI, LIBLTE_S1AP_UEPAGINGID_CHOICE_N_ITEMS, } LIBLTE_S1AP_UEPAGINGID_CHOICE_ENUM; static const char liblte_s1ap_uepagingid_choice_text[LIBLTE_S1AP_UEPAGINGID_CHOICE_N_ITEMS][50] = { "s_TMSI", "iMSI", }; typedef union { LIBLTE_S1AP_S_TMSI_STRUCT s_TMSI; LIBLTE_S1AP_IMSI_STRUCT iMSI; } LIBLTE_S1AP_UEPAGINGID_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_UEPAGINGID_CHOICE_UNION choice; LIBLTE_S1AP_UEPAGINGID_CHOICE_ENUM choice_type; } LIBLTE_S1AP_UEPAGINGID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uepagingid(LIBLTE_S1AP_UEPAGINGID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uepagingid(uint8_t** ptr, LIBLTE_S1AP_UEPAGINGID_STRUCT* ie); /******************************************************************************* /* ProtocolIE Bearers_SubjectToStatusTransfer_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_COUNTVALUE_STRUCT uL_COUNTvalue; LIBLTE_S1AP_COUNTVALUE_STRUCT dL_COUNTvalue; LIBLTE_S1AP_RECEIVESTATUSOFULPDCPSDUS_STRUCT receiveStatusofULPDCPSDUs; bool receiveStatusofULPDCPSDUs_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_bearers_subjecttostatustransfer_item(LIBLTE_S1AP_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_bearers_subjecttostatustransfer_item(uint8_t** ptr, LIBLTE_S1AP_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE CancelledCellinEAI DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_CANCELLEDCELLINEAI_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_CANCELLEDCELLINEAI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cancelledcellineai(LIBLTE_S1AP_CANCELLEDCELLINEAI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cancelledcellineai(uint8_t** ptr, LIBLTE_S1AP_CANCELLEDCELLINEAI_STRUCT* ie); /******************************************************************************* /* ProtocolIE CellID_Broadcast DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_CELLID_BROADCAST_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_CELLID_BROADCAST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellid_broadcast(LIBLTE_S1AP_CELLID_BROADCAST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellid_broadcast(uint8_t** ptr, LIBLTE_S1AP_CELLID_BROADCAST_STRUCT* ie); /******************************************************************************* /* ProtocolIE CellBasedMDT SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CELLIDLISTFORMDT_STRUCT cellIdListforMDT; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CELLBASEDMDT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellbasedmdt(LIBLTE_S1AP_CELLBASEDMDT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellbasedmdt(uint8_t** ptr, LIBLTE_S1AP_CELLBASEDMDT_STRUCT* ie); /******************************************************************************* /* ProtocolIE CSG_IdList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_CSG_IDLIST_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_CSG_IDLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_csg_idlist(LIBLTE_S1AP_CSG_IDLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_csg_idlist(uint8_t** ptr, LIBLTE_S1AP_CSG_IDLIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE ECGIList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_EUTRAN_CGI_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_ECGILIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ecgilist(LIBLTE_S1AP_ECGILIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ecgilist(uint8_t** ptr, LIBLTE_S1AP_ECGILIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE EmergencyAreaID_Cancelled_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EMERGENCYAREAID_STRUCT emergencyAreaID; LIBLTE_S1AP_CANCELLEDCELLINEAI_STRUCT cancelledCellinEAI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_EMERGENCYAREAID_CANCELLED_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_emergencyareaid_cancelled_item(LIBLTE_S1AP_EMERGENCYAREAID_CANCELLED_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_emergencyareaid_cancelled_item(uint8_t** ptr, LIBLTE_S1AP_EMERGENCYAREAID_CANCELLED_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE GERAN_Cell_ID SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_LAI_STRUCT lAI; LIBLTE_S1AP_RAC_STRUCT rAC; LIBLTE_S1AP_CI_STRUCT cI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_GERAN_CELL_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_geran_cell_id(LIBLTE_S1AP_GERAN_CELL_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_geran_cell_id(uint8_t** ptr, LIBLTE_S1AP_GERAN_CELL_ID_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rablist(LIBLTE_S1AP_E_RABLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rablist(uint8_t** ptr, LIBLTE_S1AP_E_RABLIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE ForbiddenLAs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:16 typedef struct { uint32_t len; LIBLTE_S1AP_FORBIDDENLAS_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_FORBIDDENLAS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_forbiddenlas(LIBLTE_S1AP_FORBIDDENLAS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_forbiddenlas(uint8_t** ptr, LIBLTE_S1AP_FORBIDDENLAS_STRUCT* ie); /******************************************************************************* /* ProtocolIE MDT_Location_Info STATIC BIT STRING ********************************************************************************/ #define LIBLTE_S1AP_MDT_LOCATION_INFO_BIT_STRING_LEN 8 typedef struct { uint8_t buffer[8]; } LIBLTE_S1AP_MDT_LOCATION_INFO_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mdt_location_info(LIBLTE_S1AP_MDT_LOCATION_INFO_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mdt_location_info(uint8_t** ptr, LIBLTE_S1AP_MDT_LOCATION_INFO_STRUCT* ie); /******************************************************************************* /* ProtocolIE M1PeriodicReporting SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_REPORTINTERVALMDT_ENUM reportInterval; LIBLTE_S1AP_REPORTAMOUNTMDT_ENUM reportAmount; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_M1PERIODICREPORTING_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m1periodicreporting(LIBLTE_S1AP_M1PERIODICREPORTING_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m1periodicreporting(uint8_t** ptr, LIBLTE_S1AP_M1PERIODICREPORTING_STRUCT* ie); /******************************************************************************* /* ProtocolIE eHRPD_Sector_ID DYNAMIC OCTET STRING ********************************************************************************/ // lb:0, ub:16318 typedef struct { uint32_t n_octets; uint8_t buffer[16318]; } LIBLTE_S1AP_EHRPD_SECTOR_ID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ehrpd_sector_id(LIBLTE_S1AP_EHRPD_SECTOR_ID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ehrpd_sector_id(uint8_t** ptr, LIBLTE_S1AP_EHRPD_SECTOR_ID_STRUCT* ie); /******************************************************************************* /* ProtocolIE RIMRoutingAddress CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_RIMROUTINGADDRESS_CHOICE_GERAN_CELL_ID, LIBLTE_S1AP_RIMROUTINGADDRESS_CHOICE_TARGETRNC_ID, LIBLTE_S1AP_RIMROUTINGADDRESS_CHOICE_EHRPD_SECTOR_ID, LIBLTE_S1AP_RIMROUTINGADDRESS_CHOICE_N_ITEMS, } LIBLTE_S1AP_RIMROUTINGADDRESS_CHOICE_ENUM; static const char liblte_s1ap_rimroutingaddress_choice_text[LIBLTE_S1AP_RIMROUTINGADDRESS_CHOICE_N_ITEMS][50] = { "gERAN_Cell_ID", "targetRNC_ID", "eHRPD_Sector_ID", }; typedef union { LIBLTE_S1AP_GERAN_CELL_ID_STRUCT gERAN_Cell_ID; LIBLTE_S1AP_TARGETRNC_ID_STRUCT targetRNC_ID; LIBLTE_S1AP_EHRPD_SECTOR_ID_STRUCT eHRPD_Sector_ID; } LIBLTE_S1AP_RIMROUTINGADDRESS_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_RIMROUTINGADDRESS_CHOICE_UNION choice; LIBLTE_S1AP_RIMROUTINGADDRESS_CHOICE_ENUM choice_type; } LIBLTE_S1AP_RIMROUTINGADDRESS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_rimroutingaddress(LIBLTE_S1AP_RIMROUTINGADDRESS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_rimroutingaddress(uint8_t** ptr, LIBLTE_S1AP_RIMROUTINGADDRESS_STRUCT* ie); /******************************************************************************* /* ProtocolIE ServedGUMMEIs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:8 typedef struct { uint32_t len; LIBLTE_S1AP_SERVEDGUMMEISITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_SERVEDGUMMEIS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_servedgummeis(LIBLTE_S1AP_SERVEDGUMMEIS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_servedgummeis(uint8_t** ptr, LIBLTE_S1AP_SERVEDGUMMEIS_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAIBasedMDT SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TAILISTFORMDT_STRUCT tAIListforMDT; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TAIBASEDMDT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_taibasedmdt(LIBLTE_S1AP_TAIBASEDMDT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_taibasedmdt(uint8_t** ptr, LIBLTE_S1AP_TAIBASEDMDT_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAI_Broadcast_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TAI_STRUCT tAI; LIBLTE_S1AP_COMPLETEDCELLINTAI_STRUCT completedCellinTAI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TAI_BROADCAST_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tai_broadcast_item(LIBLTE_S1AP_TAI_BROADCAST_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tai_broadcast_item(uint8_t** ptr, LIBLTE_S1AP_TAI_BROADCAST_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE TargetID CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_TARGETID_CHOICE_TARGETENB_ID, LIBLTE_S1AP_TARGETID_CHOICE_TARGETRNC_ID, LIBLTE_S1AP_TARGETID_CHOICE_CGI, LIBLTE_S1AP_TARGETID_CHOICE_N_ITEMS, } LIBLTE_S1AP_TARGETID_CHOICE_ENUM; static const char liblte_s1ap_targetid_choice_text[LIBLTE_S1AP_TARGETID_CHOICE_N_ITEMS][50] = { "targeteNB_ID", "targetRNC_ID", "cGI", }; typedef union { LIBLTE_S1AP_TARGETENB_ID_STRUCT targeteNB_ID; LIBLTE_S1AP_TARGETRNC_ID_STRUCT targetRNC_ID; LIBLTE_S1AP_CGI_STRUCT cGI; } LIBLTE_S1AP_TARGETID_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_TARGETID_CHOICE_UNION choice; LIBLTE_S1AP_TARGETID_CHOICE_ENUM choice_type; } LIBLTE_S1AP_TARGETID_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetid(LIBLTE_S1AP_TARGETID_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetid(uint8_t** ptr, LIBLTE_S1AP_TARGETID_STRUCT* ie); /******************************************************************************* /* ProtocolIE WarningAreaList CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_WARNINGAREALIST_CHOICE_CELLIDLIST, LIBLTE_S1AP_WARNINGAREALIST_CHOICE_TRACKINGAREALISTFORWARNING, LIBLTE_S1AP_WARNINGAREALIST_CHOICE_EMERGENCYAREAIDLIST, LIBLTE_S1AP_WARNINGAREALIST_CHOICE_N_ITEMS, } LIBLTE_S1AP_WARNINGAREALIST_CHOICE_ENUM; static const char liblte_s1ap_warningarealist_choice_text[LIBLTE_S1AP_WARNINGAREALIST_CHOICE_N_ITEMS][50] = { "cellIDList", "trackingAreaListforWarning", "emergencyAreaIDList", }; typedef union { LIBLTE_S1AP_ECGILIST_STRUCT cellIDList; LIBLTE_S1AP_TAILISTFORWARNING_STRUCT trackingAreaListforWarning; LIBLTE_S1AP_EMERGENCYAREAIDLIST_STRUCT emergencyAreaIDList; } LIBLTE_S1AP_WARNINGAREALIST_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_WARNINGAREALIST_CHOICE_UNION choice; LIBLTE_S1AP_WARNINGAREALIST_CHOICE_ENUM choice_type; } LIBLTE_S1AP_WARNINGAREALIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_warningarealist(LIBLTE_S1AP_WARNINGAREALIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_warningarealist(uint8_t** ptr, LIBLTE_S1AP_WARNINGAREALIST_STRUCT* ie); // TODO: Type pLMNWide NULL /******************************************************************************* /* ProtocolIE AreaScopeOfMDT CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_AREASCOPEOFMDT_CHOICE_CELLBASED, LIBLTE_S1AP_AREASCOPEOFMDT_CHOICE_TABASED, LIBLTE_S1AP_AREASCOPEOFMDT_CHOICE_PLMNWIDE, LIBLTE_S1AP_AREASCOPEOFMDT_CHOICE_TAIBASED, LIBLTE_S1AP_AREASCOPEOFMDT_CHOICE_N_ITEMS, } LIBLTE_S1AP_AREASCOPEOFMDT_CHOICE_ENUM; static const char liblte_s1ap_areascopeofmdt_choice_text[LIBLTE_S1AP_AREASCOPEOFMDT_CHOICE_N_ITEMS][50] = { "cellBased", "tABased", "pLMNWide", "tAIBased", }; typedef union { LIBLTE_S1AP_CELLBASEDMDT_STRUCT cellBased; LIBLTE_S1AP_TABASEDMDT_STRUCT tABased; // TODO: NULL pLMNWide; LIBLTE_S1AP_TAIBASEDMDT_STRUCT tAIBased; } LIBLTE_S1AP_AREASCOPEOFMDT_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_AREASCOPEOFMDT_CHOICE_UNION choice; LIBLTE_S1AP_AREASCOPEOFMDT_CHOICE_ENUM choice_type; } LIBLTE_S1AP_AREASCOPEOFMDT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_areascopeofmdt(LIBLTE_S1AP_AREASCOPEOFMDT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_areascopeofmdt(uint8_t** ptr, LIBLTE_S1AP_AREASCOPEOFMDT_STRUCT* ie); /******************************************************************************* /* ProtocolIE CancelledCellinTAI DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_CANCELLEDCELLINTAI_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_CANCELLEDCELLINTAI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cancelledcellintai(LIBLTE_S1AP_CANCELLEDCELLINTAI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cancelledcellintai(uint8_t** ptr, LIBLTE_S1AP_CANCELLEDCELLINTAI_STRUCT* ie); /******************************************************************************* /* ProtocolIE CellType SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CELL_SIZE_ENUM_EXT cell_Size; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CELLTYPE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_celltype(LIBLTE_S1AP_CELLTYPE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_celltype(uint8_t** ptr, LIBLTE_S1AP_CELLTYPE_STRUCT* ie); /******************************************************************************* /* ProtocolIE EmergencyAreaID_Cancelled DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_EMERGENCYAREAID_CANCELLED_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_EMERGENCYAREAID_CANCELLED_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_emergencyareaid_cancelled(LIBLTE_S1AP_EMERGENCYAREAID_CANCELLED_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_emergencyareaid_cancelled(uint8_t** ptr, LIBLTE_S1AP_EMERGENCYAREAID_CANCELLED_STRUCT* ie); /******************************************************************************* /* ProtocolIE GUMMEIList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_GUMMEI_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_GUMMEILIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_gummeilist(LIBLTE_S1AP_GUMMEILIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_gummeilist(uint8_t** ptr, LIBLTE_S1AP_GUMMEILIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABLevelQoSParameters SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_QCI_STRUCT qCI; LIBLTE_S1AP_ALLOCATIONANDRETENTIONPRIORITY_STRUCT allocationRetentionPriority; LIBLTE_S1AP_GBR_QOSINFORMATION_STRUCT gbrQosInformation; bool gbrQosInformation_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABLEVELQOSPARAMETERS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rablevelqosparameters(LIBLTE_S1AP_E_RABLEVELQOSPARAMETERS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rablevelqosparameters(uint8_t** ptr, LIBLTE_S1AP_E_RABLEVELQOSPARAMETERS_STRUCT* ie); /******************************************************************************* /* ProtocolIE LastVisitedEUTRANCellInformation SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EUTRAN_CGI_STRUCT global_Cell_ID; LIBLTE_S1AP_CELLTYPE_STRUCT cellType; LIBLTE_S1AP_TIME_UE_STAYEDINCELL_STRUCT time_UE_StayedInCell; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_LASTVISITEDEUTRANCELLINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_lastvisitedeutrancellinformation(LIBLTE_S1AP_LASTVISITEDEUTRANCELLINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lastvisitedeutrancellinformation(uint8_t** ptr, LIBLTE_S1AP_LASTVISITEDEUTRANCELLINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE RIMTransfer SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_RIMINFORMATION_STRUCT rIMInformation; LIBLTE_S1AP_RIMROUTINGADDRESS_STRUCT rIMRoutingAddress; bool rIMRoutingAddress_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_RIMTRANSFER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_rimtransfer(LIBLTE_S1AP_RIMTRANSFER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_rimtransfer(uint8_t** ptr, LIBLTE_S1AP_RIMTRANSFER_STRUCT* ie); /******************************************************************************* /* ProtocolIE SupportedTAs DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_SUPPORTEDTAS_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_SUPPORTEDTAS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_supportedtas(LIBLTE_S1AP_SUPPORTEDTAS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_supportedtas(uint8_t** ptr, LIBLTE_S1AP_SUPPORTEDTAS_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAI_Cancelled_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TAI_STRUCT tAI; LIBLTE_S1AP_CANCELLEDCELLINTAI_STRUCT cancelledCellinTAI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TAI_CANCELLED_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tai_cancelled_item(LIBLTE_S1AP_TAI_CANCELLED_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tai_cancelled_item(uint8_t** ptr, LIBLTE_S1AP_TAI_CANCELLED_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE X2TNLConfigurationInfo SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_ENBX2TLAS_STRUCT eNBX2TransportLayerAddresses; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_X2TNLCONFIGURATIONINFO_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_x2tnlconfigurationinfo(LIBLTE_S1AP_X2TNLCONFIGURATIONINFO_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_x2tnlconfigurationinfo(uint8_t** ptr, LIBLTE_S1AP_X2TNLCONFIGURATIONINFO_STRUCT* ie); /******************************************************************************* /* Protocol Container List Bearers_SubjectToStatusTransferList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_BEARERS_SUBJECTTOSTATUSTRANSFERLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_bearers_subjecttostatustransferlist(LIBLTE_S1AP_BEARERS_SUBJECTTOSTATUSTRANSFERLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_bearers_subjecttostatustransferlist(uint8_t** ptr, LIBLTE_S1AP_BEARERS_SUBJECTTOSTATUSTRANSFERLIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE CellID_Cancelled DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_CELLID_CANCELLED_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_CELLID_CANCELLED_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellid_cancelled(LIBLTE_S1AP_CELLID_CANCELLED_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellid_cancelled(uint8_t** ptr, LIBLTE_S1AP_CELLID_CANCELLED_STRUCT* ie); /******************************************************************************* /* ProtocolIE CompletedCellinEAI DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_COMPLETEDCELLINEAI_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_COMPLETEDCELLINEAI_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_completedcellineai(LIBLTE_S1AP_COMPLETEDCELLINEAI_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_completedcellineai(uint8_t** ptr, LIBLTE_S1AP_COMPLETEDCELLINEAI_STRUCT* ie); /******************************************************************************* /* ProtocolIE HandoverRestrictionList SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TBCD_STRING_STRUCT servingPLMN; LIBLTE_S1AP_EPLMNS_STRUCT equivalentPLMNs; bool equivalentPLMNs_present; LIBLTE_S1AP_FORBIDDENTAS_STRUCT forbiddenTAs; bool forbiddenTAs_present; LIBLTE_S1AP_FORBIDDENLAS_STRUCT forbiddenLAs; bool forbiddenLAs_present; LIBLTE_S1AP_FORBIDDENINTERRATS_ENUM_EXT forbiddenInterRATs; bool forbiddenInterRATs_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_HANDOVERRESTRICTIONLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handoverrestrictionlist(LIBLTE_S1AP_HANDOVERRESTRICTIONLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handoverrestrictionlist(uint8_t** ptr, LIBLTE_S1AP_HANDOVERRESTRICTIONLIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE LastVisitedCell_Item CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_LASTVISITEDCELL_ITEM_CHOICE_E_UTRAN_CELL, LIBLTE_S1AP_LASTVISITEDCELL_ITEM_CHOICE_UTRAN_CELL, LIBLTE_S1AP_LASTVISITEDCELL_ITEM_CHOICE_GERAN_CELL, LIBLTE_S1AP_LASTVISITEDCELL_ITEM_CHOICE_N_ITEMS, } LIBLTE_S1AP_LASTVISITEDCELL_ITEM_CHOICE_ENUM; static const char liblte_s1ap_lastvisitedcell_item_choice_text[LIBLTE_S1AP_LASTVISITEDCELL_ITEM_CHOICE_N_ITEMS][50] = { "e_UTRAN_Cell", "uTRAN_Cell", "gERAN_Cell", }; typedef union { LIBLTE_S1AP_LASTVISITEDEUTRANCELLINFORMATION_STRUCT e_UTRAN_Cell; LIBLTE_S1AP_LASTVISITEDUTRANCELLINFORMATION_STRUCT uTRAN_Cell; LIBLTE_S1AP_LASTVISITEDGERANCELLINFORMATION_STRUCT gERAN_Cell; } LIBLTE_S1AP_LASTVISITEDCELL_ITEM_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_LASTVISITEDCELL_ITEM_CHOICE_UNION choice; LIBLTE_S1AP_LASTVISITEDCELL_ITEM_CHOICE_ENUM choice_type; } LIBLTE_S1AP_LASTVISITEDCELL_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_lastvisitedcell_item(LIBLTE_S1AP_LASTVISITEDCELL_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lastvisitedcell_item(uint8_t** ptr, LIBLTE_S1AP_LASTVISITEDCELL_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE SONInformationReply SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_X2TNLCONFIGURATIONINFO_STRUCT x2TNLConfigurationInfo; bool x2TNLConfigurationInfo_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_SONINFORMATIONREPLY_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_soninformationreply(LIBLTE_S1AP_SONINFORMATIONREPLY_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_soninformationreply(uint8_t** ptr, LIBLTE_S1AP_SONINFORMATIONREPLY_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAI_Broadcast DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_TAI_BROADCAST_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_TAI_BROADCAST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tai_broadcast(LIBLTE_S1AP_TAI_BROADCAST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tai_broadcast(uint8_t** ptr, LIBLTE_S1AP_TAI_BROADCAST_STRUCT* ie); /******************************************************************************* /* ProtocolIE TimeToWait ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_TIMETOWAIT_V1S, LIBLTE_S1AP_TIMETOWAIT_V2S, LIBLTE_S1AP_TIMETOWAIT_V5S, LIBLTE_S1AP_TIMETOWAIT_V10S, LIBLTE_S1AP_TIMETOWAIT_V20S, LIBLTE_S1AP_TIMETOWAIT_V60S, LIBLTE_S1AP_TIMETOWAIT_N_ITEMS, } LIBLTE_S1AP_TIMETOWAIT_ENUM; static const char liblte_s1ap_timetowait_text[LIBLTE_S1AP_TIMETOWAIT_N_ITEMS][80] = { "v1s", "v2s", "v5s", "v10s", "v20s", "v60s", }; typedef struct { bool ext; LIBLTE_S1AP_TIMETOWAIT_ENUM e; } LIBLTE_S1AP_TIMETOWAIT_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_timetowait(LIBLTE_S1AP_TIMETOWAIT_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_timetowait(uint8_t** ptr, LIBLTE_S1AP_TIMETOWAIT_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE UE_HistoryInformation DYNAMIC SEQUENCE OF ********************************************************************************/ #define LIBLTE_S1AP_UE_HISTORYINFORMATION_BIT_STRING_LEN 32 // FIXME: Check if this size is adequate // lb:1, ub:16 typedef struct { uint32_t len; LIBLTE_S1AP_LASTVISITEDCELL_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_UE_HISTORYINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ue_historyinformation(LIBLTE_S1AP_UE_HISTORYINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ue_historyinformation(uint8_t** ptr, LIBLTE_S1AP_UE_HISTORYINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE CriticalityDiagnostics SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_PROCEDURECODE_STRUCT procedureCode; bool procedureCode_present; LIBLTE_S1AP_TRIGGERINGMESSAGE_ENUM triggeringMessage; bool triggeringMessage_present; LIBLTE_S1AP_CRITICALITY_ENUM procedureCriticality; bool procedureCriticality_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_IE_LIST_STRUCT iEsCriticalityDiagnostics; bool iEsCriticalityDiagnostics_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_criticalitydiagnostics(LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_criticalitydiagnostics(uint8_t** ptr, LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT* ie); /******************************************************************************* /* ProtocolIE EmergencyAreaID_Broadcast_Item SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_EMERGENCYAREAID_STRUCT emergencyAreaID; LIBLTE_S1AP_COMPLETEDCELLINEAI_STRUCT completedCellinEAI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_EMERGENCYAREAID_BROADCAST_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_emergencyareaid_broadcast_item(LIBLTE_S1AP_EMERGENCYAREAID_BROADCAST_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_emergencyareaid_broadcast_item(uint8_t** ptr, LIBLTE_S1AP_EMERGENCYAREAID_BROADCAST_ITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE ImmediateMDT SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MEASUREMENTSTOACTIVATE_STRUCT measurementsToActivate; LIBLTE_S1AP_M1REPORTINGTRIGGER_ENUM_EXT m1reportingTrigger; LIBLTE_S1AP_M1THRESHOLDEVENTA2_STRUCT m1thresholdeventA2; bool m1thresholdeventA2_present; LIBLTE_S1AP_M1PERIODICREPORTING_STRUCT m1periodicReporting; bool m1periodicReporting_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_IMMEDIATEMDT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_immediatemdt(LIBLTE_S1AP_IMMEDIATEMDT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_immediatemdt(uint8_t** ptr, LIBLTE_S1AP_IMMEDIATEMDT_STRUCT* ie); /******************************************************************************* /* ProtocolIE MDTMode CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_MDTMODE_CHOICE_IMMEDIATEMDT, LIBLTE_S1AP_MDTMODE_CHOICE_LOGGEDMDT, LIBLTE_S1AP_MDTMODE_CHOICE_N_ITEMS, } LIBLTE_S1AP_MDTMODE_CHOICE_ENUM; static const char liblte_s1ap_mdtmode_choice_text[LIBLTE_S1AP_MDTMODE_CHOICE_N_ITEMS][50] = { "immediateMDT", "loggedMDT", }; typedef union { LIBLTE_S1AP_IMMEDIATEMDT_STRUCT immediateMDT; LIBLTE_S1AP_LOGGEDMDT_STRUCT loggedMDT; } LIBLTE_S1AP_MDTMODE_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_MDTMODE_CHOICE_UNION choice; LIBLTE_S1AP_MDTMODE_CHOICE_ENUM choice_type; } LIBLTE_S1AP_MDTMODE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mdtmode(LIBLTE_S1AP_MDTMODE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mdtmode(uint8_t** ptr, LIBLTE_S1AP_MDTMODE_STRUCT* ie); /******************************************************************************* /* ProtocolIE SourceeNB_ToTargeteNB_TransparentContainer SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_RRC_CONTAINER_STRUCT rRC_Container; LIBLTE_S1AP_E_RABINFORMATIONLIST_STRUCT e_RABInformationList; bool e_RABInformationList_present; LIBLTE_S1AP_EUTRAN_CGI_STRUCT targetCell_ID; LIBLTE_S1AP_SUBSCRIBERPROFILEIDFORRFP_STRUCT subscriberProfileIDforRFP; bool subscriberProfileIDforRFP_present; LIBLTE_S1AP_UE_HISTORYINFORMATION_STRUCT uE_HistoryInformation; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_SOURCEENB_TOTARGETENB_TRANSPARENTCONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_sourceenb_totargetenb_transparentcontainer( LIBLTE_S1AP_SOURCEENB_TOTARGETENB_TRANSPARENTCONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_sourceenb_totargetenb_transparentcontainer( uint8_t** ptr, LIBLTE_S1AP_SOURCEENB_TOTARGETENB_TRANSPARENTCONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE EmergencyAreaID_Broadcast DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_EMERGENCYAREAID_BROADCAST_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_EMERGENCYAREAID_BROADCAST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_emergencyareaid_broadcast(LIBLTE_S1AP_EMERGENCYAREAID_BROADCAST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_emergencyareaid_broadcast(uint8_t** ptr, LIBLTE_S1AP_EMERGENCYAREAID_BROADCAST_STRUCT* ie); /******************************************************************************* /* ProtocolIE MDT_Configuration SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MDT_ACTIVATION_ENUM_EXT mdt_Activation; LIBLTE_S1AP_AREASCOPEOFMDT_STRUCT areaScopeOfMDT; LIBLTE_S1AP_MDTMODE_STRUCT mDTMode; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_MDT_CONFIGURATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mdt_configuration(LIBLTE_S1AP_MDT_CONFIGURATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mdt_configuration(uint8_t** ptr, LIBLTE_S1AP_MDT_CONFIGURATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAI_Cancelled DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:65535 typedef struct { uint32_t len; LIBLTE_S1AP_TAI_CANCELLED_ITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_TAI_CANCELLED_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tai_cancelled(LIBLTE_S1AP_TAI_CANCELLED_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tai_cancelled(uint8_t** ptr, LIBLTE_S1AP_TAI_CANCELLED_STRUCT* ie); /******************************************************************************* /* ProtocolIE BroadcastCancelledAreaList CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_CHOICE_CELLID_CANCELLED, LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_CHOICE_TAI_CANCELLED, LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_CHOICE_EMERGENCYAREAID_CANCELLED, LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_CHOICE_N_ITEMS, } LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_CHOICE_ENUM; static const char liblte_s1ap_broadcastcancelledarealist_choice_text[LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_CHOICE_N_ITEMS][50] = { "cellID_Cancelled", "tAI_Cancelled", "emergencyAreaID_Cancelled", }; typedef union { LIBLTE_S1AP_CELLID_CANCELLED_STRUCT cellID_Cancelled; LIBLTE_S1AP_TAI_CANCELLED_STRUCT tAI_Cancelled; LIBLTE_S1AP_EMERGENCYAREAID_CANCELLED_STRUCT emergencyAreaID_Cancelled; } LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_CHOICE_UNION choice; LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_CHOICE_ENUM choice_type; } LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_broadcastcancelledarealist(LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_broadcastcancelledarealist(uint8_t** ptr, LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE ENB_StatusTransfer_TransparentContainer SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_BEARERS_SUBJECTTOSTATUSTRANSFERLIST_STRUCT bearers_SubjectToStatusTransferList; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_ENB_STATUSTRANSFER_TRANSPARENTCONTAINER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enb_statustransfer_transparentcontainer(LIBLTE_S1AP_ENB_STATUSTRANSFER_TRANSPARENTCONTAINER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enb_statustransfer_transparentcontainer( uint8_t** ptr, LIBLTE_S1AP_ENB_STATUSTRANSFER_TRANSPARENTCONTAINER_STRUCT* ie); /******************************************************************************* /* ProtocolIE TraceActivation SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_UTRAN_TRACE_ID_STRUCT e_UTRAN_Trace_ID; LIBLTE_S1AP_INTERFACESTOTRACE_STRUCT interfacesToTrace; LIBLTE_S1AP_TRACEDEPTH_ENUM_EXT traceDepth; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT traceCollectionEntityIPAddress; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TRACEACTIVATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_traceactivation(LIBLTE_S1AP_TRACEACTIVATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_traceactivation(uint8_t** ptr, LIBLTE_S1AP_TRACEACTIVATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE BroadcastCompletedAreaList CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_CHOICE_CELLID_BROADCAST, LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_CHOICE_TAI_BROADCAST, LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_CHOICE_EMERGENCYAREAID_BROADCAST, LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_CHOICE_N_ITEMS, } LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_CHOICE_ENUM; static const char liblte_s1ap_broadcastcompletedarealist_choice_text[LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_CHOICE_N_ITEMS][50] = { "cellID_Broadcast", "tAI_Broadcast", "emergencyAreaID_Broadcast", }; typedef union { LIBLTE_S1AP_CELLID_BROADCAST_STRUCT cellID_Broadcast; LIBLTE_S1AP_TAI_BROADCAST_STRUCT tAI_Broadcast; LIBLTE_S1AP_EMERGENCYAREAID_BROADCAST_STRUCT emergencyAreaID_Broadcast; } LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_CHOICE_UNION choice; LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_CHOICE_ENUM choice_type; } LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_broadcastcompletedarealist(LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_broadcastcompletedarealist(uint8_t** ptr, LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE SONInformation CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_SONINFORMATION_CHOICE_SONINFORMATIONREQUEST, LIBLTE_S1AP_SONINFORMATION_CHOICE_SONINFORMATIONREPLY, LIBLTE_S1AP_SONINFORMATION_CHOICE_N_ITEMS, } LIBLTE_S1AP_SONINFORMATION_CHOICE_ENUM; static const char liblte_s1ap_soninformation_choice_text[LIBLTE_S1AP_SONINFORMATION_CHOICE_N_ITEMS][50] = { "sONInformationRequest", "sONInformationReply", }; typedef union { LIBLTE_S1AP_SONINFORMATIONREQUEST_ENUM_EXT sONInformationRequest; LIBLTE_S1AP_SONINFORMATIONREPLY_STRUCT sONInformationReply; } LIBLTE_S1AP_SONINFORMATION_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_SONINFORMATION_CHOICE_UNION choice; LIBLTE_S1AP_SONINFORMATION_CHOICE_ENUM choice_type; } LIBLTE_S1AP_SONINFORMATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_soninformation(LIBLTE_S1AP_SONINFORMATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_soninformation(uint8_t** ptr, LIBLTE_S1AP_SONINFORMATION_STRUCT* ie); /******************************************************************************* /* ProtocolIE SONConfigurationTransfer SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TARGETENB_ID_STRUCT targeteNB_ID; LIBLTE_S1AP_SOURCEENB_ID_STRUCT sourceeNB_ID; LIBLTE_S1AP_SONINFORMATION_STRUCT sONInformation; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_SONCONFIGURATIONTRANSFER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_sonconfigurationtransfer(LIBLTE_S1AP_SONCONFIGURATIONTRANSFER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_sonconfigurationtransfer(uint8_t** ptr, LIBLTE_S1AP_SONCONFIGURATIONTRANSFER_STRUCT* ie); /******************************************************************************* /* ProtocolIE ResetAll ENUMERATED ********************************************************************************/ typedef enum { LIBLTE_S1AP_RESETALL_RESET_ALL, LIBLTE_S1AP_RESETALL_N_ITEMS, } LIBLTE_S1AP_RESETALL_ENUM; static const char liblte_s1ap_resetall_text[LIBLTE_S1AP_RESETALL_N_ITEMS][80] = { "reset-all", }; typedef struct { bool ext; LIBLTE_S1AP_RESETALL_ENUM e; } LIBLTE_S1AP_RESETALL_ENUM_EXT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_resetall(LIBLTE_S1AP_RESETALL_ENUM_EXT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_resetall(uint8_t** ptr, LIBLTE_S1AP_RESETALL_ENUM_EXT* ie); /******************************************************************************* /* ProtocolIE Inter_SystemInformationTransferType CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_CHOICE_RIMTRANSFER, LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_CHOICE_N_ITEMS, } LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_CHOICE_ENUM; static const char liblte_s1ap_inter_systeminformationtransfertype_choice_text [LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_CHOICE_N_ITEMS][50] = { "rIMTransfer", }; typedef union { LIBLTE_S1AP_RIMTRANSFER_STRUCT rIMTransfer; } LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_CHOICE_UNION choice; LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_CHOICE_ENUM choice_type; } LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_inter_systeminformationtransfertype(LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_inter_systeminformationtransfertype(uint8_t** ptr, LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RAB_IE_ContainerPairList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_PROTOCOLIE_CONTAINERPAIR_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RAB_IE_CONTAINERPAIRLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rab_ie_containerpairlist(LIBLTE_S1AP_E_RAB_IE_CONTAINERPAIRLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rab_ie_containerpairlist(uint8_t** ptr, LIBLTE_S1AP_E_RAB_IE_CONTAINERPAIRLIST_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABDataForwardingItem SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT dL_transportLayerAddress; bool dL_transportLayerAddress_present; LIBLTE_S1AP_GTP_TEID_STRUCT dL_gTP_TEID; bool dL_gTP_TEID_present; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT uL_TransportLayerAddress; bool uL_TransportLayerAddress_present; LIBLTE_S1AP_GTP_TEID_STRUCT uL_GTP_TEID; bool uL_GTP_TEID_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABDATAFORWARDINGITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabdataforwardingitem(LIBLTE_S1AP_E_RABDATAFORWARDINGITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabdataforwardingitem(uint8_t** ptr, LIBLTE_S1AP_E_RABDATAFORWARDINGITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABToBeSetupItemHOReq SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT transportLayerAddress; LIBLTE_S1AP_GTP_TEID_STRUCT gTP_TEID; LIBLTE_S1AP_E_RABLEVELQOSPARAMETERS_STRUCT e_RABlevelQosParameters; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABTOBESETUPITEMHOREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetupitemhoreq(LIBLTE_S1AP_E_RABTOBESETUPITEMHOREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetupitemhoreq(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBESETUPITEMHOREQ_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABAdmittedItem SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT transportLayerAddress; LIBLTE_S1AP_GTP_TEID_STRUCT gTP_TEID; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT dL_transportLayerAddress; bool dL_transportLayerAddress_present; LIBLTE_S1AP_GTP_TEID_STRUCT dL_gTP_TEID; bool dL_gTP_TEID_present; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT uL_TransportLayerAddress; bool uL_TransportLayerAddress_present; LIBLTE_S1AP_GTP_TEID_STRUCT uL_GTP_TEID; bool uL_GTP_TEID_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABADMITTEDITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabadmitteditem(LIBLTE_S1AP_E_RABADMITTEDITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabadmitteditem(uint8_t** ptr, LIBLTE_S1AP_E_RABADMITTEDITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABFailedToSetupItemHOReqAck SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_CAUSE_STRUCT cause; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABFAILEDTOSETUPITEMHOREQACK_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabfailedtosetupitemhoreqack(LIBLTE_S1AP_E_RABFAILEDTOSETUPITEMHOREQACK_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabfailedtosetupitemhoreqack(uint8_t** ptr, LIBLTE_S1AP_E_RABFAILEDTOSETUPITEMHOREQACK_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABToBeSwitchedDLItem SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT transportLayerAddress; LIBLTE_S1AP_GTP_TEID_STRUCT gTP_TEID; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABTOBESWITCHEDDLITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobeswitcheddlitem(LIBLTE_S1AP_E_RABTOBESWITCHEDDLITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobeswitcheddlitem(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBESWITCHEDDLITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABToBeSwitchedULItem SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT transportLayerAddress; LIBLTE_S1AP_GTP_TEID_STRUCT gTP_TEID; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABTOBESWITCHEDULITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobeswitchedulitem(LIBLTE_S1AP_E_RABTOBESWITCHEDULITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobeswitchedulitem(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBESWITCHEDULITEM_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABToBeSetupItemBearerSUReq SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_E_RABLEVELQOSPARAMETERS_STRUCT e_RABlevelQoSParameters; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT transportLayerAddress; LIBLTE_S1AP_GTP_TEID_STRUCT gTP_TEID; LIBLTE_S1AP_NAS_PDU_STRUCT nAS_PDU; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABTOBESETUPITEMBEARERSUREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetupitembearersureq(LIBLTE_S1AP_E_RABTOBESETUPITEMBEARERSUREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetupitembearersureq(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBESETUPITEMBEARERSUREQ_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABSetupItemBearerSURes SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT transportLayerAddress; LIBLTE_S1AP_GTP_TEID_STRUCT gTP_TEID; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABSETUPITEMBEARERSURES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsetupitembearersures(LIBLTE_S1AP_E_RABSETUPITEMBEARERSURES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsetupitembearersures(uint8_t** ptr, LIBLTE_S1AP_E_RABSETUPITEMBEARERSURES_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABToBeModifiedItemBearerModReq SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_E_RABLEVELQOSPARAMETERS_STRUCT e_RABLevelQoSParameters; LIBLTE_S1AP_NAS_PDU_STRUCT nAS_PDU; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABTOBEMODIFIEDITEMBEARERMODREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobemodifieditembearermodreq(LIBLTE_S1AP_E_RABTOBEMODIFIEDITEMBEARERMODREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobemodifieditembearermodreq(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBEMODIFIEDITEMBEARERMODREQ_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABModifyItemBearerModRes SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABMODIFYITEMBEARERMODRES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabmodifyitembearermodres(LIBLTE_S1AP_E_RABMODIFYITEMBEARERMODRES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabmodifyitembearermodres(uint8_t** ptr, LIBLTE_S1AP_E_RABMODIFYITEMBEARERMODRES_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABReleaseItemBearerRelComp SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABRELEASEITEMBEARERRELCOMP_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabreleaseitembearerrelcomp(LIBLTE_S1AP_E_RABRELEASEITEMBEARERRELCOMP_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabreleaseitembearerrelcomp(uint8_t** ptr, LIBLTE_S1AP_E_RABRELEASEITEMBEARERRELCOMP_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABToBeSetupItemCtxtSUReq SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_E_RABLEVELQOSPARAMETERS_STRUCT e_RABlevelQoSParameters; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT transportLayerAddress; LIBLTE_S1AP_GTP_TEID_STRUCT gTP_TEID; LIBLTE_S1AP_NAS_PDU_STRUCT nAS_PDU; bool nAS_PDU_present; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABTOBESETUPITEMCTXTSUREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetupitemctxtsureq(LIBLTE_S1AP_E_RABTOBESETUPITEMCTXTSUREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetupitemctxtsureq(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBESETUPITEMCTXTSUREQ_STRUCT* ie); /******************************************************************************* /* ProtocolIE E_RABSetupItemCtxtSURes SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RAB_ID_STRUCT e_RAB_ID; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT transportLayerAddress; LIBLTE_S1AP_GTP_TEID_STRUCT gTP_TEID; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_E_RABSETUPITEMCTXTSURES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsetupitemctxtsures(LIBLTE_S1AP_E_RABSETUPITEMCTXTSURES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsetupitemctxtsures(uint8_t** ptr, LIBLTE_S1AP_E_RABSETUPITEMCTXTSURES_STRUCT* ie); /******************************************************************************* /* ProtocolIE TAIItem SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TAI_STRUCT tAI; LIBLTE_S1AP_PROTOCOLEXTENSIONCONTAINER_STRUCT iE_Extensions; bool iE_Extensions_present; } LIBLTE_S1AP_TAIITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_taiitem(LIBLTE_S1AP_TAIITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_taiitem(uint8_t** ptr, LIBLTE_S1AP_TAIITEM_STRUCT* ie); /******************************************************************************* /* Protocol Container List UE_associatedLogicalS1_ConnectionListRes DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ue_associatedlogicals1_connectionlistres( LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ue_associatedlogicals1_connectionlistres( uint8_t** ptr, LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRES_STRUCT* ie); /******************************************************************************* /* Protocol Container List UE_associatedLogicalS1_ConnectionListResAck DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ue_associatedlogicals1_connectionlistresack( LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ue_associatedlogicals1_connectionlistresack( uint8_t** ptr, LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_STRUCT* ie); /******************************************************************************* /* ProtocolIE PrivateMessage SEQUENCE ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_PRIVATEIE_CONTAINER_STRUCT privateIEs; } LIBLTE_S1AP_PRIVATEMESSAGE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_privatemessage(LIBLTE_S1AP_PRIVATEMESSAGE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_privatemessage(uint8_t** ptr, LIBLTE_S1AP_PRIVATEMESSAGE_STRUCT* ie); /******************************************************************************* /* ProtocolIE ResetType CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_RESETTYPE_CHOICE_S1_INTERFACE, LIBLTE_S1AP_RESETTYPE_CHOICE_PARTOFS1_INTERFACE, LIBLTE_S1AP_RESETTYPE_CHOICE_N_ITEMS, } LIBLTE_S1AP_RESETTYPE_CHOICE_ENUM; static const char liblte_s1ap_resettype_choice_text[LIBLTE_S1AP_RESETTYPE_CHOICE_N_ITEMS][50] = { "s1_Interface", "partOfS1_Interface", }; typedef union { LIBLTE_S1AP_RESETALL_ENUM_EXT s1_Interface; LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRES_STRUCT partOfS1_Interface; } LIBLTE_S1AP_RESETTYPE_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_RESETTYPE_CHOICE_UNION choice; LIBLTE_S1AP_RESETTYPE_CHOICE_ENUM choice_type; } LIBLTE_S1AP_RESETTYPE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_resettype(LIBLTE_S1AP_RESETTYPE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_resettype(uint8_t** ptr, LIBLTE_S1AP_RESETTYPE_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABSubjecttoDataForwardingList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABDATAFORWARDINGITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABSUBJECTTODATAFORWARDINGLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsubjecttodataforwardinglist(LIBLTE_S1AP_E_RABSUBJECTTODATAFORWARDINGLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsubjecttodataforwardinglist(uint8_t** ptr, LIBLTE_S1AP_E_RABSUBJECTTODATAFORWARDINGLIST_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABToBeSetupListHOReq DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABTOBESETUPITEMHOREQ_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABTOBESETUPLISTHOREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetuplisthoreq(LIBLTE_S1AP_E_RABTOBESETUPLISTHOREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetuplisthoreq(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBESETUPLISTHOREQ_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABAdmittedList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABADMITTEDITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABADMITTEDLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabadmittedlist(LIBLTE_S1AP_E_RABADMITTEDLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabadmittedlist(uint8_t** ptr, LIBLTE_S1AP_E_RABADMITTEDLIST_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABToBeSwitchedDLList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABTOBESWITCHEDDLITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABTOBESWITCHEDDLLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobeswitcheddllist(LIBLTE_S1AP_E_RABTOBESWITCHEDDLLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobeswitcheddllist(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBESWITCHEDDLLIST_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABToBeSwitchedULList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABTOBESWITCHEDULITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABTOBESWITCHEDULLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobeswitchedullist(LIBLTE_S1AP_E_RABTOBESWITCHEDULLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobeswitchedullist(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBESWITCHEDULLIST_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABToBeSetupListBearerSUReq DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABTOBESETUPITEMBEARERSUREQ_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABTOBESETUPLISTBEARERSUREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetuplistbearersureq(LIBLTE_S1AP_E_RABTOBESETUPLISTBEARERSUREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetuplistbearersureq(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBESETUPLISTBEARERSUREQ_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABSetupListBearerSURes DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABSETUPITEMBEARERSURES_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABSETUPLISTBEARERSURES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsetuplistbearersures(LIBLTE_S1AP_E_RABSETUPLISTBEARERSURES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsetuplistbearersures(uint8_t** ptr, LIBLTE_S1AP_E_RABSETUPLISTBEARERSURES_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABToBeModifiedListBearerModReq DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABTOBEMODIFIEDITEMBEARERMODREQ_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABTOBEMODIFIEDLISTBEARERMODREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobemodifiedlistbearermodreq(LIBLTE_S1AP_E_RABTOBEMODIFIEDLISTBEARERMODREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobemodifiedlistbearermodreq(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBEMODIFIEDLISTBEARERMODREQ_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABModifyListBearerModRes DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABMODIFYITEMBEARERMODRES_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABMODIFYLISTBEARERMODRES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabmodifylistbearermodres(LIBLTE_S1AP_E_RABMODIFYLISTBEARERMODRES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabmodifylistbearermodres(uint8_t** ptr, LIBLTE_S1AP_E_RABMODIFYLISTBEARERMODRES_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABReleaseListBearerRelComp DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABRELEASEITEMBEARERRELCOMP_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABRELEASELISTBEARERRELCOMP_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabreleaselistbearerrelcomp(LIBLTE_S1AP_E_RABRELEASELISTBEARERRELCOMP_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabreleaselistbearerrelcomp(uint8_t** ptr, LIBLTE_S1AP_E_RABRELEASELISTBEARERRELCOMP_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABToBeSetupListCtxtSUReq DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABTOBESETUPITEMCTXTSUREQ_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABTOBESETUPLISTCTXTSUREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetuplistctxtsureq(LIBLTE_S1AP_E_RABTOBESETUPLISTCTXTSUREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetuplistctxtsureq(uint8_t** ptr, LIBLTE_S1AP_E_RABTOBESETUPLISTCTXTSUREQ_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABSetupListCtxtSURes DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABSETUPITEMCTXTSURES_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABSETUPLISTCTXTSURES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsetuplistctxtsures(LIBLTE_S1AP_E_RABSETUPLISTCTXTSURES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsetuplistctxtsures(uint8_t** ptr, LIBLTE_S1AP_E_RABSETUPLISTCTXTSURES_STRUCT* ie); /******************************************************************************* /* Protocol Container List TAIList DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_TAIITEM_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_TAILIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tailist(LIBLTE_S1AP_TAILIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tailist(uint8_t** ptr, LIBLTE_S1AP_TAILIST_STRUCT* ie); /******************************************************************************* /* Protocol Container List E_RABFailedtoSetupListHOReqAck DYNAMIC SEQUENCE OF ********************************************************************************/ // lb:1, ub:256 typedef struct { uint32_t len; LIBLTE_S1AP_E_RABFAILEDTOSETUPITEMHOREQACK_STRUCT buffer[32]; // WARNING: Artificial limit to reduce memory footprint } LIBLTE_S1AP_E_RABFAILEDTOSETUPLISTHOREQACK_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabfailedtosetuplisthoreqack(LIBLTE_S1AP_E_RABFAILEDTOSETUPLISTHOREQACK_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabfailedtosetuplisthoreqack(uint8_t** ptr, LIBLTE_S1AP_E_RABFAILEDTOSETUPLISTHOREQACK_STRUCT* ie); /******************************************************************************* /* Protocol Message AllocationAndRetentionPriority_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_ALLOCATIONANDRETENTIONPRIORITY_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_allocationandretentionpriority_ext(LIBLTE_S1AP_MESSAGE_ALLOCATIONANDRETENTIONPRIORITY_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_allocationandretentionpriority_ext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_ALLOCATIONANDRETENTIONPRIORITY_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CancelledCellinEAI_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CANCELLEDCELLINEAI_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cancelledcellineai_item_ext(LIBLTE_S1AP_MESSAGE_CANCELLEDCELLINEAI_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cancelledcellineai_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CANCELLEDCELLINEAI_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CancelledCellinTAI_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CANCELLEDCELLINTAI_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cancelledcellintai_item_ext(LIBLTE_S1AP_MESSAGE_CANCELLEDCELLINTAI_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cancelledcellintai_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CANCELLEDCELLINTAI_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CellID_Broadcast_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CELLID_BROADCAST_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellid_broadcast_item_ext(LIBLTE_S1AP_MESSAGE_CELLID_BROADCAST_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellid_broadcast_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CELLID_BROADCAST_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CellID_Cancelled_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CELLID_CANCELLED_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellid_cancelled_item_ext(LIBLTE_S1AP_MESSAGE_CELLID_CANCELLED_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellid_cancelled_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CELLID_CANCELLED_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CellBasedMDT_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CELLBASEDMDT_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cellbasedmdt_ext(LIBLTE_S1AP_MESSAGE_CELLBASEDMDT_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cellbasedmdt_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CELLBASEDMDT_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message Cdma2000OneXSRVCCInfo_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CDMA2000ONEXSRVCCINFO_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000onexsrvccinfo_ext(LIBLTE_S1AP_MESSAGE_CDMA2000ONEXSRVCCINFO_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000onexsrvccinfo_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CDMA2000ONEXSRVCCINFO_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CellType_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CELLTYPE_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_celltype_ext(LIBLTE_S1AP_MESSAGE_CELLTYPE_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_celltype_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CELLTYPE_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CGI_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CGI_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_cgi_ext(LIBLTE_S1AP_MESSAGE_CGI_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cgi_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CGI_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CSG_IdList_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CSG_IDLIST_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_csg_idlist_item_ext(LIBLTE_S1AP_MESSAGE_CSG_IDLIST_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_csg_idlist_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CSG_IDLIST_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message COUNTvalue_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_COUNTVALUE_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_countvalue_ext(LIBLTE_S1AP_MESSAGE_COUNTVALUE_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_countvalue_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_COUNTVALUE_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message COUNTValueExtended_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_COUNTVALUEEXTENDED_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_countvalueextended_ext(LIBLTE_S1AP_MESSAGE_COUNTVALUEEXTENDED_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_countvalueextended_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_COUNTVALUEEXTENDED_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CriticalityDiagnostics_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CRITICALITYDIAGNOSTICS_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_criticalitydiagnostics_ext(LIBLTE_S1AP_MESSAGE_CRITICALITYDIAGNOSTICS_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_criticalitydiagnostics_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CRITICALITYDIAGNOSTICS_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CriticalityDiagnostics_IE_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_CRITICALITYDIAGNOSTICS_IE_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_criticalitydiagnostics_ie_item_ext(LIBLTE_S1AP_MESSAGE_CRITICALITYDIAGNOSTICS_IE_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_criticalitydiagnostics_ie_item_ext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CRITICALITYDIAGNOSTICS_IE_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message EmergencyAreaID_Broadcast_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_EMERGENCYAREAID_BROADCAST_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_emergencyareaid_broadcast_item_ext(LIBLTE_S1AP_MESSAGE_EMERGENCYAREAID_BROADCAST_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_emergencyareaid_broadcast_item_ext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_EMERGENCYAREAID_BROADCAST_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message EmergencyAreaID_Cancelled_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_EMERGENCYAREAID_CANCELLED_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_emergencyareaid_cancelled_item_ext(LIBLTE_S1AP_MESSAGE_EMERGENCYAREAID_CANCELLED_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_emergencyareaid_cancelled_item_ext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_EMERGENCYAREAID_CANCELLED_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CompletedCellinEAI_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_COMPLETEDCELLINEAI_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_completedcellineai_item_ext(LIBLTE_S1AP_MESSAGE_COMPLETEDCELLINEAI_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_completedcellineai_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_COMPLETEDCELLINEAI_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message GERAN_Cell_ID_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_GERAN_CELL_ID_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_geran_cell_id_ext(LIBLTE_S1AP_MESSAGE_GERAN_CELL_ID_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_geran_cell_id_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_GERAN_CELL_ID_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message GlobalENB_ID_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_GLOBALENB_ID_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_globalenb_id_ext(LIBLTE_S1AP_MESSAGE_GLOBALENB_ID_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_globalenb_id_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_GLOBALENB_ID_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message ENB_StatusTransfer_TransparentContainer_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_ENB_STATUSTRANSFER_TRANSPARENTCONTAINER_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enb_statustransfer_transparentcontainer_ext( LIBLTE_S1AP_MESSAGE_ENB_STATUSTRANSFER_TRANSPARENTCONTAINER_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enb_statustransfer_transparentcontainer_ext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_ENB_STATUSTRANSFER_TRANSPARENTCONTAINER_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABInformationListItem_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABINFORMATIONLISTITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabinformationlistitem_ext(LIBLTE_S1AP_MESSAGE_E_RABINFORMATIONLISTITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabinformationlistitem_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABINFORMATIONLISTITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABItem_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabitem_ext(LIBLTE_S1AP_MESSAGE_E_RABITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabitem_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABQoSParameters_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABQOSPARAMETERS_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabqosparameters_ext(LIBLTE_S1AP_MESSAGE_E_RABQOSPARAMETERS_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabqosparameters_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABQOSPARAMETERS_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message EUTRAN_CGI_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_EUTRAN_CGI_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_eutran_cgi_ext(LIBLTE_S1AP_MESSAGE_EUTRAN_CGI_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_eutran_cgi_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_EUTRAN_CGI_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message ForbiddenTAs_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_FORBIDDENTAS_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_forbiddentas_item_ext(LIBLTE_S1AP_MESSAGE_FORBIDDENTAS_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_forbiddentas_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_FORBIDDENTAS_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message ForbiddenLAs_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_FORBIDDENLAS_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_forbiddenlas_item_ext(LIBLTE_S1AP_MESSAGE_FORBIDDENLAS_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_forbiddenlas_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_FORBIDDENLAS_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message GBR_QosInformation_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_GBR_QOSINFORMATION_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_gbr_qosinformation_ext(LIBLTE_S1AP_MESSAGE_GBR_QOSINFORMATION_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_gbr_qosinformation_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_GBR_QOSINFORMATION_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message GUMMEI_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_GUMMEI_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_gummei_ext(LIBLTE_S1AP_MESSAGE_GUMMEI_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_gummei_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_GUMMEI_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message HandoverRestrictionList_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_HANDOVERRESTRICTIONLIST_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handoverrestrictionlist_ext(LIBLTE_S1AP_MESSAGE_HANDOVERRESTRICTIONLIST_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handoverrestrictionlist_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_HANDOVERRESTRICTIONLIST_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message LAI_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_LAI_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_lai_ext(LIBLTE_S1AP_MESSAGE_LAI_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lai_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_LAI_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message LoggedMDT_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_LOGGEDMDT_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_loggedmdt_ext(LIBLTE_S1AP_MESSAGE_LOGGEDMDT_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_loggedmdt_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_LOGGEDMDT_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message M3Configuration_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_M3CONFIGURATION_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m3configuration_ext(LIBLTE_S1AP_MESSAGE_M3CONFIGURATION_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m3configuration_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_M3CONFIGURATION_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message M4Configuration_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_M4CONFIGURATION_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m4configuration_ext(LIBLTE_S1AP_MESSAGE_M4CONFIGURATION_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m4configuration_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_M4CONFIGURATION_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message M5Configuration_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_M5CONFIGURATION_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m5configuration_ext(LIBLTE_S1AP_MESSAGE_M5CONFIGURATION_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m5configuration_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_M5CONFIGURATION_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message M1PeriodicReporting_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_M1PERIODICREPORTING_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m1periodicreporting_ext(LIBLTE_S1AP_MESSAGE_M1PERIODICREPORTING_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m1periodicreporting_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_M1PERIODICREPORTING_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message RequestType_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_REQUESTTYPE_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_requesttype_ext(LIBLTE_S1AP_MESSAGE_REQUESTTYPE_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_requesttype_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_REQUESTTYPE_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message RIMTransfer_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_RIMTRANSFER_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_rimtransfer_ext(LIBLTE_S1AP_MESSAGE_RIMTRANSFER_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_rimtransfer_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_RIMTRANSFER_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message SecurityContext_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_SECURITYCONTEXT_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_securitycontext_ext(LIBLTE_S1AP_MESSAGE_SECURITYCONTEXT_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_securitycontext_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_SECURITYCONTEXT_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message SourceeNB_ID_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_SOURCEENB_ID_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_sourceenb_id_ext(LIBLTE_S1AP_MESSAGE_SOURCEENB_ID_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_sourceenb_id_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_SOURCEENB_ID_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message ServedGUMMEIsItem_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_SERVEDGUMMEISITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_servedgummeisitem_ext(LIBLTE_S1AP_MESSAGE_SERVEDGUMMEISITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_servedgummeisitem_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_SERVEDGUMMEISITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message SupportedTAs_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_SUPPORTEDTAS_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_supportedtas_item_ext(LIBLTE_S1AP_MESSAGE_SUPPORTEDTAS_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_supportedtas_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_SUPPORTEDTAS_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message TimeSynchronizationInfo_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TIMESYNCHRONIZATIONINFO_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_timesynchronizationinfo_ext(LIBLTE_S1AP_MESSAGE_TIMESYNCHRONIZATIONINFO_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_timesynchronizationinfo_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TIMESYNCHRONIZATIONINFO_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message S_TMSI_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_S_TMSI_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_s_tmsi_ext(LIBLTE_S1AP_MESSAGE_S_TMSI_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_s_tmsi_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_S_TMSI_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message TAIBasedMDT_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TAIBASEDMDT_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_taibasedmdt_ext(LIBLTE_S1AP_MESSAGE_TAIBASEDMDT_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_taibasedmdt_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TAIBASEDMDT_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message TAI_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TAI_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tai_ext(LIBLTE_S1AP_MESSAGE_TAI_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tai_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TAI_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message TAI_Broadcast_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TAI_BROADCAST_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tai_broadcast_item_ext(LIBLTE_S1AP_MESSAGE_TAI_BROADCAST_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tai_broadcast_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TAI_BROADCAST_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message TAI_Cancelled_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TAI_CANCELLED_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tai_cancelled_item_ext(LIBLTE_S1AP_MESSAGE_TAI_CANCELLED_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tai_cancelled_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TAI_CANCELLED_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message TABasedMDT_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TABASEDMDT_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tabasedmdt_ext(LIBLTE_S1AP_MESSAGE_TABASEDMDT_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tabasedmdt_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TABASEDMDT_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message CompletedCellinTAI_Item_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_COMPLETEDCELLINTAI_ITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_completedcellintai_item_ext(LIBLTE_S1AP_MESSAGE_COMPLETEDCELLINTAI_ITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_completedcellintai_item_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_COMPLETEDCELLINTAI_ITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message TargeteNB_ID_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TARGETENB_ID_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetenb_id_ext(LIBLTE_S1AP_MESSAGE_TARGETENB_ID_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetenb_id_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TARGETENB_ID_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message TargetRNC_ID_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TARGETRNC_ID_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetrnc_id_ext(LIBLTE_S1AP_MESSAGE_TARGETRNC_ID_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetrnc_id_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TARGETRNC_ID_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message TargeteNB_ToSourceeNB_TransparentContainer_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TARGETENB_TOSOURCEENB_TRANSPARENTCONTAINER_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetenb_tosourceenb_transparentcontainer_ext( LIBLTE_S1AP_MESSAGE_TARGETENB_TOSOURCEENB_TRANSPARENTCONTAINER_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetenb_tosourceenb_transparentcontainer_ext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TARGETENB_TOSOURCEENB_TRANSPARENTCONTAINER_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message M1ThresholdEventA2_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_M1THRESHOLDEVENTA2_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_m1thresholdeventa2_ext(LIBLTE_S1AP_MESSAGE_M1THRESHOLDEVENTA2_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_m1thresholdeventa2_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_M1THRESHOLDEVENTA2_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message Tunnel_Information_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TUNNEL_INFORMATION_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tunnel_information_ext(LIBLTE_S1AP_MESSAGE_TUNNEL_INFORMATION_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tunnel_information_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TUNNEL_INFORMATION_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message UEAggregate_MaximumBitrates_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_UEAGGREGATE_MAXIMUMBITRATES_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ueaggregate_maximumbitrates_ext(LIBLTE_S1AP_MESSAGE_UEAGGREGATE_MAXIMUMBITRATES_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ueaggregate_maximumbitrates_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UEAGGREGATE_MAXIMUMBITRATES_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message UE_S1AP_ID_pair_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_UE_S1AP_ID_PAIR_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ue_s1ap_id_pair_ext(LIBLTE_S1AP_MESSAGE_UE_S1AP_ID_PAIR_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ue_s1ap_id_pair_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UE_S1AP_ID_PAIR_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message UE_associatedLogicalS1_ConnectionItemExt STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEMEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ue_associatedlogicals1_connectionitemext( LIBLTE_S1AP_MESSAGE_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEMEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ue_associatedlogicals1_connectionitemext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEMEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message UESecurityCapabilities_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_UESECURITYCAPABILITIES_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uesecuritycapabilities_ext(LIBLTE_S1AP_MESSAGE_UESECURITYCAPABILITIES_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uesecuritycapabilities_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UESECURITYCAPABILITIES_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message UserLocationInformation_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_USERLOCATIONINFORMATION_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_userlocationinformation_ext(LIBLTE_S1AP_MESSAGE_USERLOCATIONINFORMATION_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_userlocationinformation_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_USERLOCATIONINFORMATION_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message ENBX2ExtTLA_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_ENBX2EXTTLA_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbx2exttla_ext(LIBLTE_S1AP_MESSAGE_ENBX2EXTTLA_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbx2exttla_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_ENBX2EXTTLA_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message SourceeNB_ToTargeteNB_TransparentContainer_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MOBILITYINFORMATION_STRUCT MobilityInformation; bool MobilityInformation_present; } LIBLTE_S1AP_MESSAGE_SOURCEENB_TOTARGETENB_TRANSPARENTCONTAINER_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_sourceenb_totargetenb_transparentcontainer_ext( LIBLTE_S1AP_MESSAGE_SOURCEENB_TOTARGETENB_TRANSPARENTCONTAINER_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_sourceenb_totargetenb_transparentcontainer_ext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_SOURCEENB_TOTARGETENB_TRANSPARENTCONTAINER_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABInformationList STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABINFORMATIONLISTITEM_STRUCT E_RABInformationListItem; } LIBLTE_S1AP_MESSAGE_E_RABINFORMATIONLIST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabinformationlist(LIBLTE_S1AP_MESSAGE_E_RABINFORMATIONLIST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabinformationlist(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABINFORMATIONLIST_STRUCT* ie); /******************************************************************************* /* Protocol Message LastVisitedEUTRANCellInformation_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TIME_UE_STAYEDINCELL_ENHANCEDGRANULARITY_STRUCT Time_UE_StayedInCell_EnhancedGranularity; bool Time_UE_StayedInCell_EnhancedGranularity_present; LIBLTE_S1AP_CAUSE_STRUCT HO_Cause; bool HO_Cause_present; } LIBLTE_S1AP_MESSAGE_LASTVISITEDEUTRANCELLINFORMATION_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_lastvisitedeutrancellinformation_ext( LIBLTE_S1AP_MESSAGE_LASTVISITEDEUTRANCELLINFORMATION_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lastvisitedeutrancellinformation_ext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_LASTVISITEDEUTRANCELLINFORMATION_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message SONInformationReply_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TIMESYNCHRONIZATIONINFO_STRUCT Time_Synchronization_Info; bool Time_Synchronization_Info_present; } LIBLTE_S1AP_MESSAGE_SONINFORMATIONREPLY_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_soninformationreply_ext(LIBLTE_S1AP_MESSAGE_SONINFORMATIONREPLY_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_soninformationreply_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_SONINFORMATIONREPLY_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message Bearers_SubjectToStatusTransfer_ItemExt STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_COUNTVALUEEXTENDED_STRUCT ULCOUNTValueExtended; bool ULCOUNTValueExtended_present; LIBLTE_S1AP_COUNTVALUEEXTENDED_STRUCT DLCOUNTValueExtended; bool DLCOUNTValueExtended_present; LIBLTE_S1AP_RECEIVESTATUSOFULPDCPSDUSEXTENDED_STRUCT ReceiveStatusOfULPDCPSDUsExtended; bool ReceiveStatusOfULPDCPSDUsExtended_present; } LIBLTE_S1AP_MESSAGE_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEMEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_bearers_subjecttostatustransfer_itemext( LIBLTE_S1AP_MESSAGE_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEMEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_bearers_subjecttostatustransfer_itemext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEMEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABItem STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABITEM_STRUCT E_RABItem; } LIBLTE_S1AP_MESSAGE_E_RABITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabitem(LIBLTE_S1AP_MESSAGE_E_RABITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabitem(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABITEM_STRUCT* ie); /******************************************************************************* /* Protocol Message MDT_Configuration_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MDTPLMNLIST_STRUCT SignallingBasedMDTPLMNList; bool SignallingBasedMDTPLMNList_present; } LIBLTE_S1AP_MESSAGE_MDT_CONFIGURATION_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mdt_configuration_ext(LIBLTE_S1AP_MESSAGE_MDT_CONFIGURATION_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mdt_configuration_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_MDT_CONFIGURATION_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message X2TNLConfigurationInfo_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_ENBX2EXTTLAS_STRUCT eNBX2ExtendedTransportLayerAddresses; bool eNBX2ExtendedTransportLayerAddresses_present; } LIBLTE_S1AP_MESSAGE_X2TNLCONFIGURATIONINFO_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_x2tnlconfigurationinfo_ext(LIBLTE_S1AP_MESSAGE_X2TNLCONFIGURATIONINFO_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_x2tnlconfigurationinfo_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_X2TNLCONFIGURATIONINFO_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message Bearers_SubjectToStatusTransfer_Item STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEM_STRUCT Bearers_SubjectToStatusTransfer_Item; } LIBLTE_S1AP_MESSAGE_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_bearers_subjecttostatustransfer_item( LIBLTE_S1AP_MESSAGE_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_bearers_subjecttostatustransfer_item( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_BEARERS_SUBJECTTOSTATUSTRANSFER_ITEM_STRUCT* ie); /******************************************************************************* /* Protocol Message ImmediateMDT_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_M3CONFIGURATION_STRUCT M3Configuration; bool M3Configuration_present; LIBLTE_S1AP_M4CONFIGURATION_STRUCT M4Configuration; bool M4Configuration_present; LIBLTE_S1AP_M5CONFIGURATION_STRUCT M5Configuration; bool M5Configuration_present; LIBLTE_S1AP_MDT_LOCATION_INFO_STRUCT MDT_Location_Info; bool MDT_Location_Info_present; } LIBLTE_S1AP_MESSAGE_IMMEDIATEMDT_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_immediatemdt_ext(LIBLTE_S1AP_MESSAGE_IMMEDIATEMDT_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_immediatemdt_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_IMMEDIATEMDT_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message SONConfigurationTransfer_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_X2TNLCONFIGURATIONINFO_STRUCT x2TNLConfigurationInfo; bool x2TNLConfigurationInfo_present; } LIBLTE_S1AP_MESSAGE_SONCONFIGURATIONTRANSFER_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_sonconfigurationtransfer_ext(LIBLTE_S1AP_MESSAGE_SONCONFIGURATIONTRANSFER_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_sonconfigurationtransfer_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_SONCONFIGURATIONTRANSFER_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message TraceActivation_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MDT_CONFIGURATION_STRUCT MDTConfiguration; bool MDTConfiguration_present; } LIBLTE_S1AP_MESSAGE_TRACEACTIVATION_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_traceactivation_ext(LIBLTE_S1AP_MESSAGE_TRACEACTIVATION_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_traceactivation_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TRACEACTIVATION_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message HandoverRequired STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_HANDOVERTYPE_ENUM_EXT HandoverType; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_TARGETID_STRUCT TargetID; LIBLTE_S1AP_DIRECT_FORWARDING_PATH_AVAILABILITY_ENUM_EXT Direct_Forwarding_Path_Availability; bool Direct_Forwarding_Path_Availability_present; LIBLTE_S1AP_SRVCCHOINDICATION_ENUM_EXT SRVCCHOIndication; bool SRVCCHOIndication_present; LIBLTE_S1AP_SOURCE_TOTARGET_TRANSPARENTCONTAINER_STRUCT Source_ToTarget_TransparentContainer; LIBLTE_S1AP_SOURCE_TOTARGET_TRANSPARENTCONTAINER_STRUCT Source_ToTarget_TransparentContainer_Secondary; bool Source_ToTarget_TransparentContainer_Secondary_present; LIBLTE_S1AP_MSCLASSMARK2_STRUCT MSClassmark2; bool MSClassmark2_present; LIBLTE_S1AP_MSCLASSMARK3_STRUCT MSClassmark3; bool MSClassmark3_present; LIBLTE_S1AP_CSG_ID_STRUCT CSG_Id; bool CSG_Id_present; LIBLTE_S1AP_CELLACCESSMODE_ENUM_EXT CellAccessMode; bool CellAccessMode_present; LIBLTE_S1AP_PS_SERVICENOTAVAILABLE_ENUM_EXT PS_ServiceNotAvailable; bool PS_ServiceNotAvailable_present; } LIBLTE_S1AP_MESSAGE_HANDOVERREQUIRED_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handoverrequired(LIBLTE_S1AP_MESSAGE_HANDOVERREQUIRED_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handoverrequired(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_HANDOVERREQUIRED_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABDataForwardingItem_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABDATAFORWARDINGITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabdataforwardingitem_ext(LIBLTE_S1AP_MESSAGE_E_RABDATAFORWARDINGITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabdataforwardingitem_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABDATAFORWARDINGITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message HandoverPreparationFailure STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_HANDOVERPREPARATIONFAILURE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handoverpreparationfailure(LIBLTE_S1AP_MESSAGE_HANDOVERPREPARATIONFAILURE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handoverpreparationfailure(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_HANDOVERPREPARATIONFAILURE_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeSetupItemHOReq_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_DATA_FORWARDING_NOT_POSSIBLE_ENUM_EXT Data_Forwarding_Not_Possible; bool Data_Forwarding_Not_Possible_present; } LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMHOREQ_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetupitemhoreq_ext(LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMHOREQ_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetupitemhoreq_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMHOREQ_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABAdmittedItem_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABADMITTEDITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabadmitteditem_ext(LIBLTE_S1AP_MESSAGE_E_RABADMITTEDITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabadmitteditem_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABADMITTEDITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABFailedToSetupItemHOReqAckExt STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABFAILEDTOSETUPITEMHOREQACKEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabfailedtosetupitemhoreqackext(LIBLTE_S1AP_MESSAGE_E_RABFAILEDTOSETUPITEMHOREQACKEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabfailedtosetupitemhoreqackext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABFAILEDTOSETUPITEMHOREQACKEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message HandoverFailure STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_HANDOVERFAILURE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handoverfailure(LIBLTE_S1AP_MESSAGE_HANDOVERFAILURE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handoverfailure(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_HANDOVERFAILURE_STRUCT* ie); /******************************************************************************* /* Protocol Message HandoverNotify STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_EUTRAN_CGI_STRUCT EUTRAN_CGI; LIBLTE_S1AP_TAI_STRUCT TAI; LIBLTE_S1AP_TUNNELINFORMATION_STRUCT Tunnel_Information_for_BBF; bool Tunnel_Information_for_BBF_present; LIBLTE_S1AP_LHN_ID_STRUCT LHN_ID; bool LHN_ID_present; } LIBLTE_S1AP_MESSAGE_HANDOVERNOTIFY_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handovernotify(LIBLTE_S1AP_MESSAGE_HANDOVERNOTIFY_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handovernotify(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_HANDOVERNOTIFY_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeSwitchedDLItem_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDDLITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobeswitcheddlitem_ext(LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDDLITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobeswitcheddlitem_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDDLITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeSwitchedULItem_Ext STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDULITEM_EXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobeswitchedulitem_ext(LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDULITEM_EXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobeswitchedulitem_ext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDULITEM_EXT_STRUCT* ie); /******************************************************************************* /* Protocol Message PathSwitchRequestFailure STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUESTFAILURE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_pathswitchrequestfailure(LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUESTFAILURE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_pathswitchrequestfailure(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUESTFAILURE_STRUCT* ie); /******************************************************************************* /* Protocol Message HandoverCancel STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CAUSE_STRUCT Cause; } LIBLTE_S1AP_MESSAGE_HANDOVERCANCEL_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handovercancel(LIBLTE_S1AP_MESSAGE_HANDOVERCANCEL_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handovercancel(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_HANDOVERCANCEL_STRUCT* ie); /******************************************************************************* /* Protocol Message HandoverCancelAcknowledge STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_HANDOVERCANCELACKNOWLEDGE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handovercancelacknowledge(LIBLTE_S1AP_MESSAGE_HANDOVERCANCELACKNOWLEDGE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handovercancelacknowledge(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_HANDOVERCANCELACKNOWLEDGE_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeSetupItemBearerSUReqExt STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CORRELATION_ID_STRUCT Correlation_ID; bool Correlation_ID_present; LIBLTE_S1AP_CORRELATION_ID_STRUCT SIPTO_Correlation_ID; bool SIPTO_Correlation_ID_present; } LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMBEARERSUREQEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetupitembearersureqext(LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMBEARERSUREQEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetupitembearersureqext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMBEARERSUREQEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABSetupItemBearerSUResExt STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMBEARERSURESEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsetupitembearersuresext(LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMBEARERSURESEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsetupitembearersuresext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMBEARERSURESEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeModifyItemBearerModReqExt STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TRANSPORTINFORMATION_STRUCT TransportInformation; bool TransportInformation_present; } LIBLTE_S1AP_MESSAGE_E_RABTOBEMODIFYITEMBEARERMODREQEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobemodifyitembearermodreqext(LIBLTE_S1AP_MESSAGE_E_RABTOBEMODIFYITEMBEARERMODREQEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobemodifyitembearermodreqext( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBEMODIFYITEMBEARERMODREQEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABModifyItemBearerModResExt STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABMODIFYITEMBEARERMODRESEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabmodifyitembearermodresext(LIBLTE_S1AP_MESSAGE_E_RABMODIFYITEMBEARERMODRESEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabmodifyitembearermodresext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABMODIFYITEMBEARERMODRESEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABReleaseCommand STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_UEAGGREGATEMAXIMUMBITRATE_STRUCT uEaggregateMaximumBitrate; bool uEaggregateMaximumBitrate_present; LIBLTE_S1AP_E_RABLIST_STRUCT E_RABToBeReleasedList; LIBLTE_S1AP_NAS_PDU_STRUCT NAS_PDU; bool NAS_PDU_present; } LIBLTE_S1AP_MESSAGE_E_RABRELEASECOMMAND_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabreleasecommand(LIBLTE_S1AP_MESSAGE_E_RABRELEASECOMMAND_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabreleasecommand(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABRELEASECOMMAND_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABReleaseItemBearerRelCompExt STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABRELEASEITEMBEARERRELCOMPEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabreleaseitembearerrelcompext(LIBLTE_S1AP_MESSAGE_E_RABRELEASEITEMBEARERRELCOMPEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabreleaseitembearerrelcompext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABRELEASEITEMBEARERRELCOMPEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABReleaseIndication STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_RABLIST_STRUCT E_RABReleasedList; LIBLTE_S1AP_USERLOCATIONINFORMATION_STRUCT UserLocationInformation; bool UserLocationInformation_present; } LIBLTE_S1AP_MESSAGE_E_RABRELEASEINDICATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabreleaseindication(LIBLTE_S1AP_MESSAGE_E_RABRELEASEINDICATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabreleaseindication(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABRELEASEINDICATION_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeSetupItemCtxtSUReqExt STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CORRELATION_ID_STRUCT Correlation_ID; bool Correlation_ID_present; LIBLTE_S1AP_CORRELATION_ID_STRUCT SIPTO_Correlation_ID; bool SIPTO_Correlation_ID_present; } LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMCTXTSUREQEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetupitemctxtsureqext(LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMCTXTSUREQEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetupitemctxtsureqext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMCTXTSUREQEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABSetupItemCtxtSUResExt STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMCTXTSURESEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsetupitemctxtsuresext(LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMCTXTSURESEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsetupitemctxtsuresext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMCTXTSURESEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message InitialContextSetupFailure STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPFAILURE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_initialcontextsetupfailure(LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPFAILURE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_initialcontextsetupfailure(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPFAILURE_STRUCT* ie); /******************************************************************************* /* Protocol Message TAIItemExt STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_TAIITEMEXT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_taiitemext(LIBLTE_S1AP_MESSAGE_TAIITEMEXT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_taiitemext(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TAIITEMEXT_STRUCT* ie); /******************************************************************************* /* Protocol Message UEContextReleaseRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_GWCONTEXTRELEASEINDICATION_ENUM_EXT GWContextReleaseIndication; bool GWContextReleaseIndication_present; } LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASEREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uecontextreleaserequest(LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASEREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uecontextreleaserequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASEREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message UEContextReleaseCommand STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_UE_S1AP_IDS_STRUCT UE_S1AP_IDs; LIBLTE_S1AP_CAUSE_STRUCT Cause; } LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASECOMMAND_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uecontextreleasecommand(LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASECOMMAND_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uecontextreleasecommand(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASECOMMAND_STRUCT* ie); /******************************************************************************* /* Protocol Message UEContextReleaseComplete STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; LIBLTE_S1AP_USERLOCATIONINFORMATION_STRUCT UserLocationInformation; bool UserLocationInformation_present; } LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASECOMPLETE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uecontextreleasecomplete(LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASECOMPLETE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uecontextreleasecomplete(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASECOMPLETE_STRUCT* ie); /******************************************************************************* /* Protocol Message UEContextModificationRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_SECURITYKEY_STRUCT SecurityKey; bool SecurityKey_present; LIBLTE_S1AP_SUBSCRIBERPROFILEIDFORRFP_STRUCT SubscriberProfileIDforRFP; bool SubscriberProfileIDforRFP_present; LIBLTE_S1AP_UEAGGREGATEMAXIMUMBITRATE_STRUCT uEaggregateMaximumBitrate; bool uEaggregateMaximumBitrate_present; LIBLTE_S1AP_CSFALLBACKINDICATOR_ENUM_EXT CSFallbackIndicator; bool CSFallbackIndicator_present; LIBLTE_S1AP_UESECURITYCAPABILITIES_STRUCT UESecurityCapabilities; bool UESecurityCapabilities_present; LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_ENUM CSGMembershipStatus; bool CSGMembershipStatus_present; LIBLTE_S1AP_LAI_STRUCT RegisteredLAI; bool RegisteredLAI_present; LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_ENUM_EXT AdditionalCSFallbackIndicator; bool AdditionalCSFallbackIndicator_present; } LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uecontextmodificationrequest(LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uecontextmodificationrequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message UEContextModificationResponse STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONRESPONSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uecontextmodificationresponse(LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONRESPONSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uecontextmodificationresponse(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONRESPONSE_STRUCT* ie); /******************************************************************************* /* Protocol Message UEContextModificationFailure STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONFAILURE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uecontextmodificationfailure(LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONFAILURE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uecontextmodificationfailure(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONFAILURE_STRUCT* ie); /******************************************************************************* /* Protocol Message UERadioCapabilityMatchRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_UERADIOCAPABILITY_STRUCT UERadioCapability; bool UERadioCapability_present; } LIBLTE_S1AP_MESSAGE_UERADIOCAPABILITYMATCHREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ueradiocapabilitymatchrequest(LIBLTE_S1AP_MESSAGE_UERADIOCAPABILITYMATCHREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ueradiocapabilitymatchrequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UERADIOCAPABILITYMATCHREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message UERadioCapabilityMatchResponse STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_VOICESUPPORTMATCHINDICATOR_ENUM_EXT VoiceSupportMatchIndicator; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_UERADIOCAPABILITYMATCHRESPONSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ueradiocapabilitymatchresponse(LIBLTE_S1AP_MESSAGE_UERADIOCAPABILITYMATCHRESPONSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ueradiocapabilitymatchresponse(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UERADIOCAPABILITYMATCHRESPONSE_STRUCT* ie); /******************************************************************************* /* Protocol Message DownlinkNASTransport STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_NAS_PDU_STRUCT NAS_PDU; LIBLTE_S1AP_HANDOVERRESTRICTIONLIST_STRUCT HandoverRestrictionList; bool HandoverRestrictionList_present; LIBLTE_S1AP_SUBSCRIBERPROFILEIDFORRFP_STRUCT SubscriberProfileIDforRFP; bool SubscriberProfileIDforRFP_present; } LIBLTE_S1AP_MESSAGE_DOWNLINKNASTRANSPORT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_downlinknastransport(LIBLTE_S1AP_MESSAGE_DOWNLINKNASTRANSPORT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_downlinknastransport(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_DOWNLINKNASTRANSPORT_STRUCT* ie); /******************************************************************************* /* Protocol Message InitialUEMessage STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_NAS_PDU_STRUCT NAS_PDU; LIBLTE_S1AP_TAI_STRUCT TAI; LIBLTE_S1AP_EUTRAN_CGI_STRUCT EUTRAN_CGI; LIBLTE_S1AP_RRC_ESTABLISHMENT_CAUSE_ENUM_EXT RRC_Establishment_Cause; LIBLTE_S1AP_S_TMSI_STRUCT S_TMSI; bool S_TMSI_present; LIBLTE_S1AP_CSG_ID_STRUCT CSG_Id; bool CSG_Id_present; LIBLTE_S1AP_GUMMEI_STRUCT GUMMEI_ID; bool GUMMEI_ID_present; LIBLTE_S1AP_CELLACCESSMODE_ENUM_EXT CellAccessMode; bool CellAccessMode_present; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT GW_TransportLayerAddress; bool GW_TransportLayerAddress_present; LIBLTE_S1AP_RELAYNODE_INDICATOR_ENUM_EXT RelayNode_Indicator; bool RelayNode_Indicator_present; LIBLTE_S1AP_GUMMEITYPE_ENUM_EXT GUMMEIType; bool GUMMEIType_present; LIBLTE_S1AP_TUNNELINFORMATION_STRUCT Tunnel_Information_for_BBF; bool Tunnel_Information_for_BBF_present; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT SIPTO_L_GW_TransportLayerAddress; bool SIPTO_L_GW_TransportLayerAddress_present; LIBLTE_S1AP_LHN_ID_STRUCT LHN_ID; bool LHN_ID_present; } LIBLTE_S1AP_MESSAGE_INITIALUEMESSAGE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_initialuemessage(LIBLTE_S1AP_MESSAGE_INITIALUEMESSAGE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_initialuemessage(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_INITIALUEMESSAGE_STRUCT* ie); /******************************************************************************* /* Protocol Message UplinkNASTransport STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_NAS_PDU_STRUCT NAS_PDU; LIBLTE_S1AP_EUTRAN_CGI_STRUCT EUTRAN_CGI; LIBLTE_S1AP_TAI_STRUCT TAI; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT GW_TransportLayerAddress; bool GW_TransportLayerAddress_present; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT SIPTO_L_GW_TransportLayerAddress; bool SIPTO_L_GW_TransportLayerAddress_present; LIBLTE_S1AP_LHN_ID_STRUCT LHN_ID; bool LHN_ID_present; } LIBLTE_S1AP_MESSAGE_UPLINKNASTRANSPORT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uplinknastransport(LIBLTE_S1AP_MESSAGE_UPLINKNASTRANSPORT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uplinknastransport(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UPLINKNASTRANSPORT_STRUCT* ie); /******************************************************************************* /* Protocol Message NASNonDeliveryIndication STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_NAS_PDU_STRUCT NAS_PDU; LIBLTE_S1AP_CAUSE_STRUCT Cause; } LIBLTE_S1AP_MESSAGE_NASNONDELIVERYINDICATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_nasnondeliveryindication(LIBLTE_S1AP_MESSAGE_NASNONDELIVERYINDICATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_nasnondeliveryindication(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_NASNONDELIVERYINDICATION_STRUCT* ie); /******************************************************************************* /* Protocol Message UE_associatedLogicalS1_ConnectionItem STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM_STRUCT UE_associatedLogicalS1_ConnectionItem; } LIBLTE_S1AP_MESSAGE_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ue_associatedlogicals1_connectionitem( LIBLTE_S1AP_MESSAGE_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ue_associatedlogicals1_connectionitem( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM_STRUCT* ie); /******************************************************************************* /* Protocol Message UE_associatedLogicalS1_ConnectionItemRes STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEM_STRUCT UE_associatedLogicalS1_ConnectionItem; } LIBLTE_S1AP_MESSAGE_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEMRES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_ue_associatedlogicals1_connectionitemres( LIBLTE_S1AP_MESSAGE_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEMRES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ue_associatedlogicals1_connectionitemres( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UE_ASSOCIATEDLOGICALS1_CONNECTIONITEMRES_STRUCT* ie); /******************************************************************************* /* Protocol Message ErrorIndication STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; bool MME_UE_S1AP_ID_present; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; bool eNB_UE_S1AP_ID_present; LIBLTE_S1AP_CAUSE_STRUCT Cause; bool Cause_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_ERRORINDICATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_errorindication(LIBLTE_S1AP_MESSAGE_ERRORINDICATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_errorindication(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_ERRORINDICATION_STRUCT* ie); /******************************************************************************* /* Protocol Message S1SetupRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_GLOBAL_ENB_ID_STRUCT Global_ENB_ID; LIBLTE_S1AP_ENBNAME_STRUCT eNBname; bool eNBname_present; LIBLTE_S1AP_SUPPORTEDTAS_STRUCT SupportedTAs; LIBLTE_S1AP_PAGINGDRX_ENUM_EXT DefaultPagingDRX; LIBLTE_S1AP_CSG_IDLIST_STRUCT CSG_IdList; bool CSG_IdList_present; } LIBLTE_S1AP_MESSAGE_S1SETUPREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_s1setuprequest(LIBLTE_S1AP_MESSAGE_S1SETUPREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_s1setuprequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_S1SETUPREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message S1SetupResponse STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MMENAME_STRUCT MMEname; bool MMEname_present; LIBLTE_S1AP_SERVEDGUMMEIS_STRUCT ServedGUMMEIs; LIBLTE_S1AP_RELATIVEMMECAPACITY_STRUCT RelativeMMECapacity; LIBLTE_S1AP_MMERELAYSUPPORTINDICATOR_ENUM_EXT MMERelaySupportIndicator; bool MMERelaySupportIndicator_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_S1SETUPRESPONSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_s1setupresponse(LIBLTE_S1AP_MESSAGE_S1SETUPRESPONSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_s1setupresponse(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_S1SETUPRESPONSE_STRUCT* ie); /******************************************************************************* /* Protocol Message S1SetupFailure STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_TIMETOWAIT_ENUM_EXT TimeToWait; bool TimeToWait_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_S1SETUPFAILURE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_s1setupfailure(LIBLTE_S1AP_MESSAGE_S1SETUPFAILURE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_s1setupfailure(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_S1SETUPFAILURE_STRUCT* ie); /******************************************************************************* /* Protocol Message ENBConfigurationUpdate STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_ENBNAME_STRUCT eNBname; bool eNBname_present; LIBLTE_S1AP_SUPPORTEDTAS_STRUCT SupportedTAs; bool SupportedTAs_present; LIBLTE_S1AP_CSG_IDLIST_STRUCT CSG_IdList; bool CSG_IdList_present; LIBLTE_S1AP_PAGINGDRX_ENUM_EXT DefaultPagingDRX; bool DefaultPagingDRX_present; } LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbconfigurationupdate(LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbconfigurationupdate(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATE_STRUCT* ie); /******************************************************************************* /* Protocol Message ENBConfigurationUpdateAcknowledge STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATEACKNOWLEDGE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbconfigurationupdateacknowledge(LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATEACKNOWLEDGE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbconfigurationupdateacknowledge(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATEACKNOWLEDGE_STRUCT* ie); /******************************************************************************* /* Protocol Message ENBConfigurationUpdateFailure STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_TIMETOWAIT_ENUM_EXT TimeToWait; bool TimeToWait_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATEFAILURE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbconfigurationupdatefailure(LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATEFAILURE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbconfigurationupdatefailure(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATEFAILURE_STRUCT* ie); /******************************************************************************* /* Protocol Message MMEConfigurationUpdate STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MMENAME_STRUCT MMEname; bool MMEname_present; LIBLTE_S1AP_SERVEDGUMMEIS_STRUCT ServedGUMMEIs; bool ServedGUMMEIs_present; LIBLTE_S1AP_RELATIVEMMECAPACITY_STRUCT RelativeMMECapacity; bool RelativeMMECapacity_present; } LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mmeconfigurationupdate(LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mmeconfigurationupdate(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATE_STRUCT* ie); /******************************************************************************* /* Protocol Message MMEConfigurationUpdateAcknowledge STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATEACKNOWLEDGE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mmeconfigurationupdateacknowledge(LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATEACKNOWLEDGE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mmeconfigurationupdateacknowledge(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATEACKNOWLEDGE_STRUCT* ie); /******************************************************************************* /* Protocol Message MMEConfigurationUpdateFailure STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_TIMETOWAIT_ENUM_EXT TimeToWait; bool TimeToWait_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATEFAILURE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mmeconfigurationupdatefailure(LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATEFAILURE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mmeconfigurationupdatefailure(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATEFAILURE_STRUCT* ie); /******************************************************************************* /* Protocol Message UplinkS1cdma2000tunneling STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CDMA2000RATTYPE_ENUM_EXT cdma2000RATType; LIBLTE_S1AP_CDMA2000SECTORID_STRUCT cdma2000SectorID; LIBLTE_S1AP_CDMA2000HOREQUIREDINDICATION_ENUM_EXT cdma2000HORequiredIndication; bool cdma2000HORequiredIndication_present; LIBLTE_S1AP_CDMA2000ONEXSRVCCINFO_STRUCT cdma2000OneXSRVCCInfo; bool cdma2000OneXSRVCCInfo_present; LIBLTE_S1AP_CDMA2000ONEXRAND_STRUCT cdma2000OneXRAND; bool cdma2000OneXRAND_present; LIBLTE_S1AP_CDMA2000PDU_STRUCT cdma2000PDU; LIBLTE_S1AP_EUTRANROUNDTRIPDELAYESTIMATIONINFO_STRUCT EUTRANRoundTripDelayEstimationInfo; bool EUTRANRoundTripDelayEstimationInfo_present; } LIBLTE_S1AP_MESSAGE_UPLINKS1CDMA2000TUNNELING_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uplinks1cdma2000tunneling(LIBLTE_S1AP_MESSAGE_UPLINKS1CDMA2000TUNNELING_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uplinks1cdma2000tunneling(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UPLINKS1CDMA2000TUNNELING_STRUCT* ie); /******************************************************************************* /* Protocol Message UECapabilityInfoIndication STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_UERADIOCAPABILITY_STRUCT UERadioCapability; } LIBLTE_S1AP_MESSAGE_UECAPABILITYINFOINDICATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uecapabilityinfoindication(LIBLTE_S1AP_MESSAGE_UECAPABILITYINFOINDICATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uecapabilityinfoindication(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UECAPABILITYINFOINDICATION_STRUCT* ie); /******************************************************************************* /* Protocol Message ENBStatusTransfer STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_ENB_STATUSTRANSFER_TRANSPARENTCONTAINER_STRUCT eNB_StatusTransfer_TransparentContainer; } LIBLTE_S1AP_MESSAGE_ENBSTATUSTRANSFER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbstatustransfer(LIBLTE_S1AP_MESSAGE_ENBSTATUSTRANSFER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbstatustransfer(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_ENBSTATUSTRANSFER_STRUCT* ie); /******************************************************************************* /* Protocol Message MMEStatusTransfer STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_ENB_STATUSTRANSFER_TRANSPARENTCONTAINER_STRUCT eNB_StatusTransfer_TransparentContainer; } LIBLTE_S1AP_MESSAGE_MMESTATUSTRANSFER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mmestatustransfer(LIBLTE_S1AP_MESSAGE_MMESTATUSTRANSFER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mmestatustransfer(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_MMESTATUSTRANSFER_STRUCT* ie); /******************************************************************************* /* Protocol Message TraceStart STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_TRACEACTIVATION_STRUCT TraceActivation; } LIBLTE_S1AP_MESSAGE_TRACESTART_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tracestart(LIBLTE_S1AP_MESSAGE_TRACESTART_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tracestart(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TRACESTART_STRUCT* ie); /******************************************************************************* /* Protocol Message TraceFailureIndication STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_UTRAN_TRACE_ID_STRUCT E_UTRAN_Trace_ID; LIBLTE_S1AP_CAUSE_STRUCT Cause; } LIBLTE_S1AP_MESSAGE_TRACEFAILUREINDICATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_tracefailureindication(LIBLTE_S1AP_MESSAGE_TRACEFAILUREINDICATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_tracefailureindication(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TRACEFAILUREINDICATION_STRUCT* ie); /******************************************************************************* /* Protocol Message DeactivateTrace STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_UTRAN_TRACE_ID_STRUCT E_UTRAN_Trace_ID; } LIBLTE_S1AP_MESSAGE_DEACTIVATETRACE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_deactivatetrace(LIBLTE_S1AP_MESSAGE_DEACTIVATETRACE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_deactivatetrace(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_DEACTIVATETRACE_STRUCT* ie); /******************************************************************************* /* Protocol Message CellTrafficTrace STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_UTRAN_TRACE_ID_STRUCT E_UTRAN_Trace_ID; LIBLTE_S1AP_EUTRAN_CGI_STRUCT EUTRAN_CGI; LIBLTE_S1AP_TRANSPORTLAYERADDRESS_STRUCT TraceCollectionEntityIPAddress; LIBLTE_S1AP_PRIVACYINDICATOR_ENUM_EXT PrivacyIndicator; bool PrivacyIndicator_present; } LIBLTE_S1AP_MESSAGE_CELLTRAFFICTRACE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_celltraffictrace(LIBLTE_S1AP_MESSAGE_CELLTRAFFICTRACE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_celltraffictrace(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_CELLTRAFFICTRACE_STRUCT* ie); /******************************************************************************* /* Protocol Message LocationReportingControl STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_REQUESTTYPE_STRUCT RequestType; } LIBLTE_S1AP_MESSAGE_LOCATIONREPORTINGCONTROL_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_locationreportingcontrol(LIBLTE_S1AP_MESSAGE_LOCATIONREPORTINGCONTROL_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_locationreportingcontrol(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_LOCATIONREPORTINGCONTROL_STRUCT* ie); /******************************************************************************* /* Protocol Message LocationReportingFailureIndication STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_CAUSE_STRUCT Cause; } LIBLTE_S1AP_MESSAGE_LOCATIONREPORTINGFAILUREINDICATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_locationreportingfailureindication(LIBLTE_S1AP_MESSAGE_LOCATIONREPORTINGFAILUREINDICATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_locationreportingfailureindication( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_LOCATIONREPORTINGFAILUREINDICATION_STRUCT* ie); /******************************************************************************* /* Protocol Message LocationReport STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_EUTRAN_CGI_STRUCT EUTRAN_CGI; LIBLTE_S1AP_TAI_STRUCT TAI; LIBLTE_S1AP_REQUESTTYPE_STRUCT RequestType; } LIBLTE_S1AP_MESSAGE_LOCATIONREPORT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_locationreport(LIBLTE_S1AP_MESSAGE_LOCATIONREPORT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_locationreport(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_LOCATIONREPORT_STRUCT* ie); /******************************************************************************* /* Protocol Message OverloadStart STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_OVERLOADRESPONSE_STRUCT OverloadResponse; LIBLTE_S1AP_GUMMEILIST_STRUCT GUMMEIList; bool GUMMEIList_present; LIBLTE_S1AP_TRAFFICLOADREDUCTIONINDICATION_STRUCT TrafficLoadReductionIndication; bool TrafficLoadReductionIndication_present; } LIBLTE_S1AP_MESSAGE_OVERLOADSTART_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_overloadstart(LIBLTE_S1AP_MESSAGE_OVERLOADSTART_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_overloadstart(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_OVERLOADSTART_STRUCT* ie); /******************************************************************************* /* Protocol Message OverloadStop STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_GUMMEILIST_STRUCT GUMMEIList; bool GUMMEIList_present; } LIBLTE_S1AP_MESSAGE_OVERLOADSTOP_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_overloadstop(LIBLTE_S1AP_MESSAGE_OVERLOADSTOP_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_overloadstop(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_OVERLOADSTOP_STRUCT* ie); /******************************************************************************* /* Protocol Message WriteReplaceWarningRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MESSAGEIDENTIFIER_STRUCT MessageIdentifier; LIBLTE_S1AP_SERIALNUMBER_STRUCT SerialNumber; LIBLTE_S1AP_WARNINGAREALIST_STRUCT WarningAreaList; bool WarningAreaList_present; LIBLTE_S1AP_REPETITIONPERIOD_STRUCT RepetitionPeriod; LIBLTE_S1AP_EXTENDEDREPETITIONPERIOD_STRUCT ExtendedRepetitionPeriod; bool ExtendedRepetitionPeriod_present; LIBLTE_S1AP_NUMBEROFBROADCASTREQUEST_STRUCT NumberofBroadcastRequest; LIBLTE_S1AP_WARNINGTYPE_STRUCT WarningType; bool WarningType_present; LIBLTE_S1AP_WARNINGSECURITYINFO_STRUCT WarningSecurityInfo; bool WarningSecurityInfo_present; LIBLTE_S1AP_DATACODINGSCHEME_STRUCT DataCodingScheme; bool DataCodingScheme_present; LIBLTE_S1AP_WARNINGMESSAGECONTENTS_STRUCT WarningMessageContents; bool WarningMessageContents_present; LIBLTE_S1AP_CONCURRENTWARNINGMESSAGEINDICATOR_ENUM ConcurrentWarningMessageIndicator; bool ConcurrentWarningMessageIndicator_present; } LIBLTE_S1AP_MESSAGE_WRITEREPLACEWARNINGREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_writereplacewarningrequest(LIBLTE_S1AP_MESSAGE_WRITEREPLACEWARNINGREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_writereplacewarningrequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_WRITEREPLACEWARNINGREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message WriteReplaceWarningResponse STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MESSAGEIDENTIFIER_STRUCT MessageIdentifier; LIBLTE_S1AP_SERIALNUMBER_STRUCT SerialNumber; LIBLTE_S1AP_BROADCASTCOMPLETEDAREALIST_STRUCT BroadcastCompletedAreaList; bool BroadcastCompletedAreaList_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_WRITEREPLACEWARNINGRESPONSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_writereplacewarningresponse(LIBLTE_S1AP_MESSAGE_WRITEREPLACEWARNINGRESPONSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_writereplacewarningresponse(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_WRITEREPLACEWARNINGRESPONSE_STRUCT* ie); /******************************************************************************* /* Protocol Message MMEDirectInformationTransfer STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_STRUCT Inter_SystemInformationTransferTypeMDT; } LIBLTE_S1AP_MESSAGE_MMEDIRECTINFORMATIONTRANSFER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mmedirectinformationtransfer(LIBLTE_S1AP_MESSAGE_MMEDIRECTINFORMATIONTRANSFER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mmedirectinformationtransfer(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_MMEDIRECTINFORMATIONTRANSFER_STRUCT* ie); /******************************************************************************* /* Protocol Message ENBConfigurationTransfer STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_SONCONFIGURATIONTRANSFER_STRUCT SONConfigurationTransferECT; bool SONConfigurationTransferECT_present; } LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONTRANSFER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbconfigurationtransfer(LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONTRANSFER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbconfigurationtransfer(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONTRANSFER_STRUCT* ie); /******************************************************************************* /* Protocol Message MMEConfigurationTransfer STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_SONCONFIGURATIONTRANSFER_STRUCT SONConfigurationTransferMCT; bool SONConfigurationTransferMCT_present; } LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONTRANSFER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_mmeconfigurationtransfer(LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONTRANSFER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_mmeconfigurationtransfer(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONTRANSFER_STRUCT* ie); /******************************************************************************* /* Protocol Message PrivateMessage STRUCT ********************************************************************************/ typedef struct { bool ext; } LIBLTE_S1AP_MESSAGE_PRIVATEMESSAGE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_privatemessage(LIBLTE_S1AP_MESSAGE_PRIVATEMESSAGE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_privatemessage(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_PRIVATEMESSAGE_STRUCT* ie); /******************************************************************************* /* Protocol Message KillRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MESSAGEIDENTIFIER_STRUCT MessageIdentifier; LIBLTE_S1AP_SERIALNUMBER_STRUCT SerialNumber; LIBLTE_S1AP_WARNINGAREALIST_STRUCT WarningAreaList; bool WarningAreaList_present; LIBLTE_S1AP_KILLALLWARNINGMESSAGES_ENUM KillAllWarningMessages; bool KillAllWarningMessages_present; } LIBLTE_S1AP_MESSAGE_KILLREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_killrequest(LIBLTE_S1AP_MESSAGE_KILLREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_killrequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_KILLREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message KillResponse STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MESSAGEIDENTIFIER_STRUCT MessageIdentifier; LIBLTE_S1AP_SERIALNUMBER_STRUCT SerialNumber; LIBLTE_S1AP_BROADCASTCANCELLEDAREALIST_STRUCT BroadcastCancelledAreaList; bool BroadcastCancelledAreaList_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_KILLRESPONSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_killresponse(LIBLTE_S1AP_MESSAGE_KILLRESPONSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_killresponse(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_KILLRESPONSE_STRUCT* ie); /******************************************************************************* /* Protocol Message PWSRestartIndication STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_ECGILISTFORRESTART_STRUCT ECGIListForRestart; LIBLTE_S1AP_GLOBAL_ENB_ID_STRUCT Global_ENB_ID; LIBLTE_S1AP_TAILISTFORRESTART_STRUCT TAIListForRestart; LIBLTE_S1AP_EMERGENCYAREAIDLISTFORRESTART_STRUCT EmergencyAreaIDListForRestart; bool EmergencyAreaIDListForRestart_present; } LIBLTE_S1AP_MESSAGE_PWSRESTARTINDICATION_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_pwsrestartindication(LIBLTE_S1AP_MESSAGE_PWSRESTARTINDICATION_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_pwsrestartindication(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_PWSRESTARTINDICATION_STRUCT* ie); /******************************************************************************* /* Protocol Message DownlinkUEAssociatedLPPaTransport STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_ROUTING_ID_STRUCT Routing_ID; LIBLTE_S1AP_LPPA_PDU_STRUCT LPPa_PDU; } LIBLTE_S1AP_MESSAGE_DOWNLINKUEASSOCIATEDLPPATRANSPORT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_downlinkueassociatedlppatransport(LIBLTE_S1AP_MESSAGE_DOWNLINKUEASSOCIATEDLPPATRANSPORT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_downlinkueassociatedlppatransport(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_DOWNLINKUEASSOCIATEDLPPATRANSPORT_STRUCT* ie); /******************************************************************************* /* Protocol Message UplinkUEAssociatedLPPaTransport STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_ROUTING_ID_STRUCT Routing_ID; LIBLTE_S1AP_LPPA_PDU_STRUCT LPPa_PDU; } LIBLTE_S1AP_MESSAGE_UPLINKUEASSOCIATEDLPPATRANSPORT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uplinkueassociatedlppatransport(LIBLTE_S1AP_MESSAGE_UPLINKUEASSOCIATEDLPPATRANSPORT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uplinkueassociatedlppatransport(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UPLINKUEASSOCIATEDLPPATRANSPORT_STRUCT* ie); /******************************************************************************* /* Protocol Message DownlinkNonUEAssociatedLPPaTransport STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_ROUTING_ID_STRUCT Routing_ID; LIBLTE_S1AP_LPPA_PDU_STRUCT LPPa_PDU; } LIBLTE_S1AP_MESSAGE_DOWNLINKNONUEASSOCIATEDLPPATRANSPORT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_downlinknonueassociatedlppatransport( LIBLTE_S1AP_MESSAGE_DOWNLINKNONUEASSOCIATEDLPPATRANSPORT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_downlinknonueassociatedlppatransport( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_DOWNLINKNONUEASSOCIATEDLPPATRANSPORT_STRUCT* ie); /******************************************************************************* /* Protocol Message UplinkNonUEAssociatedLPPaTransport STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_ROUTING_ID_STRUCT Routing_ID; LIBLTE_S1AP_LPPA_PDU_STRUCT LPPa_PDU; } LIBLTE_S1AP_MESSAGE_UPLINKNONUEASSOCIATEDLPPATRANSPORT_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_uplinknonueassociatedlppatransport(LIBLTE_S1AP_MESSAGE_UPLINKNONUEASSOCIATEDLPPATRANSPORT_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_uplinknonueassociatedlppatransport( uint8_t** ptr, LIBLTE_S1AP_MESSAGE_UPLINKNONUEASSOCIATEDLPPATRANSPORT_STRUCT* ie); /******************************************************************************* /* Protocol Message ENBDirectInformationTransfer STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_INTER_SYSTEMINFORMATIONTRANSFERTYPE_STRUCT Inter_SystemInformationTransferTypeEDT; } LIBLTE_S1AP_MESSAGE_ENBDIRECTINFORMATIONTRANSFER_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_enbdirectinformationtransfer(LIBLTE_S1AP_MESSAGE_ENBDIRECTINFORMATIONTRANSFER_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_enbdirectinformationtransfer(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_ENBDIRECTINFORMATIONTRANSFER_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABDataForwardingItem STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABDATAFORWARDINGITEM_STRUCT E_RABDataForwardingItem; } LIBLTE_S1AP_MESSAGE_E_RABDATAFORWARDINGITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabdataforwardingitem(LIBLTE_S1AP_MESSAGE_E_RABDATAFORWARDINGITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabdataforwardingitem(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABDATAFORWARDINGITEM_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeSetupItemHOReq STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABTOBESETUPITEMHOREQ_STRUCT E_RABToBeSetupItemHOReq; } LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMHOREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetupitemhoreq(LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMHOREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetupitemhoreq(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMHOREQ_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABAdmittedItem STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABADMITTEDITEM_STRUCT E_RABAdmittedItem; } LIBLTE_S1AP_MESSAGE_E_RABADMITTEDITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabadmitteditem(LIBLTE_S1AP_MESSAGE_E_RABADMITTEDITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabadmitteditem(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABADMITTEDITEM_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABFailedtoSetupItemHOReqAck STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABFAILEDTOSETUPITEMHOREQACK_STRUCT E_RABFailedtoSetupItemHOReqAck; } LIBLTE_S1AP_MESSAGE_E_RABFAILEDTOSETUPITEMHOREQACK_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabfailedtosetupitemhoreqack(LIBLTE_S1AP_MESSAGE_E_RABFAILEDTOSETUPITEMHOREQACK_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabfailedtosetupitemhoreqack(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABFAILEDTOSETUPITEMHOREQACK_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeSwitchedDLItem STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABTOBESWITCHEDDLITEM_STRUCT E_RABToBeSwitchedDLItem; } LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDDLITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobeswitcheddlitem(LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDDLITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobeswitcheddlitem(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDDLITEM_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeSwitchedULItem STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABTOBESWITCHEDULITEM_STRUCT E_RABToBeSwitchedULItem; } LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDULITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobeswitchedulitem(LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDULITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobeswitchedulitem(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBESWITCHEDULITEM_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeSetupItemBearerSUReq STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABTOBESETUPITEMBEARERSUREQ_STRUCT E_RABToBeSetupItemBearerSUReq; } LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMBEARERSUREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetupitembearersureq(LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMBEARERSUREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetupitembearersureq(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMBEARERSUREQ_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABSetupItemBearerSURes STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABSETUPITEMBEARERSURES_STRUCT E_RABSetupItemBearerSURes; } LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMBEARERSURES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsetupitembearersures(LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMBEARERSURES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsetupitembearersures(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMBEARERSURES_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeModifiedItemBearerModReq STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABTOBEMODIFIEDITEMBEARERMODREQ_STRUCT E_RABToBeModifiedItemBearerModReq; } LIBLTE_S1AP_MESSAGE_E_RABTOBEMODIFIEDITEMBEARERMODREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobemodifieditembearermodreq(LIBLTE_S1AP_MESSAGE_E_RABTOBEMODIFIEDITEMBEARERMODREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobemodifieditembearermodreq(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBEMODIFIEDITEMBEARERMODREQ_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABModifyItemBearerModRes STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABMODIFYITEMBEARERMODRES_STRUCT E_RABModifyItemBearerModRes; } LIBLTE_S1AP_MESSAGE_E_RABMODIFYITEMBEARERMODRES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabmodifyitembearermodres(LIBLTE_S1AP_MESSAGE_E_RABMODIFYITEMBEARERMODRES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabmodifyitembearermodres(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABMODIFYITEMBEARERMODRES_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABReleaseItemBearerRelComp STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABRELEASEITEMBEARERRELCOMP_STRUCT E_RABReleaseItemBearerRelComp; } LIBLTE_S1AP_MESSAGE_E_RABRELEASEITEMBEARERRELCOMP_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabreleaseitembearerrelcomp(LIBLTE_S1AP_MESSAGE_E_RABRELEASEITEMBEARERRELCOMP_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabreleaseitembearerrelcomp(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABRELEASEITEMBEARERRELCOMP_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABToBeSetupItemCtxtSUReq STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABTOBESETUPITEMCTXTSUREQ_STRUCT E_RABToBeSetupItemCtxtSUReq; } LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMCTXTSUREQ_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabtobesetupitemctxtsureq(LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMCTXTSUREQ_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabtobesetupitemctxtsureq(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABTOBESETUPITEMCTXTSUREQ_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABSetupItemCtxtSURes STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_E_RABSETUPITEMCTXTSURES_STRUCT E_RABSetupItemCtxtSURes; } LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMCTXTSURES_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsetupitemctxtsures(LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMCTXTSURES_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsetupitemctxtsures(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABSETUPITEMCTXTSURES_STRUCT* ie); /******************************************************************************* /* Protocol Message TAIItem STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_TAIITEM_STRUCT TAIItem; } LIBLTE_S1AP_MESSAGE_TAIITEM_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_taiitem(LIBLTE_S1AP_MESSAGE_TAIITEM_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_taiitem(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_TAIITEM_STRUCT* ie); /******************************************************************************* /* Protocol Message ResetAcknowledge STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_UE_ASSOCIATEDLOGICALS1_CONNECTIONLISTRESACK_STRUCT UE_associatedLogicalS1_ConnectionListResAck; bool UE_associatedLogicalS1_ConnectionListResAck_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_RESETACKNOWLEDGE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_resetacknowledge(LIBLTE_S1AP_MESSAGE_RESETACKNOWLEDGE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_resetacknowledge(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_RESETACKNOWLEDGE_STRUCT* ie); /******************************************************************************* /* Protocol Message Reset STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_RESETTYPE_STRUCT ResetType; } LIBLTE_S1AP_MESSAGE_RESET_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_reset(LIBLTE_S1AP_MESSAGE_RESET_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_reset(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_RESET_STRUCT* ie); /******************************************************************************* /* Protocol Message DownlinkS1cdma2000tunneling STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_RABSUBJECTTODATAFORWARDINGLIST_STRUCT E_RABSubjecttoDataForwardingList; bool E_RABSubjecttoDataForwardingList_present; LIBLTE_S1AP_CDMA2000HOSTATUS_ENUM_EXT cdma2000HOStatus; bool cdma2000HOStatus_present; LIBLTE_S1AP_CDMA2000RATTYPE_ENUM_EXT cdma2000RATType; LIBLTE_S1AP_CDMA2000PDU_STRUCT cdma2000PDU; } LIBLTE_S1AP_MESSAGE_DOWNLINKS1CDMA2000TUNNELING_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_downlinks1cdma2000tunneling(LIBLTE_S1AP_MESSAGE_DOWNLINKS1CDMA2000TUNNELING_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_downlinks1cdma2000tunneling(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_DOWNLINKS1CDMA2000TUNNELING_STRUCT* ie); /******************************************************************************* /* Protocol Message HandoverCommand STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_HANDOVERTYPE_ENUM_EXT HandoverType; LIBLTE_S1AP_NASSECURITYPARAMETERSFROME_UTRAN_STRUCT NASSecurityParametersfromE_UTRAN; bool NASSecurityParametersfromE_UTRAN_present; LIBLTE_S1AP_E_RABSUBJECTTODATAFORWARDINGLIST_STRUCT E_RABSubjecttoDataForwardingList; bool E_RABSubjecttoDataForwardingList_present; LIBLTE_S1AP_E_RABLIST_STRUCT E_RABtoReleaseListHOCmd; bool E_RABtoReleaseListHOCmd_present; LIBLTE_S1AP_TARGET_TOSOURCE_TRANSPARENTCONTAINER_STRUCT Target_ToSource_TransparentContainer; LIBLTE_S1AP_TARGET_TOSOURCE_TRANSPARENTCONTAINER_STRUCT Target_ToSource_TransparentContainer_Secondary; bool Target_ToSource_TransparentContainer_Secondary_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_HANDOVERCOMMAND_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handovercommand(LIBLTE_S1AP_MESSAGE_HANDOVERCOMMAND_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handovercommand(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_HANDOVERCOMMAND_STRUCT* ie); /******************************************************************************* /* Protocol Message HandoverRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_HANDOVERTYPE_ENUM_EXT HandoverType; LIBLTE_S1AP_CAUSE_STRUCT Cause; LIBLTE_S1AP_UEAGGREGATEMAXIMUMBITRATE_STRUCT uEaggregateMaximumBitrate; LIBLTE_S1AP_E_RABTOBESETUPLISTHOREQ_STRUCT E_RABToBeSetupListHOReq; LIBLTE_S1AP_SOURCE_TOTARGET_TRANSPARENTCONTAINER_STRUCT Source_ToTarget_TransparentContainer; LIBLTE_S1AP_UESECURITYCAPABILITIES_STRUCT UESecurityCapabilities; LIBLTE_S1AP_HANDOVERRESTRICTIONLIST_STRUCT HandoverRestrictionList; bool HandoverRestrictionList_present; LIBLTE_S1AP_TRACEACTIVATION_STRUCT TraceActivation; bool TraceActivation_present; LIBLTE_S1AP_REQUESTTYPE_STRUCT RequestType; bool RequestType_present; LIBLTE_S1AP_SRVCCOPERATIONPOSSIBLE_ENUM_EXT SRVCCOperationPossible; bool SRVCCOperationPossible_present; LIBLTE_S1AP_SECURITYCONTEXT_STRUCT SecurityContext; LIBLTE_S1AP_NASSECURITYPARAMETERSTOE_UTRAN_STRUCT NASSecurityParameterstoE_UTRAN; bool NASSecurityParameterstoE_UTRAN_present; LIBLTE_S1AP_CSG_ID_STRUCT CSG_Id; bool CSG_Id_present; LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_ENUM CSGMembershipStatus; bool CSGMembershipStatus_present; LIBLTE_S1AP_GUMMEI_STRUCT GUMMEI_ID; bool GUMMEI_ID_present; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID_2; bool MME_UE_S1AP_ID_2_present; LIBLTE_S1AP_MANAGEMENTBASEDMDTALLOWED_ENUM_EXT ManagementBasedMDTAllowed; bool ManagementBasedMDTAllowed_present; LIBLTE_S1AP_MDTPLMNLIST_STRUCT ManagementBasedMDTPLMNList; bool ManagementBasedMDTPLMNList_present; } LIBLTE_S1AP_MESSAGE_HANDOVERREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handoverrequest(LIBLTE_S1AP_MESSAGE_HANDOVERREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handoverrequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_HANDOVERREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message PathSwitchRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_RABTOBESWITCHEDDLLIST_STRUCT E_RABToBeSwitchedDLList; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT SourceMME_UE_S1AP_ID; LIBLTE_S1AP_EUTRAN_CGI_STRUCT EUTRAN_CGI; LIBLTE_S1AP_TAI_STRUCT TAI; LIBLTE_S1AP_UESECURITYCAPABILITIES_STRUCT UESecurityCapabilities; LIBLTE_S1AP_CSG_ID_STRUCT CSG_Id; bool CSG_Id_present; LIBLTE_S1AP_CELLACCESSMODE_ENUM_EXT CellAccessMode; bool CellAccessMode_present; LIBLTE_S1AP_GUMMEI_STRUCT SourceMME_GUMMEI; bool SourceMME_GUMMEI_present; LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_ENUM CSGMembershipStatus; bool CSGMembershipStatus_present; LIBLTE_S1AP_TUNNELINFORMATION_STRUCT Tunnel_Information_for_BBF; bool Tunnel_Information_for_BBF_present; LIBLTE_S1AP_LHN_ID_STRUCT LHN_ID; bool LHN_ID_present; } LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_pathswitchrequest(LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_pathswitchrequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message PathSwitchRequestAcknowledge STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_UEAGGREGATEMAXIMUMBITRATE_STRUCT uEaggregateMaximumBitrate; bool uEaggregateMaximumBitrate_present; LIBLTE_S1AP_E_RABTOBESWITCHEDULLIST_STRUCT E_RABToBeSwitchedULList; bool E_RABToBeSwitchedULList_present; LIBLTE_S1AP_E_RABLIST_STRUCT E_RABToBeReleasedList; bool E_RABToBeReleasedList_present; LIBLTE_S1AP_SECURITYCONTEXT_STRUCT SecurityContext; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID_2; bool MME_UE_S1AP_ID_2_present; LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_ENUM CSGMembershipStatus; bool CSGMembershipStatus_present; } LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUESTACKNOWLEDGE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_pathswitchrequestacknowledge(LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUESTACKNOWLEDGE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_pathswitchrequestacknowledge(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUESTACKNOWLEDGE_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABSetupRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_UEAGGREGATEMAXIMUMBITRATE_STRUCT uEaggregateMaximumBitrate; bool uEaggregateMaximumBitrate_present; LIBLTE_S1AP_E_RABTOBESETUPLISTBEARERSUREQ_STRUCT E_RABToBeSetupListBearerSUReq; } LIBLTE_S1AP_MESSAGE_E_RABSETUPREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsetuprequest(LIBLTE_S1AP_MESSAGE_E_RABSETUPREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsetuprequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABSETUPREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABSetupResponse STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_RABSETUPLISTBEARERSURES_STRUCT E_RABSetupListBearerSURes; bool E_RABSetupListBearerSURes_present; LIBLTE_S1AP_E_RABLIST_STRUCT E_RABFailedToSetupListBearerSURes; bool E_RABFailedToSetupListBearerSURes_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_E_RABSETUPRESPONSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabsetupresponse(LIBLTE_S1AP_MESSAGE_E_RABSETUPRESPONSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabsetupresponse(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABSETUPRESPONSE_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABModifyRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_UEAGGREGATEMAXIMUMBITRATE_STRUCT uEaggregateMaximumBitrate; bool uEaggregateMaximumBitrate_present; LIBLTE_S1AP_E_RABTOBEMODIFIEDLISTBEARERMODREQ_STRUCT E_RABToBeModifiedListBearerModReq; } LIBLTE_S1AP_MESSAGE_E_RABMODIFYREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabmodifyrequest(LIBLTE_S1AP_MESSAGE_E_RABMODIFYREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabmodifyrequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABMODIFYREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABModifyResponse STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_RABMODIFYLISTBEARERMODRES_STRUCT E_RABModifyListBearerModRes; bool E_RABModifyListBearerModRes_present; LIBLTE_S1AP_E_RABLIST_STRUCT E_RABFailedToModifyList; bool E_RABFailedToModifyList_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_E_RABMODIFYRESPONSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabmodifyresponse(LIBLTE_S1AP_MESSAGE_E_RABMODIFYRESPONSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabmodifyresponse(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABMODIFYRESPONSE_STRUCT* ie); /******************************************************************************* /* Protocol Message E_RABReleaseResponse STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_RABRELEASELISTBEARERRELCOMP_STRUCT E_RABReleaseListBearerRelComp; bool E_RABReleaseListBearerRelComp_present; LIBLTE_S1AP_E_RABLIST_STRUCT E_RABFailedToReleaseList; bool E_RABFailedToReleaseList_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; LIBLTE_S1AP_USERLOCATIONINFORMATION_STRUCT UserLocationInformation; bool UserLocationInformation_present; } LIBLTE_S1AP_MESSAGE_E_RABRELEASERESPONSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_e_rabreleaseresponse(LIBLTE_S1AP_MESSAGE_E_RABRELEASERESPONSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_e_rabreleaseresponse(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_E_RABRELEASERESPONSE_STRUCT* ie); /******************************************************************************* /* Protocol Message InitialContextSetupRequest STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_UEAGGREGATEMAXIMUMBITRATE_STRUCT uEaggregateMaximumBitrate; LIBLTE_S1AP_E_RABTOBESETUPLISTCTXTSUREQ_STRUCT E_RABToBeSetupListCtxtSUReq; LIBLTE_S1AP_UESECURITYCAPABILITIES_STRUCT UESecurityCapabilities; LIBLTE_S1AP_SECURITYKEY_STRUCT SecurityKey; LIBLTE_S1AP_TRACEACTIVATION_STRUCT TraceActivation; bool TraceActivation_present; LIBLTE_S1AP_HANDOVERRESTRICTIONLIST_STRUCT HandoverRestrictionList; bool HandoverRestrictionList_present; LIBLTE_S1AP_UERADIOCAPABILITY_STRUCT UERadioCapability; bool UERadioCapability_present; LIBLTE_S1AP_SUBSCRIBERPROFILEIDFORRFP_STRUCT SubscriberProfileIDforRFP; bool SubscriberProfileIDforRFP_present; LIBLTE_S1AP_CSFALLBACKINDICATOR_ENUM_EXT CSFallbackIndicator; bool CSFallbackIndicator_present; LIBLTE_S1AP_SRVCCOPERATIONPOSSIBLE_ENUM_EXT SRVCCOperationPossible; bool SRVCCOperationPossible_present; LIBLTE_S1AP_CSGMEMBERSHIPSTATUS_ENUM CSGMembershipStatus; bool CSGMembershipStatus_present; LIBLTE_S1AP_LAI_STRUCT RegisteredLAI; bool RegisteredLAI_present; LIBLTE_S1AP_GUMMEI_STRUCT GUMMEI_ID; bool GUMMEI_ID_present; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID_2; bool MME_UE_S1AP_ID_2_present; LIBLTE_S1AP_MANAGEMENTBASEDMDTALLOWED_ENUM_EXT ManagementBasedMDTAllowed; bool ManagementBasedMDTAllowed_present; LIBLTE_S1AP_MDTPLMNLIST_STRUCT ManagementBasedMDTPLMNList; bool ManagementBasedMDTPLMNList_present; LIBLTE_S1AP_ADDITIONALCSFALLBACKINDICATOR_ENUM_EXT AdditionalCSFallbackIndicator; bool AdditionalCSFallbackIndicator_present; } LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPREQUEST_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_initialcontextsetuprequest(LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPREQUEST_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_initialcontextsetuprequest(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPREQUEST_STRUCT* ie); /******************************************************************************* /* Protocol Message InitialContextSetupResponse STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_RABSETUPLISTCTXTSURES_STRUCT E_RABSetupListCtxtSURes; LIBLTE_S1AP_E_RABLIST_STRUCT E_RABFailedToSetupListCtxtSURes; bool E_RABFailedToSetupListCtxtSURes_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; } LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPRESPONSE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_initialcontextsetupresponse(LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPRESPONSE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_initialcontextsetupresponse(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPRESPONSE_STRUCT* ie); /******************************************************************************* /* Protocol Message Paging STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_UEIDENTITYINDEXVALUE_STRUCT UEIdentityIndexValue; LIBLTE_S1AP_UEPAGINGID_STRUCT UEPagingID; LIBLTE_S1AP_PAGINGDRX_ENUM_EXT pagingDRX; bool pagingDRX_present; LIBLTE_S1AP_CNDOMAIN_ENUM CNDomain; LIBLTE_S1AP_TAILIST_STRUCT TAIList; LIBLTE_S1AP_CSG_IDLIST_STRUCT CSG_IdList; bool CSG_IdList_present; LIBLTE_S1AP_PAGINGPRIORITY_ENUM_EXT PagingPriority; bool PagingPriority_present; } LIBLTE_S1AP_MESSAGE_PAGING_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_paging(LIBLTE_S1AP_MESSAGE_PAGING_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_paging(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_PAGING_STRUCT* ie); /******************************************************************************* /* Protocol Message HandoverRequestAcknowledge STRUCT ********************************************************************************/ typedef struct { bool ext; LIBLTE_S1AP_MME_UE_S1AP_ID_STRUCT MME_UE_S1AP_ID; LIBLTE_S1AP_ENB_UE_S1AP_ID_STRUCT eNB_UE_S1AP_ID; LIBLTE_S1AP_E_RABADMITTEDLIST_STRUCT E_RABAdmittedList; LIBLTE_S1AP_E_RABFAILEDTOSETUPLISTHOREQACK_STRUCT E_RABFailedToSetupListHOReqAck; bool E_RABFailedToSetupListHOReqAck_present; LIBLTE_S1AP_TARGET_TOSOURCE_TRANSPARENTCONTAINER_STRUCT Target_ToSource_TransparentContainer; LIBLTE_S1AP_CSG_ID_STRUCT CSG_Id; bool CSG_Id_present; LIBLTE_S1AP_CRITICALITYDIAGNOSTICS_STRUCT CriticalityDiagnostics; bool CriticalityDiagnostics_present; LIBLTE_S1AP_CELLACCESSMODE_ENUM_EXT CellAccessMode; bool CellAccessMode_present; } LIBLTE_S1AP_MESSAGE_HANDOVERREQUESTACKNOWLEDGE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_handoverrequestacknowledge(LIBLTE_S1AP_MESSAGE_HANDOVERREQUESTACKNOWLEDGE_STRUCT* ie, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_handoverrequestacknowledge(uint8_t** ptr, LIBLTE_S1AP_MESSAGE_HANDOVERREQUESTACKNOWLEDGE_STRUCT* ie); /******************************************************************************* /* Procedure code criticality lookups ********************************************************************************/ static const LIBLTE_S1AP_CRITICALITY_ENUM liblte_s1ap_procedure_criticality[50] = { LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_IGNORE, LIBLTE_S1AP_CRITICALITY_REJECT, LIBLTE_S1AP_CRITICALITY_IGNORE, }; /******************************************************************************* /* ProtocolIE-Field ********************************************************************************/ LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolie_header(uint32_t len, uint32_t ie_id, LIBLTE_S1AP_CRITICALITY_ENUM crit, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolie_header(uint8_t** ptr, uint32_t* ie_id, LIBLTE_S1AP_CRITICALITY_ENUM* crit, uint32_t* len); /******************************************************************************* /* InitiatingMessage CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_LOCATIONREPORTINGCONTROL, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_DOWNLINKS1CDMA2000TUNNELING, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_S1SETUPREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UECAPABILITYINFOINDICATION, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_LOCATIONREPORT, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UPLINKNONUEASSOCIATEDLPPATRANSPORT, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UPLINKS1CDMA2000TUNNELING, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_MMECONFIGURATIONTRANSFER, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_TRACESTART, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_HANDOVERCANCEL, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UERADIOCAPABILITYMATCHREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_DOWNLINKNASTRANSPORT, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_INITIALCONTEXTSETUPREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_HANDOVERREQUIRED, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_MMEDIRECTINFORMATIONTRANSFER, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_TRACEFAILUREINDICATION, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_MMECONFIGURATIONUPDATE, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_WRITEREPLACEWARNINGREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_ENBDIRECTINFORMATIONTRANSFER, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_DOWNLINKUEASSOCIATEDLPPATRANSPORT, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_E_RABRELEASECOMMAND, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_NASNONDELIVERYINDICATION, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_ENBCONFIGURATIONUPDATE, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UPLINKUEASSOCIATEDLPPATRANSPORT, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_INITIALUEMESSAGE, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_E_RABMODIFYREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UECONTEXTMODIFICATIONREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_E_RABSETUPREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_RESET, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_OVERLOADSTART, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_E_RABRELEASEINDICATION, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_LOCATIONREPORTINGFAILUREINDICATION, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_DEACTIVATETRACE, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_PATHSWITCHREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_HANDOVERREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_DOWNLINKNONUEASSOCIATEDLPPATRANSPORT, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_OVERLOADSTOP, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_PAGING, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_HANDOVERNOTIFY, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_PWSRESTARTINDICATION, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UECONTEXTRELEASEREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UPLINKNASTRANSPORT, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_ENBCONFIGURATIONTRANSFER, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_MMESTATUSTRANSFER, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_CELLTRAFFICTRACE, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UECONTEXTRELEASECOMMAND, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_KILLREQUEST, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_PRIVATEMESSAGE, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_ENBSTATUSTRANSFER, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_ERRORINDICATION, LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_N_ITEMS, } LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_ENUM; static const char liblte_s1ap_initiatingmessage_choice_text[LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_N_ITEMS][50] = { "LocationReportingControl", "DownlinkS1cdma2000tunneling", "S1SetupRequest", "UECapabilityInfoIndication", "LocationReport", "UplinkNonUEAssociatedLPPaTransport", "UplinkS1cdma2000tunneling", "MMEConfigurationTransfer", "TraceStart", "HandoverCancel", "UERadioCapabilityMatchRequest", "DownlinkNASTransport", "InitialContextSetupRequest", "HandoverRequired", "MMEDirectInformationTransfer", "TraceFailureIndication", "MMEConfigurationUpdate", "WriteReplaceWarningRequest", "ENBDirectInformationTransfer", "DownlinkUEAssociatedLPPaTransport", "E-RABReleaseCommand", "NASNonDeliveryIndication", "ENBConfigurationUpdate", "UplinkUEAssociatedLPPaTransport", "InitialUEMessage", "E-RABModifyRequest", "UEContextModificationRequest", "E-RABSetupRequest", "Reset", "OverloadStart", "E-RABReleaseIndication", "LocationReportingFailureIndication", "DeactivateTrace", "PathSwitchRequest", "HandoverRequest", "DownlinkNonUEAssociatedLPPaTransport", "OverloadStop", "Paging", "HandoverNotify", "PWSRestartIndication", "UEContextReleaseRequest", "UplinkNASTransport", "ENBConfigurationTransfer", "MMEStatusTransfer", "CellTrafficTrace", "UEContextReleaseCommand", "KillRequest", "PrivateMessage", "ENBStatusTransfer", "ErrorIndication", }; typedef union { LIBLTE_S1AP_MESSAGE_LOCATIONREPORTINGCONTROL_STRUCT LocationReportingControl; LIBLTE_S1AP_MESSAGE_DOWNLINKS1CDMA2000TUNNELING_STRUCT DownlinkS1cdma2000tunneling; LIBLTE_S1AP_MESSAGE_S1SETUPREQUEST_STRUCT S1SetupRequest; LIBLTE_S1AP_MESSAGE_UECAPABILITYINFOINDICATION_STRUCT UECapabilityInfoIndication; LIBLTE_S1AP_MESSAGE_LOCATIONREPORT_STRUCT LocationReport; LIBLTE_S1AP_MESSAGE_UPLINKNONUEASSOCIATEDLPPATRANSPORT_STRUCT UplinkNonUEAssociatedLPPaTransport; LIBLTE_S1AP_MESSAGE_UPLINKS1CDMA2000TUNNELING_STRUCT UplinkS1cdma2000tunneling; LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONTRANSFER_STRUCT MMEConfigurationTransfer; LIBLTE_S1AP_MESSAGE_TRACESTART_STRUCT TraceStart; LIBLTE_S1AP_MESSAGE_HANDOVERCANCEL_STRUCT HandoverCancel; LIBLTE_S1AP_MESSAGE_UERADIOCAPABILITYMATCHREQUEST_STRUCT UERadioCapabilityMatchRequest; LIBLTE_S1AP_MESSAGE_DOWNLINKNASTRANSPORT_STRUCT DownlinkNASTransport; LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPREQUEST_STRUCT InitialContextSetupRequest; LIBLTE_S1AP_MESSAGE_HANDOVERREQUIRED_STRUCT HandoverRequired; LIBLTE_S1AP_MESSAGE_MMEDIRECTINFORMATIONTRANSFER_STRUCT MMEDirectInformationTransfer; LIBLTE_S1AP_MESSAGE_TRACEFAILUREINDICATION_STRUCT TraceFailureIndication; LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATE_STRUCT MMEConfigurationUpdate; LIBLTE_S1AP_MESSAGE_WRITEREPLACEWARNINGREQUEST_STRUCT WriteReplaceWarningRequest; LIBLTE_S1AP_MESSAGE_ENBDIRECTINFORMATIONTRANSFER_STRUCT ENBDirectInformationTransfer; LIBLTE_S1AP_MESSAGE_DOWNLINKUEASSOCIATEDLPPATRANSPORT_STRUCT DownlinkUEAssociatedLPPaTransport; LIBLTE_S1AP_MESSAGE_E_RABRELEASECOMMAND_STRUCT E_RABReleaseCommand; LIBLTE_S1AP_MESSAGE_NASNONDELIVERYINDICATION_STRUCT NASNonDeliveryIndication; LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATE_STRUCT ENBConfigurationUpdate; LIBLTE_S1AP_MESSAGE_UPLINKUEASSOCIATEDLPPATRANSPORT_STRUCT UplinkUEAssociatedLPPaTransport; LIBLTE_S1AP_MESSAGE_INITIALUEMESSAGE_STRUCT InitialUEMessage; LIBLTE_S1AP_MESSAGE_E_RABMODIFYREQUEST_STRUCT E_RABModifyRequest; LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONREQUEST_STRUCT UEContextModificationRequest; LIBLTE_S1AP_MESSAGE_E_RABSETUPREQUEST_STRUCT E_RABSetupRequest; LIBLTE_S1AP_MESSAGE_RESET_STRUCT Reset; LIBLTE_S1AP_MESSAGE_OVERLOADSTART_STRUCT OverloadStart; LIBLTE_S1AP_MESSAGE_E_RABRELEASEINDICATION_STRUCT E_RABReleaseIndication; LIBLTE_S1AP_MESSAGE_LOCATIONREPORTINGFAILUREINDICATION_STRUCT LocationReportingFailureIndication; LIBLTE_S1AP_MESSAGE_DEACTIVATETRACE_STRUCT DeactivateTrace; LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUEST_STRUCT PathSwitchRequest; LIBLTE_S1AP_MESSAGE_HANDOVERREQUEST_STRUCT HandoverRequest; LIBLTE_S1AP_MESSAGE_DOWNLINKNONUEASSOCIATEDLPPATRANSPORT_STRUCT DownlinkNonUEAssociatedLPPaTransport; LIBLTE_S1AP_MESSAGE_OVERLOADSTOP_STRUCT OverloadStop; LIBLTE_S1AP_MESSAGE_PAGING_STRUCT Paging; LIBLTE_S1AP_MESSAGE_HANDOVERNOTIFY_STRUCT HandoverNotify; LIBLTE_S1AP_MESSAGE_PWSRESTARTINDICATION_STRUCT PWSRestartIndication; LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASEREQUEST_STRUCT UEContextReleaseRequest; LIBLTE_S1AP_MESSAGE_UPLINKNASTRANSPORT_STRUCT UplinkNASTransport; LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONTRANSFER_STRUCT ENBConfigurationTransfer; LIBLTE_S1AP_MESSAGE_MMESTATUSTRANSFER_STRUCT MMEStatusTransfer; LIBLTE_S1AP_MESSAGE_CELLTRAFFICTRACE_STRUCT CellTrafficTrace; LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASECOMMAND_STRUCT UEContextReleaseCommand; LIBLTE_S1AP_MESSAGE_KILLREQUEST_STRUCT KillRequest; LIBLTE_S1AP_MESSAGE_PRIVATEMESSAGE_STRUCT PrivateMessage; LIBLTE_S1AP_MESSAGE_ENBSTATUSTRANSFER_STRUCT ENBStatusTransfer; LIBLTE_S1AP_MESSAGE_ERRORINDICATION_STRUCT ErrorIndication; } LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UNION; typedef struct { uint8_t procedureCode; LIBLTE_S1AP_CRITICALITY_ENUM criticality; LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_UNION choice; LIBLTE_S1AP_INITIATINGMESSAGE_CHOICE_ENUM choice_type; } LIBLTE_S1AP_INITIATINGMESSAGE_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_initiatingmessage(LIBLTE_S1AP_INITIATINGMESSAGE_STRUCT* msg, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_initiatingmessage(uint8_t** ptr, LIBLTE_S1AP_INITIATINGMESSAGE_STRUCT* msg); /******************************************************************************* /* UnsuccessfulOutcome CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_S1SETUPFAILURE, LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_PATHSWITCHREQUESTFAILURE, LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_UECONTEXTMODIFICATIONFAILURE, LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_INITIALCONTEXTSETUPFAILURE, LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_ENBCONFIGURATIONUPDATEFAILURE, LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_HANDOVERPREPARATIONFAILURE, LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_HANDOVERFAILURE, LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_MMECONFIGURATIONUPDATEFAILURE, LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_N_ITEMS, } LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_ENUM; static const char liblte_s1ap_unsuccessfuloutcome_choice_text[LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_N_ITEMS][50] = { "S1SetupFailure", "PathSwitchRequestFailure", "UEContextModificationFailure", "InitialContextSetupFailure", "ENBConfigurationUpdateFailure", "HandoverPreparationFailure", "HandoverFailure", "MMEConfigurationUpdateFailure", }; typedef union { LIBLTE_S1AP_MESSAGE_S1SETUPFAILURE_STRUCT S1SetupFailure; LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUESTFAILURE_STRUCT PathSwitchRequestFailure; LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONFAILURE_STRUCT UEContextModificationFailure; LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPFAILURE_STRUCT InitialContextSetupFailure; LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATEFAILURE_STRUCT ENBConfigurationUpdateFailure; LIBLTE_S1AP_MESSAGE_HANDOVERPREPARATIONFAILURE_STRUCT HandoverPreparationFailure; LIBLTE_S1AP_MESSAGE_HANDOVERFAILURE_STRUCT HandoverFailure; LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATEFAILURE_STRUCT MMEConfigurationUpdateFailure; } LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_UNION; typedef struct { uint8_t procedureCode; LIBLTE_S1AP_CRITICALITY_ENUM criticality; LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_UNION choice; LIBLTE_S1AP_UNSUCCESSFULOUTCOME_CHOICE_ENUM choice_type; } LIBLTE_S1AP_UNSUCCESSFULOUTCOME_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_unsuccessfuloutcome(LIBLTE_S1AP_UNSUCCESSFULOUTCOME_STRUCT* msg, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_unsuccessfuloutcome(uint8_t** ptr, LIBLTE_S1AP_UNSUCCESSFULOUTCOME_STRUCT* msg); /******************************************************************************* /* SuccessfulOutcome CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_HANDOVERREQUESTACKNOWLEDGE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_UECONTEXTRELEASECOMPLETE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_UERADIOCAPABILITYMATCHRESPONSE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_INITIALCONTEXTSETUPRESPONSE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_E_RABSETUPRESPONSE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_PATHSWITCHREQUESTACKNOWLEDGE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_MMECONFIGURATIONUPDATEACKNOWLEDGE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_RESETACKNOWLEDGE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_ENBCONFIGURATIONUPDATEACKNOWLEDGE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_E_RABMODIFYRESPONSE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_WRITEREPLACEWARNINGRESPONSE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_S1SETUPRESPONSE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_KILLRESPONSE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_UECONTEXTMODIFICATIONRESPONSE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_HANDOVERCOMMAND, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_HANDOVERCANCELACKNOWLEDGE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_E_RABRELEASERESPONSE, LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_N_ITEMS, } LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_ENUM; static const char liblte_s1ap_successfuloutcome_choice_text[LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_N_ITEMS][50] = { "HandoverRequestAcknowledge", "UEContextReleaseComplete", "UERadioCapabilityMatchResponse", "InitialContextSetupResponse", "E-RABSetupResponse", "PathSwitchRequestAcknowledge", "MMEConfigurationUpdateAcknowledge", "ResetAcknowledge", "ENBConfigurationUpdateAcknowledge", "E-RABModifyResponse", "WriteReplaceWarningResponse", "S1SetupResponse", "KillResponse", "UEContextModificationResponse", "HandoverCommand", "HandoverCancelAcknowledge", "E-RABReleaseResponse", }; typedef union { LIBLTE_S1AP_MESSAGE_HANDOVERREQUESTACKNOWLEDGE_STRUCT HandoverRequestAcknowledge; LIBLTE_S1AP_MESSAGE_UECONTEXTRELEASECOMPLETE_STRUCT UEContextReleaseComplete; LIBLTE_S1AP_MESSAGE_UERADIOCAPABILITYMATCHRESPONSE_STRUCT UERadioCapabilityMatchResponse; LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETUPRESPONSE_STRUCT InitialContextSetupResponse; LIBLTE_S1AP_MESSAGE_E_RABSETUPRESPONSE_STRUCT E_RABSetupResponse; LIBLTE_S1AP_MESSAGE_PATHSWITCHREQUESTACKNOWLEDGE_STRUCT PathSwitchRequestAcknowledge; LIBLTE_S1AP_MESSAGE_MMECONFIGURATIONUPDATEACKNOWLEDGE_STRUCT MMEConfigurationUpdateAcknowledge; LIBLTE_S1AP_MESSAGE_RESETACKNOWLEDGE_STRUCT ResetAcknowledge; LIBLTE_S1AP_MESSAGE_ENBCONFIGURATIONUPDATEACKNOWLEDGE_STRUCT ENBConfigurationUpdateAcknowledge; LIBLTE_S1AP_MESSAGE_E_RABMODIFYRESPONSE_STRUCT E_RABModifyResponse; LIBLTE_S1AP_MESSAGE_WRITEREPLACEWARNINGRESPONSE_STRUCT WriteReplaceWarningResponse; LIBLTE_S1AP_MESSAGE_S1SETUPRESPONSE_STRUCT S1SetupResponse; LIBLTE_S1AP_MESSAGE_KILLRESPONSE_STRUCT KillResponse; LIBLTE_S1AP_MESSAGE_UECONTEXTMODIFICATIONRESPONSE_STRUCT UEContextModificationResponse; LIBLTE_S1AP_MESSAGE_HANDOVERCOMMAND_STRUCT HandoverCommand; LIBLTE_S1AP_MESSAGE_HANDOVERCANCELACKNOWLEDGE_STRUCT HandoverCancelAcknowledge; LIBLTE_S1AP_MESSAGE_E_RABRELEASERESPONSE_STRUCT E_RABReleaseResponse; } LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_UNION; typedef struct { uint8_t procedureCode; LIBLTE_S1AP_CRITICALITY_ENUM criticality; LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_UNION choice; LIBLTE_S1AP_SUCCESSFULOUTCOME_CHOICE_ENUM choice_type; } LIBLTE_S1AP_SUCCESSFULOUTCOME_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_successfuloutcome(LIBLTE_S1AP_SUCCESSFULOUTCOME_STRUCT* msg, uint8_t** ptr); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_successfuloutcome(uint8_t** ptr, LIBLTE_S1AP_SUCCESSFULOUTCOME_STRUCT* msg); /******************************************************************************* /* S1AP_PDU CHOICE ********************************************************************************/ typedef enum { LIBLTE_S1AP_S1AP_PDU_CHOICE_INITIATINGMESSAGE, LIBLTE_S1AP_S1AP_PDU_CHOICE_SUCCESSFULOUTCOME, LIBLTE_S1AP_S1AP_PDU_CHOICE_UNSUCCESSFULOUTCOME, LIBLTE_S1AP_S1AP_PDU_CHOICE_N_ITEMS, } LIBLTE_S1AP_S1AP_PDU_CHOICE_ENUM; static const char liblte_s1ap_s1ap_pdu_choice_text[LIBLTE_S1AP_S1AP_PDU_CHOICE_N_ITEMS][50] = { "initiatingMessage", "successfulOutcome", "unsuccessfulOutcome", }; typedef union { LIBLTE_S1AP_INITIATINGMESSAGE_STRUCT initiatingMessage; LIBLTE_S1AP_SUCCESSFULOUTCOME_STRUCT successfulOutcome; LIBLTE_S1AP_UNSUCCESSFULOUTCOME_STRUCT unsuccessfulOutcome; } LIBLTE_S1AP_S1AP_PDU_CHOICE_UNION; typedef struct { bool ext; LIBLTE_S1AP_S1AP_PDU_CHOICE_UNION choice; LIBLTE_S1AP_S1AP_PDU_CHOICE_ENUM choice_type; } LIBLTE_S1AP_S1AP_PDU_STRUCT; LIBLTE_ERROR_ENUM liblte_s1ap_pack_s1ap_pdu(LIBLTE_S1AP_S1AP_PDU_STRUCT* s1ap_pdu, LIBLTE_BYTE_MSG_STRUCT* msg); LIBLTE_ERROR_ENUM liblte_s1ap_unpack_s1ap_pdu(LIBLTE_BYTE_MSG_STRUCT* msg, LIBLTE_S1AP_S1AP_PDU_STRUCT* s1ap_pdu); #endif // SRSLTE_LIBLTE_S1AP_H