From 89162943b036ae57f2ffcad004cdab2a1f3d9d36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stig=20Bj=C3=B8rlykke?= Date: Wed, 17 Jun 2009 15:02:12 +0000 Subject: [PATCH] From Anders: Update to June specification. svn path=/trunk/; revision=28767 --- asn1/s1ap/S1AP-CommonDataTypes.asn | 3 +- asn1/s1ap/S1AP-Constants.asn | 9 +- asn1/s1ap/S1AP-Containers.asn | 3 +- asn1/s1ap/S1AP-IEs.asn | 140 +++++---- asn1/s1ap/S1AP-PDU-Contents.asn | 46 +-- asn1/s1ap/S1AP-PDU-Descriptions.asn | 3 +- asn1/s1ap/s1ap.cnf | 11 +- epan/dissectors/packet-s1ap.c | 436 +++++++++++++++------------- 8 files changed, 347 insertions(+), 304 deletions(-) diff --git a/asn1/s1ap/S1AP-CommonDataTypes.asn b/asn1/s1ap/S1AP-CommonDataTypes.asn index 505ec121c0..f08907557a 100644 --- a/asn1/s1ap/S1AP-CommonDataTypes.asn +++ b/asn1/s1ap/S1AP-CommonDataTypes.asn @@ -1,5 +1,5 @@ -- $Id$ --- 3GPP TS 36.413 version 8.5.1 (2009-04) +-- 3GPP TS 36.413 V8.6.0 (2009-06) -- 9.3.5 Common Definitions -- ************************************************************** -- @@ -35,3 +35,4 @@ TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuc END + diff --git a/asn1/s1ap/S1AP-Constants.asn b/asn1/s1ap/S1AP-Constants.asn index 9defdbc5a9..ada265d7f7 100644 --- a/asn1/s1ap/S1AP-Constants.asn +++ b/asn1/s1ap/S1AP-Constants.asn @@ -1,5 +1,5 @@ -- $Id$ --- 3GPP TS 36.413 version 8.5.1 (2009-04) +-- 3GPP TS 36.413 V8.6.0 (2009-06) -- 9.3.6 Constant Definitions -- ************************************************************** -- @@ -95,18 +95,16 @@ maxProtocolIEs INTEGER ::= 65535 maxNrOfCSGs INTEGER ::= 256 maxNrOfE-RABs INTEGER ::= 256 -maxNrOfInterfaces INTEGER ::= 3 --FFS maxnoofTAIs INTEGER ::= 256 maxnoofTACs INTEGER ::= 256 maxNrOfErrors INTEGER ::= 256 maxnoofBPLMNs INTEGER ::= 6 -maxnoofPLMNsPerMME INTEGER ::= 32 -- FFS +maxnoofPLMNsPerMME INTEGER ::= 32 maxnoofEPLMNs INTEGER ::= 15 maxnoofEPLMNsPlusOne INTEGER ::= 16 maxnoofForbLACs INTEGER ::= 4096 maxnoofForbTACs INTEGER ::= 4096 maxNrOfIndividualS1ConnectionsToReset INTEGER ::= 256 -maxnoofGUMMEIs INTEGER ::= 256 -- FFS maxnoofCells INTEGER ::= 16 maxnoofTAIforWarning INTEGER ::= 65535 maxnoofCellID INTEGER ::= 65535 @@ -248,5 +246,8 @@ id-RRC-Establishment-Cause ProtocolIE-ID ::= 134 id-NASSecurityParametersfromE-UTRAN ProtocolIE-ID ::= 135 id-NASSecurityParameterstoE-UTRAN ProtocolIE-ID ::= 136 id-DefaultPagingDRX ProtocolIE-ID ::= 137 +id-Source-ToTarget-TransparentContainer-Secondary ProtocolIE-ID ::= 138 +id-Target-ToSource-TransparentContainer-Secondary ProtocolIE-ID ::= 139 END + diff --git a/asn1/s1ap/S1AP-Containers.asn b/asn1/s1ap/S1AP-Containers.asn index f5ca56d586..5d85c9045f 100644 --- a/asn1/s1ap/S1AP-Containers.asn +++ b/asn1/s1ap/S1AP-Containers.asn @@ -1,5 +1,5 @@ -- $Id$ --- 3GPP TS 36.413 version 8.5.1 (2009-04) +-- 3GPP TS 36.413 V8.6.0 (2009-06) -- 9.3.7 Container Definitions -- ************************************************************** -- @@ -204,3 +204,4 @@ END + diff --git a/asn1/s1ap/S1AP-IEs.asn b/asn1/s1ap/S1AP-IEs.asn index 79d4cadaed..46ea9fea6d 100644 --- a/asn1/s1ap/S1AP-IEs.asn +++ b/asn1/s1ap/S1AP-IEs.asn @@ -1,5 +1,5 @@ -- $Id$ --- 3GPP TS 36.413 version 8.5.1 (2009-04) +-- 3GPP TS 36.413 V8.6.0 (2009-06) -- 9.3.4 Information Element Definitions -- ************************************************************** -- @@ -21,7 +21,6 @@ IMPORTS id-Bearers-SubjectToStatusTransfer-Item, maxNrOfCSGs, maxNrOfE-RABs, - maxNrOfInterfaces, maxNrOfErrors, maxnoofBPLMNs, maxnoofPLMNsPerMME, @@ -31,7 +30,6 @@ IMPORTS maxnoofForbLACs, maxnoofForbTACs, maxnoofTACs, - maxnoofGUMMEIs, maxnoofCells, maxnoofCellID, maxnoofEmergencyAreaID, @@ -102,15 +100,10 @@ BitRate ::= INTEGER (0..10000000000) BPLMNs ::= SEQUENCE (SIZE(1.. maxnoofBPLMNs)) OF PLMNidentity -BroadcastCompletedAreaList ::= SEQUENCE { +BroadcastCompletedAreaList ::= CHOICE { cellID-Broadcast CellID-Broadcast, tAI-Broadcast TAI-Broadcast, emergencyAreaID-Broadcast EmergencyAreaID-Broadcast, - iE-Extensions ProtocolExtensionContainer { {BroadcastCompletedAreaList-ExtIEs} } OPTIONAL, - ... -} - -BroadcastCompletedAreaList-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { ... } @@ -184,7 +177,8 @@ CauseRadioNetwork ::= ENUMERATED { s1-intra-system-handover-triggered, s1-inter-system-handover-triggered, x2-handover-triggered, - ... + ..., + redirection-towards-1xRTT } @@ -292,8 +286,10 @@ CNDomain ::= ENUMERATED { } CSFallbackIndicator ::= ENUMERATED { - cs-fallback-required, - ... + cs-fallback-required, + cs-fallback-high-priority, + ..., + cs-fallback-high-priority } CSG-Id ::= BIT STRING (SIZE (27)) @@ -453,6 +449,60 @@ EventType ::= ENUMERATED { ... } +E-RAB-ID ::= INTEGER (0..15, ...) + +E-RABInformationList ::= SEQUENCE (SIZE (1.. maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { { E-RABInformationListIEs } } + +E-RABInformationListIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABInformationListItem CRITICALITY ignore TYPE E-RABInformationListItem PRESENCE mandatory }, + ... +} + +E-RABInformationListItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + dL-Forwarding DL-Forwarding OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABInformationListItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABInformationListItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +E-RABList ::= SEQUENCE (SIZE(1.. maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { {E-RABItemIEs} } + +E-RABItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABItem CRITICALITY ignore TYPE E-RABItem PRESENCE mandatory }, + ... +} + +E-RABItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { {E-RABItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +E-RABLevelQoSParameters ::= SEQUENCE { + qCI QCI, + allocationRetentionPriority AllocationAndRetentionPriority, + gbrQosInformation GBR-QosInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABQoSParameters-ExtIEs} } OPTIONAL, + ... +} + +E-RABQoSParameters-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + EUTRAN-CGI ::= SEQUENCE { pLMNidentity PLMNidentity, cell-ID CellIdentity, @@ -736,7 +786,7 @@ ReportArea ::= ENUMERATED { ... } -RepetitionPeriod ::= INTEGER (1..4096) +RepetitionPeriod ::= INTEGER (0..4096) RNC-ID ::= INTEGER (0..4095) @@ -754,71 +804,15 @@ RRC-Establishment-Cause ::= ENUMERATED { -- S -E-RAB-ID ::= INTEGER (0..15, ...) - -E-RABInformationList ::= SEQUENCE (SIZE (1.. maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { { E-RABInformationListIEs } } - -E-RABInformationListIEs S1AP-PROTOCOL-IES ::= { - { ID id-E-RABInformationListItem CRITICALITY ignore TYPE E-RABInformationListItem PRESENCE mandatory }, - ... -} - -E-RABInformationListItem ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - dL-Forwarding DL-Forwarding OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABInformationListItem-ExtIEs} } OPTIONAL, - ... -} - -E-RABInformationListItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { - ... -} - -E-RABList ::= SEQUENCE (SIZE(1.. maxNrOfE-RABs)) OF ProtocolIE-SingleContainer { {E-RABItemIEs} } - -E-RABItemIEs S1AP-PROTOCOL-IES ::= { - { ID id-E-RABItem CRITICALITY ignore TYPE E-RABItem PRESENCE mandatory }, - ... -} - -E-RABItem ::= SEQUENCE { - e-RAB-ID E-RAB-ID, - cause Cause, - iE-Extensions ProtocolExtensionContainer { {E-RABItem-ExtIEs} } OPTIONAL, - ... -} - -E-RABItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { - ... -} - - - - -E-RABLevelQoSParameters ::= SEQUENCE { - qCI QCI, - allocationRetentionPriority AllocationAndRetentionPriority, - gbrQosInformation GBR-QosInformation OPTIONAL, - iE-Extensions ProtocolExtensionContainer { {E-RABQoSParameters-ExtIEs} } OPTIONAL, - ... -} - -E-RABQoSParameters-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { - ... -} - - - - SecurityKey ::= BIT STRING (SIZE(256)) SecurityContext ::= SEQUENCE { - nextHopParameter INTEGER (0..7), - nextHopChainingCount SecurityKey, - iE-Extensions ProtocolExtensionContainer { { SecurityContext-ExtIEs} } OPTIONAL, + nextHopChainingCount INTEGER (0..7), + nextHopParameter SecurityKey, + iE-Extensions ProtocolExtensionContainer { { SecurityContext-ExtIEs} } OPTIONAL, ... } @@ -943,6 +937,7 @@ SupportedTAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { S-TMSI ::= SEQUENCE { mMEC MME-Code, + m-TMSI M-TMSI, iE-Extensions ProtocolExtensionContainer { {S-TMSI-ExtIEs} } OPTIONAL, ... } @@ -1185,3 +1180,4 @@ END + diff --git a/asn1/s1ap/S1AP-PDU-Contents.asn b/asn1/s1ap/S1AP-PDU-Contents.asn index 440b201e8c..836e233798 100644 --- a/asn1/s1ap/S1AP-PDU-Contents.asn +++ b/asn1/s1ap/S1AP-PDU-Contents.asn @@ -1,5 +1,5 @@ -- $Id$ --- 3GPP TS 36.413 version 8.5.1 (2009-04) +-- 3GPP TS 36.413 V8.6.0 (2009-06) -- 9.3.3 PDU Definitions -- ************************************************************** -- @@ -205,6 +205,7 @@ FROM S1AP-Containers id-SONConfigurationTransferECT, id-SONConfigurationTransferMCT, id-Source-ToTarget-TransparentContainer, + id-Source-ToTarget-TransparentContainer-Secondary, id-SourceMME-UE-S1AP-ID, id-SRVCCOperationPossible, id-SRVCCHOIndication, @@ -215,6 +216,7 @@ FROM S1AP-Containers id-TAIItem, id-TAIList, id-Target-ToSource-TransparentContainer, + id-Target-ToSource-TransparentContainer-Secondary, id-TargetID, id-TimeToWait, id-TraceActivation, @@ -289,10 +291,9 @@ HandoverRequiredIEs S1AP-PROTOCOL-IES ::= { { ID id-Direct-Forwarding-Path-Availability CRITICALITY ignore TYPE Direct-Forwarding-Path-Availability PRESENCE optional } | { ID id-SRVCCHOIndication CRITICALITY reject TYPE SRVCCHOIndication PRESENCE optional }| { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE mandatory }| - { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE optional }| + { ID id-Source-ToTarget-TransparentContainer-Secondary CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE optional }| { ID id-MSClassmark2 CRITICALITY reject TYPE MSClassmark2 PRESENCE conditional }| { ID id-MSClassmark3 CRITICALITY ignore TYPE MSClassmark3 PRESENCE conditional }, - ... } @@ -317,7 +318,7 @@ HandoverCommandIEs S1AP-PROTOCOL-IES ::= { { ID id-E-RABSubjecttoDataForwardingList CRITICALITY ignore TYPE E-RABSubjecttoDataForwardingList PRESENCE optional } | { ID id-E-RABtoReleaseListHOCmd CRITICALITY ignore TYPE E-RABList PRESENCE optional } | { ID id-Target-ToSource-TransparentContainer CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE mandatory }| - { ID id-Target-ToSource-TransparentContainer CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE optional }| + { ID id-Target-ToSource-TransparentContainer-Secondary CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE optional }| { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, ... } @@ -366,7 +367,7 @@ HandoverPreparationFailureIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- HANDOVER RESOURCE ALLOCATION ELEMTARY PROCEDURE +-- HANDOVER RESOURCE ALLOCATION ELEMENTARY PROCEDURE -- -- ************************************************************** @@ -502,7 +503,7 @@ HandoverFailureIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- HANDOVER NOTIFICATION ELEMTARY PROCEDURE +-- HANDOVER NOTIFICATION ELEMENTARY PROCEDURE -- -- ************************************************************** @@ -527,7 +528,7 @@ HandoverNotifyIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- PATH SWITCH REQUEST ELEMTARY PROCEDURE +-- PATH SWITCH REQUEST ELEMENTARY PROCEDURE -- -- ************************************************************** @@ -634,7 +635,7 @@ PathSwitchRequestFailureIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- HANDOVER CANCEL ELEMTARY PROCEDURE +-- HANDOVER CANCEL ELEMENTARY PROCEDURE -- -- ************************************************************** @@ -1065,6 +1066,13 @@ InitialContextSetupFailureIEs S1AP-PROTOCOL-IES ::= { ... } +-- ************************************************************** +-- +-- PAGING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + -- ************************************************************** -- -- Paging @@ -1270,7 +1278,8 @@ InitialUEMessage-IEs S1AP-PROTOCOL-IES ::= { { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory} | { ID id-RRC-Establishment-Cause CRITICALITY ignore TYPE RRC-Establishment-Cause PRESENCE mandatory} | { ID id-S-TMSI CRITICALITY reject TYPE S-TMSI PRESENCE optional} | - { ID id-CSG-Id CRITICALITY reject TYPE CSG-Id PRESENCE optional}, + { ID id-CSG-Id CRITICALITY reject TYPE CSG-Id PRESENCE optional} | + { ID id-GUMMEI-ID CRITICALITY reject TYPE GUMMEI PRESENCE optional}, ... } @@ -1592,7 +1601,7 @@ MMEConfigurationUpdateFailureIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- DOWNLINK S1 CDMA2000 TUNNELING ELEMTARY PROCEDURE +-- DOWNLINK S1 CDMA2000 TUNNELING ELEMENTARY PROCEDURE -- -- ************************************************************** @@ -1619,7 +1628,7 @@ DownlinkS1cdma2000tunnelingIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- UPLINK S1 CDMA2000 TUNNELING ELEMTARY PROCEDURE +-- UPLINK S1 CDMA2000 TUNNELING ELEMENTARY PROCEDURE -- -- ************************************************************** @@ -1648,7 +1657,7 @@ UplinkS1cdma2000tunnelingIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- UE CAPABILITY INFO INDICATION PROCEDURE +-- UE CAPABILITY INFO INDICATION ELEMENTARY PROCEDURE -- -- ************************************************************** @@ -1672,7 +1681,7 @@ UECapabilityInfoIndicationIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- eNB STATUS TRANSFER +-- eNB STATUS TRANSFER ELEMENTARY PROCEDURE -- -- ************************************************************** @@ -1697,7 +1706,7 @@ ENBStatusTransferIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- MME STATUS TRANSFER +-- MME STATUS TRANSFER ELEMENTARY PROCEDURE -- -- ************************************************************** @@ -1722,7 +1731,7 @@ MMEStatusTransferIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- Trace Procedures +-- TRACE ELEMENTARY PROCEDURES -- -- ************************************************************** -- ************************************************************** @@ -1788,7 +1797,7 @@ DeactivateTraceIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- CELL TRAFFIC TRACE PROCEDURE +-- CELL TRAFFIC TRACE ELEMENTARY PROCEDURE -- -- ************************************************************** @@ -1814,7 +1823,7 @@ CellTrafficTraceIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- LOCATION ELEMENTARY PROCEDURE +-- LOCATION ELEMENTARY PROCEDURES -- -- ************************************************************** @@ -1876,7 +1885,7 @@ LocationReportIEs S1AP-PROTOCOL-IES ::= { -- ************************************************************** -- --- OVERLOAD ELEMENTARY PROCEDURE +-- OVERLOAD ELEMENTARY PROCEDURES -- -- ************************************************************** @@ -2074,3 +2083,4 @@ PrivateMessageIEs S1AP-PRIVATE-IES ::= { END + diff --git a/asn1/s1ap/S1AP-PDU-Descriptions.asn b/asn1/s1ap/S1AP-PDU-Descriptions.asn index 049d33de43..d746bae502 100644 --- a/asn1/s1ap/S1AP-PDU-Descriptions.asn +++ b/asn1/s1ap/S1AP-PDU-Descriptions.asn @@ -1,5 +1,5 @@ -- $Id$ --- 3GPP TS 36.413 version 8.5.1 (2009-04) +-- 3GPP TS 36.413 V8.6.0 (2009-06) -- 9.3.2 Elementary Procedure Definitions -- ************************************************************** -- @@ -549,3 +549,4 @@ END + diff --git a/asn1/s1ap/s1ap.cnf b/asn1/s1ap/s1ap.cnf index db46c7704f..a658d31dde 100644 --- a/asn1/s1ap/s1ap.cnf +++ b/asn1/s1ap/s1ap.cnf @@ -29,7 +29,6 @@ ProtocolError-IE-ContainerList E-RAB-IE-ContainerPairList Presence L3-Information -M-TMSI NumberofBroadcast OldBSS-ToNewBSS-Information SourceBSS-ToTargetBSS-TransparentContainer @@ -420,6 +419,8 @@ id-RRC-Establishment-Cause ProtocolIE-ID id-NASSecurityParametersfromE-UTRAN ProtocolIE-ID id-NASSecurityParameterstoE-UTRAN ProtocolIE-ID id-DefaultPagingDRX ProtocolIE-ID +id-Source-ToTarget-TransparentContainer-Secondary ProtocolIE-ID +id-Target-ToSource-TransparentContainer-Secondary ProtocolIE-ID #.END #.REGISTER_NEW @@ -542,13 +543,15 @@ RRC-Establishment-Cause N s1ap.ies id-RRC-Establishment-Cause NASSecurityParametersfromE-UTRAN N s1ap.ies id-NASSecurityParametersfromE-UTRAN NASSecurityParameterstoE-UTRAN N s1ap.ies id-NASSecurityParameterstoE-UTRAN PagingDRX N s1ap.ies id-DefaultPagingDRX +Source-ToTarget-TransparentContainer N s1ap.ies id-Source-ToTarget-TransparentContainer-Secondary +Target-ToSource-TransparentContainer N s1ap.ies id-Target-ToSource-TransparentContainer-Secondary #S1AP-PROTOCOL-IES-PAIR -#RAB-SetupOrModifyItemFirst N s1ap.ies.pair.first id-RAB-SetupOrModifyItem -#RAB-SetupOrModifyItemSecond N s1ap.ies.pair.second id-RAB-SetupOrModifyItem +#RAB-SetupOrModifyItemFirst N s1ap.ies.pair.first id-RAB-SetupOrModifyItem +#RAB-SetupOrModifyItemSecond N s1ap.ies.pair.second id-RAB-SetupOrModifyItem #NBAP-PROTOCOL-EXTENSION -#RAB-Parameters N s1ap.extension id-AlternativeRABConfiguration +#RAB-Parameters N s1ap.extension id-AlternativeRABConfiguration #Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf N s1ap.extension id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf #NBAP-ELEMENTARY-PROCEDURE diff --git a/epan/dissectors/packet-s1ap.c b/epan/dissectors/packet-s1ap.c index 7e114a925c..6913979598 100644 --- a/epan/dissectors/packet-s1ap.c +++ b/epan/dissectors/packet-s1ap.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-s1ap.c */ -/* ../../tools/asn2wrs.py -p s1ap -c s1ap.cnf -s packet-s1ap-template S1AP-CommonDataTypes.asn S1AP-Constants.asn S1AP-Containers.asn S1AP-IEs.asn S1AP-PDU-Contents.asn S1AP-PDU-Descriptions.asn */ +/* ../../tools/asn2wrs.py -p s1ap -c ./s1ap.cnf -s ./packet-s1ap-template -D . S1AP-CommonDataTypes.asn S1AP-Constants.asn S1AP-Containers.asn S1AP-IEs.asn S1AP-PDU-Contents.asn S1AP-PDU-Descriptions.asn */ /* Input file: packet-s1ap-template.c */ @@ -77,7 +77,6 @@ static dissector_handle_t nas_eps_handle; #define maxProtocolIEs 65535 #define maxNrOfCSGs 256 #define maxNrOfE_RABs 256 -#define maxNrOfInterfaces 3 #define maxnoofTAIs 256 #define maxnoofTACs 256 #define maxNrOfErrors 256 @@ -88,7 +87,6 @@ static dissector_handle_t nas_eps_handle; #define maxnoofForbLACs 4096 #define maxnoofForbTACs 4096 #define maxNrOfIndividualS1ConnectionsToReset 256 -#define maxnoofGUMMEIs 256 #define maxnoofCells 16 #define maxnoofTAIforWarning 65535 #define maxnoofCellID 65535 @@ -267,7 +265,9 @@ typedef enum _ProtocolIE_ID_enum { id_RRC_Establishment_Cause = 134, id_NASSecurityParametersfromE_UTRAN = 135, id_NASSecurityParameterstoE_UTRAN = 136, - id_DefaultPagingDRX = 137 + id_DefaultPagingDRX = 137, + id_Source_ToTarget_TransparentContainer_Secondary = 138, + id_Target_ToSource_TransparentContainer_Secondary = 139 } ProtocolIE_ID_enum; /*--- End of included file: packet-s1ap-val.h ---*/ @@ -302,6 +302,9 @@ static int hf_s1ap_Global_ENB_ID_PDU = -1; /* Global_ENB_ID */ static int hf_s1ap_ENB_StatusTransfer_TransparentContainer_PDU = -1; /* ENB_StatusTransfer_TransparentContainer */ static int hf_s1ap_ENB_UE_S1AP_ID_PDU = -1; /* ENB_UE_S1AP_ID */ static int hf_s1ap_ENBname_PDU = -1; /* ENBname */ +static int hf_s1ap_E_RABInformationListItem_PDU = -1; /* E_RABInformationListItem */ +static int hf_s1ap_E_RABList_PDU = -1; /* E_RABList */ +static int hf_s1ap_E_RABItem_PDU = -1; /* E_RABItem */ static int hf_s1ap_EUTRAN_CGI_PDU = -1; /* EUTRAN_CGI */ static int hf_s1ap_GUMMEI_PDU = -1; /* GUMMEI */ static int hf_s1ap_HandoverRestrictionList_PDU = -1; /* HandoverRestrictionList */ @@ -321,9 +324,6 @@ static int hf_s1ap_RelativeMMECapacity_PDU = -1; /* RelativeMMECapacity */ static int hf_s1ap_RequestType_PDU = -1; /* RequestType */ static int hf_s1ap_RepetitionPeriod_PDU = -1; /* RepetitionPeriod */ static int hf_s1ap_RRC_Establishment_Cause_PDU = -1; /* RRC_Establishment_Cause */ -static int hf_s1ap_E_RABInformationListItem_PDU = -1; /* E_RABInformationListItem */ -static int hf_s1ap_E_RABList_PDU = -1; /* E_RABList */ -static int hf_s1ap_E_RABItem_PDU = -1; /* E_RABItem */ static int hf_s1ap_SecurityKey_PDU = -1; /* SecurityKey */ static int hf_s1ap_SecurityContext_PDU = -1; /* SecurityContext */ static int hf_s1ap_SerialNumber_PDU = -1; /* SerialNumber */ @@ -517,6 +517,12 @@ static int hf_s1ap_eNB_ID = -1; /* ENB_ID */ static int hf_s1ap_bearers_SubjectToStatusTransferList = -1; /* Bearers_SubjectToStatusTransferList */ static int hf_s1ap_ENBX2TLAs_item = -1; /* TransportLayerAddress */ static int hf_s1ap_EPLMNs_item = -1; /* PLMNidentity */ +static int hf_s1ap_dL_Forwarding = -1; /* DL_Forwarding */ +static int hf_s1ap_E_RABList_item = -1; /* ProtocolIE_SingleContainer */ +static int hf_s1ap_cause = -1; /* Cause */ +static int hf_s1ap_qCI = -1; /* QCI */ +static int hf_s1ap_allocationRetentionPriority = -1; /* AllocationAndRetentionPriority */ +static int hf_s1ap_gbrQosInformation = -1; /* GBR_QosInformation */ static int hf_s1ap_cell_ID = -1; /* CellIdentity */ static int hf_s1ap_ForbiddenTAs_item = -1; /* ForbiddenTAs_Item */ static int hf_s1ap_pLMN_Identity = -1; /* PLMNidentity */ @@ -549,14 +555,8 @@ static int hf_s1ap_reportArea = -1; /* ReportArea */ static int hf_s1ap_rIMInformation = -1; /* RIMInformation */ static int hf_s1ap_rIMRoutingAddress = -1; /* RIMRoutingAddress */ static int hf_s1ap_gERAN_Cell_ID = -1; /* GERAN_Cell_ID */ -static int hf_s1ap_dL_Forwarding = -1; /* DL_Forwarding */ -static int hf_s1ap_E_RABList_item = -1; /* ProtocolIE_SingleContainer */ -static int hf_s1ap_cause = -1; /* Cause */ -static int hf_s1ap_qCI = -1; /* QCI */ -static int hf_s1ap_allocationRetentionPriority = -1; /* AllocationAndRetentionPriority */ -static int hf_s1ap_gbrQosInformation = -1; /* GBR_QosInformation */ -static int hf_s1ap_nextHopParameter = -1; /* INTEGER_0_7 */ -static int hf_s1ap_nextHopChainingCount = -1; /* SecurityKey */ +static int hf_s1ap_nextHopChainingCount = -1; /* INTEGER_0_7 */ +static int hf_s1ap_nextHopParameter = -1; /* SecurityKey */ static int hf_s1ap_sONInformationRequest = -1; /* SONInformationRequest */ static int hf_s1ap_sONInformationReply = -1; /* SONInformationReply */ static int hf_s1ap_x2TNLConfigurationInfo = -1; /* X2TNLConfigurationInfo */ @@ -576,6 +576,7 @@ static int hf_s1ap_SupportedTAs_item = -1; /* SupportedTAs_Item */ static int hf_s1ap_tAC = -1; /* TAC */ static int hf_s1ap_broadcastPLMNs = -1; /* BPLMNs */ static int hf_s1ap_mMEC = -1; /* MME_Code */ +static int hf_s1ap_m_TMSI = -1; /* M_TMSI */ static int hf_s1ap_TAIListforWarning_item = -1; /* TAI */ static int hf_s1ap_TAI_Broadcast_item = -1; /* TAI_Broadcast_Item */ static int hf_s1ap_tAI = -1; /* TAI */ @@ -681,6 +682,10 @@ static gint ett_s1ap_Global_ENB_ID = -1; static gint ett_s1ap_ENB_StatusTransfer_TransparentContainer = -1; static gint ett_s1ap_ENBX2TLAs = -1; static gint ett_s1ap_EPLMNs = -1; +static gint ett_s1ap_E_RABInformationListItem = -1; +static gint ett_s1ap_E_RABList = -1; +static gint ett_s1ap_E_RABItem = -1; +static gint ett_s1ap_E_RABLevelQoSParameters = -1; static gint ett_s1ap_EUTRAN_CGI = -1; static gint ett_s1ap_ForbiddenTAs = -1; static gint ett_s1ap_ForbiddenTAs_Item = -1; @@ -699,10 +704,6 @@ static gint ett_s1ap_OverloadResponse = -1; static gint ett_s1ap_RequestType = -1; static gint ett_s1ap_RIMTransfer = -1; static gint ett_s1ap_RIMRoutingAddress = -1; -static gint ett_s1ap_E_RABInformationListItem = -1; -static gint ett_s1ap_E_RABList = -1; -static gint ett_s1ap_E_RABItem = -1; -static gint ett_s1ap_E_RABLevelQoSParameters = -1; static gint ett_s1ap_SecurityContext = -1; static gint ett_s1ap_SONInformation = -1; static gint ett_s1ap_SONInformationReply = -1; @@ -974,7 +975,7 @@ dissect_s1ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &ProcedureCode, FALSE); -#line 85 "s1ap.cnf" +#line 84 "s1ap.cnf" if (check_col(actx->pinfo->cinfo, COL_INFO)) col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ", val_to_str(ProcedureCode, s1ap_ProcedureCode_vals, @@ -1116,6 +1117,8 @@ static const value_string s1ap_ProtocolIE_ID_vals[] = { { id_NASSecurityParametersfromE_UTRAN, "id-NASSecurityParametersfromE-UTRAN" }, { id_NASSecurityParameterstoE_UTRAN, "id-NASSecurityParameterstoE-UTRAN" }, { id_DefaultPagingDRX, "id-DefaultPagingDRX" }, + { id_Source_ToTarget_TransparentContainer_Secondary, "id-Source-ToTarget-TransparentContainer-Secondary" }, + { id_Target_ToSource_TransparentContainer_Secondary, "id-Target-ToSource-TransparentContainer-Secondary" }, { 0, NULL } }; @@ -1125,7 +1128,7 @@ dissect_s1ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 65535U, &ProtocolIE_ID, FALSE); -#line 68 "s1ap.cnf" +#line 67 "s1ap.cnf" if (tree) { proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(s1ap_ProtocolIE_ID_vals), "unknown (%d)")); } @@ -1205,7 +1208,7 @@ static const per_sequence_t ProtocolIE_ContainerList_sequence_of[1] = { static int dissect_s1ap_ProtocolIE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 107 "s1ap.cnf" +#line 106 "s1ap.cnf" static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = { { "lowerBound", ASN1_PAR_INTEGER }, { "upperBound", ASN1_PAR_INTEGER }, @@ -1468,7 +1471,7 @@ dissect_s1ap_BitRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr static int dissect_s1ap_PLMNidentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 169 "s1ap.cnf" +#line 168 "s1ap.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -1708,18 +1711,25 @@ dissect_s1ap_EmergencyAreaID_Broadcast(tvbuff_t *tvb _U_, int offset _U_, asn1_c } -static const per_sequence_t BroadcastCompletedAreaList_sequence[] = { - { &hf_s1ap_cellID_Broadcast, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_CellID_Broadcast }, - { &hf_s1ap_tAI_Broadcast , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_TAI_Broadcast }, - { &hf_s1ap_emergencyAreaID_Broadcast, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_EmergencyAreaID_Broadcast }, - { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, - { NULL, 0, 0, NULL } +static const value_string s1ap_BroadcastCompletedAreaList_vals[] = { + { 0, "cellID-Broadcast" }, + { 1, "tAI-Broadcast" }, + { 2, "emergencyAreaID-Broadcast" }, + { 0, NULL } +}; + +static const per_choice_t BroadcastCompletedAreaList_choice[] = { + { 0, &hf_s1ap_cellID_Broadcast, ASN1_EXTENSION_ROOT , dissect_s1ap_CellID_Broadcast }, + { 1, &hf_s1ap_tAI_Broadcast , ASN1_EXTENSION_ROOT , dissect_s1ap_TAI_Broadcast }, + { 2, &hf_s1ap_emergencyAreaID_Broadcast, ASN1_EXTENSION_ROOT , dissect_s1ap_EmergencyAreaID_Broadcast }, + { 0, NULL, 0, NULL } }; static int dissect_s1ap_BroadcastCompletedAreaList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_s1ap_BroadcastCompletedAreaList, BroadcastCompletedAreaList_sequence); + offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, + ett_s1ap_BroadcastCompletedAreaList, BroadcastCompletedAreaList_choice, + NULL); return offset; } @@ -1762,6 +1772,7 @@ static const value_string s1ap_CauseRadioNetwork_vals[] = { { 33, "s1-intra-system-handover-triggered" }, { 34, "s1-inter-system-handover-triggered" }, { 35, "x2-handover-triggered" }, + { 36, "redirection-towards-1xRTT" }, { 0, NULL } }; @@ -1769,7 +1780,7 @@ static const value_string s1ap_CauseRadioNetwork_vals[] = { static int dissect_s1ap_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 36, NULL, TRUE, 0, NULL); + 36, NULL, TRUE, 1, NULL); return offset; } @@ -2101,6 +2112,8 @@ dissect_s1ap_CNDomain(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p static const value_string s1ap_CSFallbackIndicator_vals[] = { { 0, "cs-fallback-required" }, + { 1, "cs-fallback-high-priority" }, + { 2, "cs-fallback-high-priority" }, { 0, NULL } }; @@ -2108,7 +2121,7 @@ static const value_string s1ap_CSFallbackIndicator_vals[] = { static int dissect_s1ap_CSFallbackIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 1, NULL, TRUE, 0, NULL); + 2, NULL, TRUE, 1, NULL); return offset; } @@ -2405,7 +2418,7 @@ dissect_s1ap_ENB_UE_S1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_s1ap_ENBname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 182 "s1ap.cnf" +#line 181 "s1ap.cnf" tvbuff_t *parameter_tvb=NULL; int length; int p_offset; @@ -2438,7 +2451,7 @@ dissect_s1ap_ENBname(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr static int dissect_s1ap_TransportLayerAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 217 "s1ap.cnf" +#line 216 "s1ap.cnf" tvbuff_t *parameter_tvb=NULL; proto_tree *subtree; gint tvb_len; @@ -2521,6 +2534,97 @@ dissect_s1ap_EventType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, } +static const per_sequence_t E_RABInformationListItem_sequence[] = { + { &hf_s1ap_e_RAB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_E_RAB_ID }, + { &hf_s1ap_dL_Forwarding , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_DL_Forwarding }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_E_RABInformationListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_E_RABInformationListItem, E_RABInformationListItem_sequence); + + return offset; +} + + +static const per_sequence_t E_RABList_sequence_of[1] = { + { &hf_s1ap_E_RABList_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_SingleContainer }, +}; + +static int +dissect_s1ap_E_RABList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_s1ap_E_RABList, E_RABList_sequence_of, + 1, maxNrOfE_RABs, FALSE); + + return offset; +} + + +static const per_sequence_t E_RABItem_sequence[] = { + { &hf_s1ap_e_RAB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_E_RAB_ID }, + { &hf_s1ap_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_Cause }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_E_RABItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_E_RABItem, E_RABItem_sequence); + + return offset; +} + + + +static int +dissect_s1ap_QCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, FALSE); + + return offset; +} + + +static const per_sequence_t GBR_QosInformation_sequence[] = { + { &hf_s1ap_e_RAB_MaximumBitrateDL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate }, + { &hf_s1ap_e_RAB_MaximumBitrateUL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate }, + { &hf_s1ap_e_RAB_GuaranteedBitrateDL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate }, + { &hf_s1ap_e_RAB_GuaranteedBitrateUL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_GBR_QosInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_GBR_QosInformation, GBR_QosInformation_sequence); + + return offset; +} + + +static const per_sequence_t E_RABLevelQoSParameters_sequence[] = { + { &hf_s1ap_qCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_QCI }, + { &hf_s1ap_allocationRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_AllocationAndRetentionPriority }, + { &hf_s1ap_gbrQosInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_GBR_QosInformation }, + { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_s1ap_E_RABLevelQoSParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_s1ap_E_RABLevelQoSParameters, E_RABLevelQoSParameters_sequence); + + return offset; +} + + static int dissect_s1ap_ExtendedRNC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -2637,24 +2741,6 @@ dissect_s1ap_ForbiddenLAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U } -static const per_sequence_t GBR_QosInformation_sequence[] = { - { &hf_s1ap_e_RAB_MaximumBitrateDL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate }, - { &hf_s1ap_e_RAB_MaximumBitrateUL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate }, - { &hf_s1ap_e_RAB_GuaranteedBitrateDL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate }, - { &hf_s1ap_e_RAB_GuaranteedBitrateUL, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_BitRate }, - { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_s1ap_GBR_QosInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_s1ap_GBR_QosInformation, GBR_QosInformation_sequence); - - return offset; -} - - static int dissect_s1ap_GTP_TEID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -2891,6 +2977,16 @@ dissect_s1ap_MME_UE_S1AP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx +static int +dissect_s1ap_M_TMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, NULL); + + return offset; +} + + + static int dissect_s1ap_MSClassmark2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -2913,7 +3009,7 @@ dissect_s1ap_MSClassmark3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_s1ap_NAS_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 208 "s1ap.cnf" +#line 207 "s1ap.cnf" tvbuff_t *parameter_tvb=NULL; @@ -3016,16 +3112,6 @@ dissect_s1ap_PagingDRX(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, -static int -dissect_s1ap_QCI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 0U, 255U, NULL, FALSE); - - return offset; -} - - - static int dissect_s1ap_RelativeMMECapacity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, @@ -3116,7 +3202,7 @@ dissect_s1ap_RIMTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int dissect_s1ap_RepetitionPeriod(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, - 1U, 4096U, NULL, FALSE); + 0U, 4096U, NULL, FALSE); return offset; } @@ -3151,69 +3237,6 @@ dissect_s1ap_RRC_Establishment_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx } -static const per_sequence_t E_RABInformationListItem_sequence[] = { - { &hf_s1ap_e_RAB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_E_RAB_ID }, - { &hf_s1ap_dL_Forwarding , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_DL_Forwarding }, - { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_s1ap_E_RABInformationListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_s1ap_E_RABInformationListItem, E_RABInformationListItem_sequence); - - return offset; -} - - -static const per_sequence_t E_RABList_sequence_of[1] = { - { &hf_s1ap_E_RABList_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_s1ap_ProtocolIE_SingleContainer }, -}; - -static int -dissect_s1ap_E_RABList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, - ett_s1ap_E_RABList, E_RABList_sequence_of, - 1, maxNrOfE_RABs, FALSE); - - return offset; -} - - -static const per_sequence_t E_RABItem_sequence[] = { - { &hf_s1ap_e_RAB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_E_RAB_ID }, - { &hf_s1ap_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_Cause }, - { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_s1ap_E_RABItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_s1ap_E_RABItem, E_RABItem_sequence); - - return offset; -} - - -static const per_sequence_t E_RABLevelQoSParameters_sequence[] = { - { &hf_s1ap_qCI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_QCI }, - { &hf_s1ap_allocationRetentionPriority, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_AllocationAndRetentionPriority }, - { &hf_s1ap_gbrQosInformation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_GBR_QosInformation }, - { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, - { NULL, 0, 0, NULL } -}; - -static int -dissect_s1ap_E_RABLevelQoSParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, - ett_s1ap_E_RABLevelQoSParameters, E_RABLevelQoSParameters_sequence); - - return offset; -} - - static int dissect_s1ap_SecurityKey(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -3235,8 +3258,8 @@ dissect_s1ap_INTEGER_0_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static const per_sequence_t SecurityContext_sequence[] = { - { &hf_s1ap_nextHopParameter, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_INTEGER_0_7 }, - { &hf_s1ap_nextHopChainingCount, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_SecurityKey }, + { &hf_s1ap_nextHopChainingCount, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_INTEGER_0_7 }, + { &hf_s1ap_nextHopParameter, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_SecurityKey }, { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, { NULL, 0, 0, NULL } }; @@ -3532,6 +3555,7 @@ dissect_s1ap_SupportedTAs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static const per_sequence_t S_TMSI_sequence[] = { { &hf_s1ap_mMEC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_MME_Code }, + { &hf_s1ap_m_TMSI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_s1ap_M_TMSI }, { &hf_s1ap_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_s1ap_ProtocolExtensionContainer }, { NULL, 0, 0, NULL } }; @@ -3864,7 +3888,7 @@ dissect_s1ap_WarningMessageContents(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ static int dissect_s1ap_E_RAB_IE_ContainerList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 134 "s1ap.cnf" +#line 133 "s1ap.cnf" asn1_stack_frame_push(actx, "ProtocolIE-ContainerList"); asn1_param_push_integer(actx, 1); asn1_param_push_integer(actx, maxNrOfE_RABs); @@ -4698,7 +4722,7 @@ static const per_sequence_t DownlinkNASTransport_sequence[] = { static int dissect_s1ap_DownlinkNASTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 244 "s1ap.cnf" +#line 243 "s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_DL; @@ -4717,7 +4741,7 @@ static const per_sequence_t InitialUEMessage_sequence[] = { static int dissect_s1ap_InitialUEMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 240 "s1ap.cnf" +#line 239 "s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -4736,7 +4760,7 @@ static const per_sequence_t UplinkNASTransport_sequence[] = { static int dissect_s1ap_UplinkNASTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 248 "s1ap.cnf" +#line 247 "s1ap.cnf" /* Set the direction of the message */ actx->pinfo->link_dir=P2P_DIR_UL; @@ -5577,6 +5601,30 @@ static int dissect_ENBname_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_ offset += 7; offset >>= 3; return offset; } +static int dissect_E_RABInformationListItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_s1ap_E_RABInformationListItem(tvb, offset, &asn1_ctx, tree, hf_s1ap_E_RABInformationListItem_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E_RABList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_s1ap_E_RABList(tvb, offset, &asn1_ctx, tree, hf_s1ap_E_RABList_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_E_RABItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_s1ap_E_RABItem(tvb, offset, &asn1_ctx, tree, hf_s1ap_E_RABItem_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_EUTRAN_CGI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -5729,30 +5777,6 @@ static int dissect_RRC_Establishment_Cause_PDU(tvbuff_t *tvb _U_, packet_info *p offset += 7; offset >>= 3; return offset; } -static int dissect_E_RABInformationListItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { - int offset = 0; - asn1_ctx_t asn1_ctx; - asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); - offset = dissect_s1ap_E_RABInformationListItem(tvb, offset, &asn1_ctx, tree, hf_s1ap_E_RABInformationListItem_PDU); - offset += 7; offset >>= 3; - return offset; -} -static int dissect_E_RABList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { - int offset = 0; - asn1_ctx_t asn1_ctx; - asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); - offset = dissect_s1ap_E_RABList(tvb, offset, &asn1_ctx, tree, hf_s1ap_E_RABList_PDU); - offset += 7; offset >>= 3; - return offset; -} -static int dissect_E_RABItem_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { - int offset = 0; - asn1_ctx_t asn1_ctx; - asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); - offset = dissect_s1ap_E_RABItem(tvb, offset, &asn1_ctx, tree, hf_s1ap_E_RABItem_PDU); - offset += 7; offset >>= 3; - return offset; -} static int dissect_SecurityKey_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -6958,6 +6982,8 @@ proto_reg_handoff_s1ap(void) dissector_add("s1ap.ies", id_NASSecurityParametersfromE_UTRAN, new_create_dissector_handle(dissect_NASSecurityParametersfromE_UTRAN_PDU, proto_s1ap)); dissector_add("s1ap.ies", id_NASSecurityParameterstoE_UTRAN, new_create_dissector_handle(dissect_NASSecurityParameterstoE_UTRAN_PDU, proto_s1ap)); dissector_add("s1ap.ies", id_DefaultPagingDRX, new_create_dissector_handle(dissect_PagingDRX_PDU, proto_s1ap)); + dissector_add("s1ap.ies", id_Source_ToTarget_TransparentContainer_Secondary, new_create_dissector_handle(dissect_Source_ToTarget_TransparentContainer_PDU, proto_s1ap)); + dissector_add("s1ap.ies", id_Target_ToSource_TransparentContainer_Secondary, new_create_dissector_handle(dissect_Target_ToSource_TransparentContainer_PDU, proto_s1ap)); dissector_add("s1ap.proc.imsg", id_HandoverPreparation, new_create_dissector_handle(dissect_HandoverRequired_PDU, proto_s1ap)); dissector_add("s1ap.proc.sout", id_HandoverPreparation, new_create_dissector_handle(dissect_HandoverCommand_PDU, proto_s1ap)); dissector_add("s1ap.proc.uout", id_HandoverPreparation, new_create_dissector_handle(dissect_HandoverPreparationFailure_PDU, proto_s1ap)); @@ -7064,7 +7090,7 @@ void proto_register_s1ap(void) { "s1ap.Bearers_SubjectToStatusTransfer_Item", HFILL }}, { &hf_s1ap_BroadcastCompletedAreaList_PDU, { "BroadcastCompletedAreaList", "s1ap.BroadcastCompletedAreaList", - FT_NONE, BASE_NONE, NULL, 0, + FT_UINT32, BASE_DEC, VALS(s1ap_BroadcastCompletedAreaList_vals), 0, "s1ap.BroadcastCompletedAreaList", HFILL }}, { &hf_s1ap_Cause_PDU, { "Cause", "s1ap.Cause", @@ -7142,6 +7168,18 @@ void proto_register_s1ap(void) { { "ENBname", "s1ap.ENBname", FT_STRING, BASE_NONE, NULL, 0, "s1ap.ENBname", HFILL }}, + { &hf_s1ap_E_RABInformationListItem_PDU, + { "E-RABInformationListItem", "s1ap.E_RABInformationListItem", + FT_NONE, BASE_NONE, NULL, 0, + "s1ap.E_RABInformationListItem", HFILL }}, + { &hf_s1ap_E_RABList_PDU, + { "E-RABList", "s1ap.E_RABList", + FT_UINT32, BASE_DEC, NULL, 0, + "s1ap.E_RABList", HFILL }}, + { &hf_s1ap_E_RABItem_PDU, + { "E-RABItem", "s1ap.E_RABItem", + FT_NONE, BASE_NONE, NULL, 0, + "s1ap.E_RABItem", HFILL }}, { &hf_s1ap_EUTRAN_CGI_PDU, { "EUTRAN-CGI", "s1ap.EUTRAN_CGI", FT_NONE, BASE_NONE, NULL, 0, @@ -7218,18 +7256,6 @@ void proto_register_s1ap(void) { { "RRC-Establishment-Cause", "s1ap.RRC_Establishment_Cause", FT_UINT32, BASE_DEC, VALS(s1ap_RRC_Establishment_Cause_vals), 0, "s1ap.RRC_Establishment_Cause", HFILL }}, - { &hf_s1ap_E_RABInformationListItem_PDU, - { "E-RABInformationListItem", "s1ap.E_RABInformationListItem", - FT_NONE, BASE_NONE, NULL, 0, - "s1ap.E_RABInformationListItem", HFILL }}, - { &hf_s1ap_E_RABList_PDU, - { "E-RABList", "s1ap.E_RABList", - FT_UINT32, BASE_DEC, NULL, 0, - "s1ap.E_RABList", HFILL }}, - { &hf_s1ap_E_RABItem_PDU, - { "E-RABItem", "s1ap.E_RABItem", - FT_NONE, BASE_NONE, NULL, 0, - "s1ap.E_RABItem", HFILL }}, { &hf_s1ap_SecurityKey_PDU, { "SecurityKey", "s1ap.SecurityKey", FT_BYTES, BASE_HEX, NULL, 0, @@ -8002,6 +8028,30 @@ void proto_register_s1ap(void) { { "PLMNidentity", "s1ap.PLMNidentity", FT_BYTES, BASE_HEX, NULL, 0, "s1ap.PLMNidentity", HFILL }}, + { &hf_s1ap_dL_Forwarding, + { "dL-Forwarding", "s1ap.dL_Forwarding", + FT_UINT32, BASE_DEC, VALS(s1ap_DL_Forwarding_vals), 0, + "s1ap.DL_Forwarding", HFILL }}, + { &hf_s1ap_E_RABList_item, + { "ProtocolIE-SingleContainer", "s1ap.ProtocolIE_SingleContainer", + FT_NONE, BASE_NONE, NULL, 0, + "s1ap.ProtocolIE_SingleContainer", HFILL }}, + { &hf_s1ap_cause, + { "cause", "s1ap.cause", + FT_UINT32, BASE_DEC, VALS(s1ap_Cause_vals), 0, + "s1ap.Cause", HFILL }}, + { &hf_s1ap_qCI, + { "qCI", "s1ap.qCI", + FT_UINT32, BASE_DEC, NULL, 0, + "s1ap.QCI", HFILL }}, + { &hf_s1ap_allocationRetentionPriority, + { "allocationRetentionPriority", "s1ap.allocationRetentionPriority", + FT_NONE, BASE_NONE, NULL, 0, + "s1ap.AllocationAndRetentionPriority", HFILL }}, + { &hf_s1ap_gbrQosInformation, + { "gbrQosInformation", "s1ap.gbrQosInformation", + FT_NONE, BASE_NONE, NULL, 0, + "s1ap.GBR_QosInformation", HFILL }}, { &hf_s1ap_cell_ID, { "cell-ID", "s1ap.cell_ID", FT_BYTES, BASE_HEX, NULL, 0, @@ -8130,36 +8180,12 @@ void proto_register_s1ap(void) { { "gERAN-Cell-ID", "s1ap.gERAN_Cell_ID", FT_NONE, BASE_NONE, NULL, 0, "s1ap.GERAN_Cell_ID", HFILL }}, - { &hf_s1ap_dL_Forwarding, - { "dL-Forwarding", "s1ap.dL_Forwarding", - FT_UINT32, BASE_DEC, VALS(s1ap_DL_Forwarding_vals), 0, - "s1ap.DL_Forwarding", HFILL }}, - { &hf_s1ap_E_RABList_item, - { "ProtocolIE-SingleContainer", "s1ap.ProtocolIE_SingleContainer", - FT_NONE, BASE_NONE, NULL, 0, - "s1ap.ProtocolIE_SingleContainer", HFILL }}, - { &hf_s1ap_cause, - { "cause", "s1ap.cause", - FT_UINT32, BASE_DEC, VALS(s1ap_Cause_vals), 0, - "s1ap.Cause", HFILL }}, - { &hf_s1ap_qCI, - { "qCI", "s1ap.qCI", - FT_UINT32, BASE_DEC, NULL, 0, - "s1ap.QCI", HFILL }}, - { &hf_s1ap_allocationRetentionPriority, - { "allocationRetentionPriority", "s1ap.allocationRetentionPriority", - FT_NONE, BASE_NONE, NULL, 0, - "s1ap.AllocationAndRetentionPriority", HFILL }}, - { &hf_s1ap_gbrQosInformation, - { "gbrQosInformation", "s1ap.gbrQosInformation", - FT_NONE, BASE_NONE, NULL, 0, - "s1ap.GBR_QosInformation", HFILL }}, - { &hf_s1ap_nextHopParameter, - { "nextHopParameter", "s1ap.nextHopParameter", - FT_UINT32, BASE_DEC, NULL, 0, - "s1ap.INTEGER_0_7", HFILL }}, { &hf_s1ap_nextHopChainingCount, { "nextHopChainingCount", "s1ap.nextHopChainingCount", + FT_UINT32, BASE_DEC, NULL, 0, + "s1ap.INTEGER_0_7", HFILL }}, + { &hf_s1ap_nextHopParameter, + { "nextHopParameter", "s1ap.nextHopParameter", FT_BYTES, BASE_HEX, NULL, 0, "s1ap.SecurityKey", HFILL }}, { &hf_s1ap_sONInformationRequest, @@ -8238,6 +8264,10 @@ void proto_register_s1ap(void) { { "mMEC", "s1ap.mMEC", FT_BYTES, BASE_HEX, NULL, 0, "s1ap.MME_Code", HFILL }}, + { &hf_s1ap_m_TMSI, + { "m-TMSI", "s1ap.m_TMSI", + FT_BYTES, BASE_HEX, NULL, 0, + "s1ap.M_TMSI", HFILL }}, { &hf_s1ap_TAIListforWarning_item, { "TAI", "s1ap.TAI", FT_NONE, BASE_NONE, NULL, 0, @@ -8515,6 +8545,10 @@ void proto_register_s1ap(void) { &ett_s1ap_ENB_StatusTransfer_TransparentContainer, &ett_s1ap_ENBX2TLAs, &ett_s1ap_EPLMNs, + &ett_s1ap_E_RABInformationListItem, + &ett_s1ap_E_RABList, + &ett_s1ap_E_RABItem, + &ett_s1ap_E_RABLevelQoSParameters, &ett_s1ap_EUTRAN_CGI, &ett_s1ap_ForbiddenTAs, &ett_s1ap_ForbiddenTAs_Item, @@ -8533,10 +8567,6 @@ void proto_register_s1ap(void) { &ett_s1ap_RequestType, &ett_s1ap_RIMTransfer, &ett_s1ap_RIMRoutingAddress, - &ett_s1ap_E_RABInformationListItem, - &ett_s1ap_E_RABList, - &ett_s1ap_E_RABItem, - &ett_s1ap_E_RABLevelQoSParameters, &ett_s1ap_SecurityContext, &ett_s1ap_SONInformation, &ett_s1ap_SONInformationReply,