E1AP: add dissector based on v15.0.0
Change-Id: Ic939d5f614de9c3b1204c92007b2aa3ee1e45f8f Reviewed-on: https://code.wireshark.org/review/28649 Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
This commit is contained in:
parent
caa8efa0d2
commit
fed08d380f
|
@ -78,6 +78,7 @@ Exablaze trailers
|
|||
Ubiquiti Discovery Protocol (UBDP)
|
||||
Cisco Meraki Discovery Protocol (MDP)
|
||||
XnAP (5G) protocol
|
||||
E1AP (5G) protocol
|
||||
--
|
||||
|
||||
=== Updated Protocol Support
|
||||
|
|
|
@ -92,7 +92,7 @@ set(CLEAN_ASN1_DISSECTOR_SRC
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/packet-disp.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-dop.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-dsp.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-ecp.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-e1ap.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-ess.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-f1ap.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-ftam.c
|
||||
|
@ -938,6 +938,7 @@ set(DISSECTOR_SRC
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/packet-eapol.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-echo.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-ecmp.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-ecp.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-ecp-oui.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-edonkey.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/packet-egd.c
|
||||
|
|
|
@ -31,6 +31,7 @@ set(ASN1_SRC_DIRS
|
|||
disp
|
||||
dop
|
||||
dsp
|
||||
e1ap
|
||||
ess
|
||||
f1ap
|
||||
ftam
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
# CMakeLists.txt
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 1998 Gerald Combs
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#
|
||||
|
||||
set( PROTOCOL_NAME e1ap )
|
||||
|
||||
set( PROTO_OPT )
|
||||
|
||||
set( EXPORT_FILES
|
||||
${PROTOCOL_NAME}-exp.cnf
|
||||
)
|
||||
|
||||
set( EXT_ASN_FILE_LIST
|
||||
)
|
||||
|
||||
set( ASN_FILE_LIST
|
||||
E1AP-CommonDataTypes.asn
|
||||
E1AP-Constants.asn
|
||||
E1AP-Containers.asn
|
||||
E1AP-IEs.asn
|
||||
E1AP-PDU-Contents.asn
|
||||
E1AP-PDU-Descriptions.asn
|
||||
)
|
||||
|
||||
set( EXTRA_DIST
|
||||
${ASN_FILE_LIST}
|
||||
packet-${PROTOCOL_NAME}-template.c
|
||||
${PROTOCOL_NAME}.cnf
|
||||
)
|
||||
|
||||
set( SRC_FILES
|
||||
${EXTRA_DIST}
|
||||
${EXT_ASN_FILE_LIST}
|
||||
)
|
||||
|
||||
set( A2W_FLAGS )
|
||||
|
||||
ASN2WRS()
|
|
@ -0,0 +1,51 @@
|
|||
-- 3GPP TS 38.463 V15.0.0 (2018-06)
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Common definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
E1AP-CommonDataTypes {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
ngran-access (22) modules (3) e1ap (5) version1 (1) e1ap-CommonDataTypes (3)}
|
||||
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Extension constants
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
maxPrivateIEs INTEGER ::= 65535
|
||||
maxProtocolExtensions INTEGER ::= 65535
|
||||
maxProtocolIEs INTEGER ::= 65535
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Common Data Types
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
Criticality ::= ENUMERATED { reject, ignore, notify }
|
||||
|
||||
Presence ::= ENUMERATED { optional, conditional, mandatory }
|
||||
|
||||
PrivateIE-ID ::= CHOICE {
|
||||
local INTEGER (0.. maxPrivateIEs),
|
||||
global OBJECT IDENTIFIER
|
||||
}
|
||||
|
||||
ProcedureCode ::= INTEGER (0..255)
|
||||
|
||||
ProtocolExtensionID ::= INTEGER (0..maxProtocolExtensions)
|
||||
|
||||
ProtocolIE-ID ::= INTEGER (0..maxProtocolIEs)
|
||||
|
||||
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome}
|
||||
|
||||
END
|
|
@ -0,0 +1,102 @@
|
|||
-- 3GPP TS 38.463 V15.0.0 (2018-06)
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Constant definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
|
||||
E1AP-Constants {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
ngran-access (22) modules (3) e1ap (5) version1 (1) e1ap-Constants (4) }
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
IMPORTS
|
||||
|
||||
ProcedureCode,
|
||||
ProtocolIE-ID
|
||||
|
||||
FROM E1AP-CommonDataTypes;
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Elementary Procedures
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
id-reset ProcedureCode ::= 0
|
||||
id-errorIndication ProcedureCode ::= 1
|
||||
id-privateMessage ProcedureCode ::= 2
|
||||
id-gNB-CU-UP-E1Setup ProcedureCode ::= 3
|
||||
id-gNB-CU-CP-E1Setup ProcedureCode ::= 4
|
||||
id-gNB-CU-UP-ConfigurationUpdate ProcedureCode ::= 5
|
||||
id-gNB-CU-CP-ConfigurationUpdate ProcedureCode ::= 6
|
||||
id-e1Release ProcedureCode ::= 7
|
||||
id-bearerContextSetup ProcedureCode ::= 8
|
||||
id-bearerContextModification ProcedureCode ::= 9
|
||||
id-bearerContextModificationRequired ProcedureCode ::= 10
|
||||
id-bearerContextRelease ProcedureCode ::= 11
|
||||
id-bearerContextReleaseRequest ProcedureCode ::= 12
|
||||
id-bearerContextInactivityNotification ProcedureCode ::= 13
|
||||
id-dLDataNotification ProcedureCode ::= 14
|
||||
id-dataUsageReport ProcedureCode ::= 15
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Lists
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
maxnoofErrors INTEGER ::= 256
|
||||
maxnoofSPLMNs INTEGER ::= 6
|
||||
maxnoofSliceItems INTEGER ::= 1024
|
||||
maxnoofIndividualE1ConnectionsToReset INTEGER ::= 65536
|
||||
maxnoofEUTRANQOSParameters INTEGER ::= 256
|
||||
maxnoofNGRANQOSParameters INTEGER ::= 256
|
||||
maxnoofDRBs INTEGER ::= 32
|
||||
maxnoofNRCGI INTEGER ::= 512
|
||||
maxnoofPDUSessionResource INTEGER ::= 256
|
||||
maxnoofQoSFlows INTEGER ::= 64
|
||||
maxnoofUPParameters INTEGER ::= 4
|
||||
maxnoofCellGroups INTEGER ::= 4
|
||||
maxnooftimeperiods INTEGER ::= 2
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
id-Cause ProtocolIE-ID ::= 0
|
||||
id-CriticalityDiagnostics ProtocolIE-ID ::= 1
|
||||
id-gNB-CU-CP-UE-E1AP-ID ProtocolIE-ID ::= 2
|
||||
id-gNB-CU-UP-UE-E1AP-ID ProtocolIE-ID ::= 3
|
||||
id-ResetType ProtocolIE-ID ::= 4
|
||||
id-UE-associatedLogicalE1-ConnectionItem ProtocolIE-ID ::= 5
|
||||
id-UE-associatedLogicalE1-ConnectionListResAck ProtocolIE-ID ::= 6
|
||||
id-gNB-CU-UP-ID ProtocolIE-ID ::= 7
|
||||
id-gNB-CU-UP-Name ProtocolIE-ID ::= 8
|
||||
id-gNB-CU-CP-Name ProtocolIE-ID ::= 9
|
||||
id-CNSupport ProtocolIE-ID ::= 10
|
||||
id-SupportedPLMNs ProtocolIE-ID ::= 11
|
||||
id-SupportedPLMNs-Item ProtocolIE-ID ::= 12
|
||||
id-TimeToWait ProtocolIE-ID ::= 13
|
||||
id-SecurityInformation ProtocolIE-ID ::= 14
|
||||
id-UEDLAggregateMaximumBitRate ProtocolIE-ID ::= 15
|
||||
id-System-BearerContextSetupRequest ProtocolIE-ID ::= 16
|
||||
id-System-BearerContextSetupResponse ProtocolIE-ID ::= 17
|
||||
id-BearerContextStatusChange ProtocolIE-ID ::= 18
|
||||
id-System-BearerContextModificationRequest ProtocolIE-ID ::= 19
|
||||
id-System-BearerContextModificationResponse ProtocolIE-ID ::= 20
|
||||
id-System-BearerContextModificationConfirm ProtocolIE-ID ::= 21
|
||||
id-System-BearerContextModificationRequired ProtocolIE-ID ::= 22
|
||||
id-DRB-Status-List ProtocolIE-ID ::= 23
|
||||
id-DRB-Status-Item ProtocolIE-ID ::= 24
|
||||
id-DRB-Activity-List ProtocolIE-ID ::= 25
|
||||
id-DRB-Activity-Item ProtocolIE-ID ::= 26
|
||||
id-Data-Usage-Report-List ProtocolIE-ID ::= 27
|
||||
|
||||
END
|
|
@ -0,0 +1,152 @@
|
|||
-- 3GPP TS 38.463 V15.0.0 (2018-06)
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
E1AP-Containers {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
ngran-access (22) modules (3) e1ap (5) version1 (1) e1ap-Containers (5) }
|
||||
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IE parameter types from other modules.
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
IMPORTS
|
||||
maxPrivateIEs,
|
||||
maxProtocolExtensions,
|
||||
maxProtocolIEs,
|
||||
Criticality,
|
||||
Presence,
|
||||
PrivateIE-ID,
|
||||
ProtocolIE-ID
|
||||
|
||||
FROM E1AP-CommonDataTypes;
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Protocol IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
E1AP-PROTOCOL-IES ::= CLASS {
|
||||
&id ProtocolIE-ID UNIQUE,
|
||||
&criticality Criticality,
|
||||
&Value,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
CRITICALITY &criticality
|
||||
TYPE &Value
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Protocol Extensions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
E1AP-PROTOCOL-EXTENSION ::= CLASS {
|
||||
&id ProtocolIE-ID UNIQUE,
|
||||
&criticality Criticality,
|
||||
&Extension,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
CRITICALITY &criticality
|
||||
EXTENSION &Extension
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Class Definition for Private IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
E1AP-PRIVATE-IES ::= CLASS {
|
||||
&id PrivateIE-ID,
|
||||
&criticality Criticality,
|
||||
&Value,
|
||||
&presence Presence
|
||||
}
|
||||
WITH SYNTAX {
|
||||
ID &id
|
||||
CRITICALITY &criticality
|
||||
TYPE &Value
|
||||
PRESENCE &presence
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Protocol IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
ProtocolIE-Container { E1AP-PROTOCOL-IES : IEsSetParam} ::=
|
||||
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
|
||||
ProtocolIE-Field {{IEsSetParam}}
|
||||
|
||||
ProtocolIE-SingleContainer { E1AP-PROTOCOL-IES : IEsSetParam} ::=
|
||||
ProtocolIE-Field {{IEsSetParam}}
|
||||
|
||||
ProtocolIE-Field { E1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
|
||||
id E1AP-PROTOCOL-IES.&id ({IEsSetParam}),
|
||||
criticality E1AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
|
||||
value E1AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container Lists for Protocol IE Containers
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, E1AP-PROTOCOL-IES : IEsSetParam} ::=
|
||||
SEQUENCE (SIZE (lowerBound..upperBound)) OF
|
||||
ProtocolIE-Container {{IEsSetParam}}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Protocol Extensions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
ProtocolExtensionContainer { E1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
|
||||
SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
|
||||
ProtocolExtensionField {{ExtensionSetParam}}
|
||||
|
||||
ProtocolExtensionField { E1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
|
||||
id E1AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
|
||||
criticality E1AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
|
||||
extensionValue E1AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Container for Private IEs
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
PrivateIE-Container { E1AP-PRIVATE-IES : IEsSetParam} ::=
|
||||
SEQUENCE (SIZE (1..maxPrivateIEs)) OF
|
||||
PrivateIE-Field {{IEsSetParam}}
|
||||
|
||||
PrivateIE-Field { E1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
|
||||
id E1AP-PRIVATE-IES.&id ({IEsSetParam}),
|
||||
criticality E1AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
|
||||
value E1AP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
|
||||
}
|
||||
|
||||
END
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,290 @@
|
|||
-- 3GPP TS 38.463 V15.0.0 (2018-06)
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Elementary Procedure definitions
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
E1AP-PDU-Descriptions {
|
||||
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
|
||||
ngran-access (22) modules (3) e1ap (5) version1 (1) e1ap-PDU-Descriptions (0) }
|
||||
|
||||
DEFINITIONS AUTOMATIC TAGS ::=
|
||||
|
||||
BEGIN
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- IE parameter types from other modules
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
IMPORTS
|
||||
Criticality,
|
||||
ProcedureCode
|
||||
|
||||
FROM E1AP-CommonDataTypes
|
||||
Reset,
|
||||
ResetAcknowledge,
|
||||
ErrorIndication,
|
||||
GNB-CU-UP-E1SetupRequest,
|
||||
GNB-CU-UP-E1SetupResponse,
|
||||
GNB-CU-UP-E1SetupFailure,
|
||||
GNB-CU-CP-E1SetupRequest,
|
||||
GNB-CU-CP-E1SetupResponse,
|
||||
GNB-CU-CP-E1SetupFailure,
|
||||
GNB-CU-UP-ConfigurationUpdate,
|
||||
GNB-CU-UP-ConfigurationUpdateAcknowledge,
|
||||
GNB-CU-UP-ConfigurationUpdateFailure,
|
||||
GNB-CU-CP-ConfigurationUpdate,
|
||||
GNB-CU-CP-ConfigurationUpdateAcknowledge,
|
||||
GNB-CU-CP-ConfigurationUpdateFailure,
|
||||
BearerContextSetupRequest,
|
||||
BearerContextSetupResponse,
|
||||
BearerContextSetupFailure,
|
||||
BearerContextModificationRequest,
|
||||
BearerContextModificationResponse,
|
||||
BearerContextModificationFailure,
|
||||
BearerContextModificationRequired,
|
||||
|
||||
BearerContextModificationConfirm,
|
||||
BearerContextReleaseCommand,
|
||||
BearerContextReleaseComplete,
|
||||
BearerContextReleaseRequest,
|
||||
BearerContextInactivityNotification,
|
||||
DLDataNotification,
|
||||
DataUsageReport,
|
||||
E1ReleaseRequest,
|
||||
E1ReleaseResponse,
|
||||
PrivateMessage
|
||||
|
||||
FROM E1AP-PDU-Contents
|
||||
id-reset,
|
||||
id-errorIndication,
|
||||
id-gNB-CU-UP-E1Setup,
|
||||
id-gNB-CU-CP-E1Setup,
|
||||
id-gNB-CU-UP-ConfigurationUpdate,
|
||||
id-gNB-CU-CP-ConfigurationUpdate,
|
||||
id-e1Release,
|
||||
id-bearerContextSetup,
|
||||
id-bearerContextModification,
|
||||
id-bearerContextModificationRequired,
|
||||
id-bearerContextRelease,
|
||||
id-bearerContextReleaseRequest,
|
||||
id-bearerContextInactivityNotification,
|
||||
id-dLDataNotification,
|
||||
id-dataUsageReport,
|
||||
id-privateMessage
|
||||
|
||||
FROM E1AP-Constants;
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface Elementary Procedure Class
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
E1AP-ELEMENTARY-PROCEDURE ::= CLASS {
|
||||
&InitiatingMessage ,
|
||||
&SuccessfulOutcome OPTIONAL,
|
||||
|
||||
&UnsuccessfulOutcome OPTIONAL,
|
||||
&procedureCode ProcedureCode UNIQUE,
|
||||
&criticality Criticality DEFAULT ignore
|
||||
}
|
||||
WITH SYNTAX {
|
||||
INITIATING MESSAGE &InitiatingMessage
|
||||
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
|
||||
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
|
||||
PROCEDURE CODE &procedureCode
|
||||
[CRITICALITY &criticality]
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface PDU Definition
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
E1AP-PDU ::= CHOICE {
|
||||
initiatingMessage InitiatingMessage,
|
||||
successfulOutcome SuccessfulOutcome,
|
||||
unsuccessfulOutcome UnsuccessfulOutcome,
|
||||
...
|
||||
}
|
||||
|
||||
InitiatingMessage ::= SEQUENCE {
|
||||
procedureCode E1AP-ELEMENTARY-PROCEDURE.&procedureCode ({E1AP-ELEMENTARY-PROCEDURES}),
|
||||
criticality E1AP-ELEMENTARY-PROCEDURE.&criticality ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
|
||||
value E1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
|
||||
}
|
||||
|
||||
SuccessfulOutcome ::= SEQUENCE {
|
||||
procedureCode E1AP-ELEMENTARY-PROCEDURE.&procedureCode ({E1AP-ELEMENTARY-PROCEDURES}),
|
||||
criticality E1AP-ELEMENTARY-PROCEDURE.&criticality ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
|
||||
value E1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
|
||||
}
|
||||
|
||||
UnsuccessfulOutcome ::= SEQUENCE {
|
||||
procedureCode E1AP-ELEMENTARY-PROCEDURE.&procedureCode ({E1AP-ELEMENTARY-PROCEDURES}),
|
||||
criticality E1AP-ELEMENTARY-PROCEDURE.&criticality ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
|
||||
value E1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({E1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface Elementary Procedure List
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
E1AP-ELEMENTARY-PROCEDURES E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
E1AP-ELEMENTARY-PROCEDURES-CLASS-1 |
|
||||
E1AP-ELEMENTARY-PROCEDURES-CLASS-2 ,
|
||||
|
||||
...
|
||||
}
|
||||
|
||||
E1AP-ELEMENTARY-PROCEDURES-CLASS-1 E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
reset |
|
||||
gNB-CU-UP-E1Setup |
|
||||
gNB-CU-CP-E1Setup |
|
||||
gNB-CU-UP-ConfigurationUpdate |
|
||||
gNB-CU-CP-ConfigurationUpdate |
|
||||
e1Release |
|
||||
bearerContextSetup |
|
||||
bearerContextModification |
|
||||
bearerContextModificationRequired |
|
||||
bearerContextRelease ,
|
||||
...
|
||||
}
|
||||
|
||||
E1AP-ELEMENTARY-PROCEDURES-CLASS-2 E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
errorIndication |
|
||||
bearerContextReleaseRequest |
|
||||
bearerContextInactivityNotification |
|
||||
dLDataNotification |
|
||||
dataUsageReport |
|
||||
privateMessage ,
|
||||
...
|
||||
}
|
||||
|
||||
-- **************************************************************
|
||||
--
|
||||
-- Interface Elementary Procedures
|
||||
--
|
||||
-- **************************************************************
|
||||
|
||||
reset E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE Reset
|
||||
SUCCESSFUL OUTCOME ResetAcknowledge
|
||||
PROCEDURE CODE id-reset
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
errorIndication E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE ErrorIndication
|
||||
PROCEDURE CODE id-errorIndication
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
gNB-CU-UP-E1Setup E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE GNB-CU-UP-E1SetupRequest
|
||||
SUCCESSFUL OUTCOME GNB-CU-UP-E1SetupResponse
|
||||
UNSUCCESSFUL OUTCOME GNB-CU-UP-E1SetupFailure
|
||||
PROCEDURE CODE id-gNB-CU-UP-E1Setup
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
gNB-CU-CP-E1Setup E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE GNB-CU-CP-E1SetupRequest
|
||||
SUCCESSFUL OUTCOME GNB-CU-CP-E1SetupResponse
|
||||
UNSUCCESSFUL OUTCOME GNB-CU-CP-E1SetupFailure
|
||||
PROCEDURE CODE id-gNB-CU-CP-E1Setup
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
gNB-CU-UP-ConfigurationUpdate E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE GNB-CU-UP-ConfigurationUpdate
|
||||
SUCCESSFUL OUTCOME GNB-CU-UP-ConfigurationUpdateAcknowledge
|
||||
UNSUCCESSFUL OUTCOME GNB-CU-UP-ConfigurationUpdateFailure
|
||||
PROCEDURE CODE id-gNB-CU-UP-ConfigurationUpdate
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
gNB-CU-CP-ConfigurationUpdate E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE GNB-CU-CP-ConfigurationUpdate
|
||||
SUCCESSFUL OUTCOME GNB-CU-CP-ConfigurationUpdateAcknowledge
|
||||
UNSUCCESSFUL OUTCOME GNB-CU-CP-ConfigurationUpdateFailure
|
||||
PROCEDURE CODE id-gNB-CU-CP-ConfigurationUpdate
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
e1Release E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE E1ReleaseRequest
|
||||
SUCCESSFUL OUTCOME E1ReleaseResponse
|
||||
PROCEDURE CODE id-e1Release
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
bearerContextSetup E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE BearerContextSetupRequest
|
||||
SUCCESSFUL OUTCOME BearerContextSetupResponse
|
||||
UNSUCCESSFUL OUTCOME BearerContextSetupFailure
|
||||
PROCEDURE CODE id-bearerContextSetup
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
bearerContextModification E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE BearerContextModificationRequest
|
||||
SUCCESSFUL OUTCOME BearerContextModificationResponse
|
||||
UNSUCCESSFUL OUTCOME BearerContextModificationFailure
|
||||
PROCEDURE CODE id-bearerContextModification
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
bearerContextModificationRequired E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE BearerContextModificationRequired
|
||||
SUCCESSFUL OUTCOME BearerContextModificationConfirm
|
||||
PROCEDURE CODE id-bearerContextModificationRequired
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
bearerContextRelease E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE BearerContextReleaseCommand
|
||||
SUCCESSFUL OUTCOME BearerContextReleaseComplete
|
||||
PROCEDURE CODE id-bearerContextRelease
|
||||
CRITICALITY reject
|
||||
}
|
||||
|
||||
bearerContextReleaseRequest E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE BearerContextReleaseRequest
|
||||
PROCEDURE CODE id-bearerContextReleaseRequest
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
bearerContextInactivityNotification E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE BearerContextInactivityNotification
|
||||
PROCEDURE CODE id-bearerContextInactivityNotification
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
dLDataNotification E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE DLDataNotification
|
||||
PROCEDURE CODE id-dLDataNotification
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
dataUsageReport E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE DataUsageReport
|
||||
PROCEDURE CODE id-dataUsageReport
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
|
||||
privateMessage E1AP-ELEMENTARY-PROCEDURE ::= {
|
||||
INITIATING MESSAGE PrivateMessage
|
||||
PROCEDURE CODE id-privateMessage
|
||||
CRITICALITY ignore
|
||||
}
|
||||
|
||||
END
|
|
@ -0,0 +1,389 @@
|
|||
# e1ap.cnf
|
||||
# e1ap conformation file
|
||||
|
||||
#.OPT
|
||||
PER
|
||||
ALIGNED
|
||||
#.END
|
||||
|
||||
#.USE_VALS_EXT
|
||||
ProcedureCode
|
||||
ProtocolIE-ID
|
||||
|
||||
#.EXPORTS
|
||||
|
||||
#.PDU
|
||||
E1AP-PDU
|
||||
|
||||
#.MAKE_ENUM
|
||||
ProcedureCode
|
||||
ProtocolIE-ID
|
||||
|
||||
#.NO_EMIT
|
||||
|
||||
#.OMIT_ASSIGNMENT
|
||||
# Get rid of unused code warnings
|
||||
CP-TNL-Information
|
||||
Presence
|
||||
ProtocolIE-ContainerList
|
||||
ProtocolExtensionID
|
||||
#.END
|
||||
|
||||
|
||||
#.TYPE_RENAME
|
||||
InitiatingMessage/value InitiatingMessage_value
|
||||
SuccessfulOutcome/value SuccessfulOutcome_value
|
||||
UnsuccessfulOutcome/value UnsuccessfulOutcome_value
|
||||
|
||||
#.FIELD_RENAME
|
||||
InitiatingMessage/value initiatingMessagevalue
|
||||
UnsuccessfulOutcome/value unsuccessfulOutcome_value
|
||||
SuccessfulOutcome/value successfulOutcome_value
|
||||
PrivateIE-Field/id private_id
|
||||
ProtocolExtensionField/id ext_id
|
||||
#PrivateIE-Field/value private_value
|
||||
ProtocolIE-Field/value ie_field_value
|
||||
|
||||
#--- Parameterization is not supported in asn2wrs ---
|
||||
|
||||
#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, E1AP-PROTOCOL-IES : IEsSetParam} ::=
|
||||
# SEQUENCE (SIZE (lowerBound..upperBound)) OF
|
||||
# ProtocolIE-Container {{IEsSetParam}}
|
||||
|
||||
# #.FN_PARS ProtocolIE-ContainerList
|
||||
# MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound")
|
||||
# MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
|
||||
# #.FN_HDR ProtocolIE-ContainerList
|
||||
# static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = {
|
||||
# { "lowerBound", ASN1_PAR_INTEGER },
|
||||
# { "upperBound", ASN1_PAR_INTEGER },
|
||||
# { NULL, (asn1_par_type)0 }
|
||||
# };
|
||||
# asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars);
|
||||
# #.END
|
||||
|
||||
#.FN_BODY ProtocolIE-ID VAL_PTR=&e1ap_data->protocol_ie_id
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
|
||||
%(DEFAULT_BODY)s
|
||||
|
||||
#.FN_FTR ProtocolIE-ID
|
||||
if (tree) {
|
||||
proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s",
|
||||
val_to_str_ext(e1ap_data->protocol_ie_id, &e1ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
|
||||
}
|
||||
|
||||
#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue
|
||||
|
||||
# #.FN_BODY ProtocolExtensionID VAL_PTR=&e1ap_data->protocol_extension_id
|
||||
# e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
|
||||
# %(DEFAULT_BODY)s
|
||||
#
|
||||
# #.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue
|
||||
|
||||
#.FN_BODY ProcedureCode VAL_PTR = &e1ap_data->procedure_code
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
|
||||
%(DEFAULT_BODY)s
|
||||
#.END
|
||||
|
||||
#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
|
||||
#.FN_HDR InitiatingMessage/value
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
|
||||
e1ap_data->message_type = INITIATING_MESSAGE;
|
||||
#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
|
||||
#.FN_HDR SuccessfulOutcome/value
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
|
||||
e1ap_data->message_type = SUCCESSFUL_OUTCOME;
|
||||
#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue
|
||||
#.FN_HDR UnsuccessfulOutcome/value
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
|
||||
e1ap_data->message_type = UNSUCCESSFUL_OUTCOME;
|
||||
#.END
|
||||
|
||||
#.FN_HDR PrivateIE-ID
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
|
||||
e1ap_data->obj_id = NULL;
|
||||
|
||||
#.FN_BODY PrivateIE-ID/global FN_VARIANT = _str VAL_PTR = &e1ap_data->obj_id
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
|
||||
%(DEFAULT_BODY)s
|
||||
|
||||
#.FN_BODY PrivateIE-Field/value
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo);
|
||||
if (e1ap_data->obj_id) {
|
||||
offset = call_per_oid_callback(e1ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index);
|
||||
} else {
|
||||
%(DEFAULT_BODY)s
|
||||
}
|
||||
|
||||
#.ASSIGN_VALUE_TO_TYPE # E1AP does not have constants assigned to types, they are pure INTEGER
|
||||
# ProcedureCode
|
||||
id-reset ProcedureCode
|
||||
id-errorIndication ProcedureCode
|
||||
id-privateMessage ProcedureCode
|
||||
id-gNB-CU-UP-E1Setup ProcedureCode
|
||||
id-gNB-CU-CP-E1Setup ProcedureCode
|
||||
id-gNB-CU-UP-ConfigurationUpdate ProcedureCode
|
||||
id-gNB-CU-CP-ConfigurationUpdate ProcedureCode
|
||||
id-e1Release ProcedureCode
|
||||
id-bearerContextSetup ProcedureCode
|
||||
id-bearerContextModification ProcedureCode
|
||||
id-bearerContextModificationRequired ProcedureCode
|
||||
id-bearerContextRelease ProcedureCode
|
||||
id-bearerContextReleaseRequest ProcedureCode
|
||||
id-bearerContextInactivityNotification ProcedureCode
|
||||
id-dLDataNotification ProcedureCode
|
||||
id-dataUsageReport ProcedureCode
|
||||
|
||||
# ProtocolIE-ID
|
||||
id-Cause ProtocolIE-ID
|
||||
id-CriticalityDiagnostics ProtocolIE-ID
|
||||
id-gNB-CU-CP-UE-E1AP-ID ProtocolIE-ID
|
||||
id-gNB-CU-UP-UE-E1AP-ID ProtocolIE-ID
|
||||
id-ResetType ProtocolIE-ID
|
||||
id-UE-associatedLogicalE1-ConnectionItem ProtocolIE-ID
|
||||
id-UE-associatedLogicalE1-ConnectionListResAck ProtocolIE-ID
|
||||
id-gNB-CU-UP-ID ProtocolIE-ID
|
||||
id-gNB-CU-UP-Name ProtocolIE-ID
|
||||
id-gNB-CU-CP-Name ProtocolIE-ID
|
||||
id-CNSupport ProtocolIE-ID
|
||||
id-SupportedPLMNs ProtocolIE-ID
|
||||
id-SupportedPLMNs-Item ProtocolIE-ID
|
||||
id-TimeToWait ProtocolIE-ID
|
||||
id-SecurityInformation ProtocolIE-ID
|
||||
id-UEDLAggregateMaximumBitRate ProtocolIE-ID
|
||||
id-System-BearerContextSetupRequest ProtocolIE-ID
|
||||
id-System-BearerContextSetupResponse ProtocolIE-ID
|
||||
id-BearerContextStatusChange ProtocolIE-ID
|
||||
id-System-BearerContextModificationRequest ProtocolIE-ID
|
||||
id-System-BearerContextModificationResponse ProtocolIE-ID
|
||||
id-System-BearerContextModificationConfirm ProtocolIE-ID
|
||||
id-System-BearerContextModificationRequired ProtocolIE-ID
|
||||
id-DRB-Status-List ProtocolIE-ID
|
||||
id-DRB-Status-Item ProtocolIE-ID
|
||||
id-DRB-Activity-List ProtocolIE-ID
|
||||
id-DRB-Activity-Item ProtocolIE-ID
|
||||
id-Data-Usage-Report-List ProtocolIE-ID
|
||||
#.END
|
||||
|
||||
#.REGISTER
|
||||
|
||||
#E1AP-PROTOCOL-IES
|
||||
Cause N e1ap.ies id-Cause
|
||||
CriticalityDiagnostics N e1ap.ies id-CriticalityDiagnostics
|
||||
GNB-CU-CP-UE-E1AP-ID N e1ap.ies id-gNB-CU-CP-UE-E1AP-ID
|
||||
GNB-CU-UP-UE-E1AP-ID N e1ap.ies id-gNB-CU-UP-UE-E1AP-ID
|
||||
ResetType N e1ap.ies id-ResetType
|
||||
UE-associatedLogicalE1-ConnectionItem N e1ap.ies id-UE-associatedLogicalE1-ConnectionItem
|
||||
UE-associatedLogicalE1-ConnectionListResAck N e1ap.ies id-UE-associatedLogicalE1-ConnectionListResAck
|
||||
GNB-CU-UP-ID N e1ap.ies id-gNB-CU-UP-ID
|
||||
GNB-CU-UP-Name N e1ap.ies id-gNB-CU-UP-Name
|
||||
GNB-CU-CP-Name N e1ap.ies id-gNB-CU-CP-Name
|
||||
CNSupport N e1ap.ies id-CNSupport
|
||||
SupportedPLMNs-List N e1ap.ies id-SupportedPLMNs
|
||||
SupportedPLMNs-Item N e1ap.ies id-SupportedPLMNs-Item
|
||||
TimeToWait N e1ap.ies id-TimeToWait
|
||||
SecurityInformation N e1ap.ies id-SecurityInformation
|
||||
BitRate N e1ap.ies id-UEDLAggregateMaximumBitRate
|
||||
System-BearerContextSetupRequest N e1ap.ies id-System-BearerContextSetupRequest
|
||||
System-BearerContextSetupResponse N e1ap.ies id-System-BearerContextSetupResponse
|
||||
BearerContextStatusChange N e1ap.ies id-BearerContextStatusChange
|
||||
System-BearerContextModificationRequest N e1ap.ies id-System-BearerContextModificationRequest
|
||||
System-BearerContextModificationResponse N e1ap.ies id-System-BearerContextModificationResponse
|
||||
System-BearerContextModificationConfirm N e1ap.ies id-System-BearerContextModificationConfirm
|
||||
System-BearerContextModificationRequired N e1ap.ies id-System-BearerContextModificationRequired
|
||||
DRB-Status-List N e1ap.ies id-DRB-Status-List
|
||||
DRB-Status-Item N e1ap.ies id-DRB-Status-Item
|
||||
DRB-Activity-List N e1ap.ies id-DRB-Activity-List
|
||||
DRB-Activity-Item N e1ap.ies id-DRB-Activity-Item
|
||||
Data-Usage-Report-List N e1ap.ies id-Data-Usage-Report-List
|
||||
|
||||
#E1AP-PROTOCOL-EXTENSION
|
||||
|
||||
#E1AP-ELEMENTARY-PROCEDURE
|
||||
Reset N e1ap.proc.imsg id-reset
|
||||
ResetAcknowledge N e1ap.proc.sout id-reset
|
||||
|
||||
ErrorIndication N e1ap.proc.imsg id-errorIndication
|
||||
|
||||
GNB-CU-UP-E1SetupRequest N e1ap.proc.imsg id-gNB-CU-UP-E1Setup
|
||||
GNB-CU-UP-E1SetupResponse N e1ap.proc.sout id-gNB-CU-UP-E1Setup
|
||||
GNB-CU-UP-E1SetupFailure N e1ap.proc.uout id-gNB-CU-UP-E1Setup
|
||||
|
||||
GNB-CU-CP-E1SetupRequest N e1ap.proc.imsg id-gNB-CU-CP-E1Setup
|
||||
GNB-CU-CP-E1SetupResponse N e1ap.proc.sout id-gNB-CU-CP-E1Setup
|
||||
GNB-CU-CP-E1SetupFailure N e1ap.proc.uout id-gNB-CU-CP-E1Setup
|
||||
|
||||
GNB-CU-UP-ConfigurationUpdate N e1ap.proc.imsg id-gNB-CU-UP-ConfigurationUpdate
|
||||
GNB-CU-UP-ConfigurationUpdateAcknowledge N e1ap.proc.sout id-gNB-CU-UP-ConfigurationUpdate
|
||||
GNB-CU-UP-ConfigurationUpdateFailure N e1ap.proc.uout id-gNB-CU-UP-ConfigurationUpdate
|
||||
|
||||
GNB-CU-CP-ConfigurationUpdate N e1ap.proc.imsg id-gNB-CU-CP-ConfigurationUpdate
|
||||
GNB-CU-CP-ConfigurationUpdateAcknowledge N e1ap.proc.sout id-gNB-CU-CP-ConfigurationUpdate
|
||||
GNB-CU-CP-ConfigurationUpdateFailure N e1ap.proc.uout id-gNB-CU-CP-ConfigurationUpdate
|
||||
|
||||
E1ReleaseRequest N e1ap.proc.imsg id-e1Release
|
||||
E1ReleaseResponse N e1ap.proc.sout id-e1Release
|
||||
|
||||
BearerContextSetupRequest N e1ap.proc.imsg id-bearerContextSetup
|
||||
BearerContextSetupResponse N e1ap.proc.sout id-bearerContextSetup
|
||||
BearerContextSetupFailure N e1ap.proc.uout id-bearerContextSetup
|
||||
|
||||
BearerContextModificationRequest N e1ap.proc.imsg id-bearerContextModification
|
||||
BearerContextModificationResponse N e1ap.proc.sout id-bearerContextModification
|
||||
BearerContextModificationFailure N e1ap.proc.uout id-bearerContextModification
|
||||
|
||||
BearerContextModificationRequired N e1ap.proc.imsg id-bearerContextModificationRequired
|
||||
BearerContextModificationConfirm N e1ap.proc.sout id-bearerContextModificationRequired
|
||||
|
||||
BearerContextReleaseCommand N e1ap.proc.imsg id-bearerContextRelease
|
||||
BearerContextReleaseComplete N e1ap.proc.sout id-bearerContextRelease
|
||||
|
||||
BearerContextReleaseRequest N e1ap.proc.imsg id-bearerContextReleaseRequest
|
||||
|
||||
BearerContextInactivityNotification N e1ap.proc.imsg id-bearerContextInactivityNotification
|
||||
|
||||
DLDataNotification N e1ap.proc.imsg id-dLDataNotification
|
||||
|
||||
DataUsageReport N e1ap.proc.imsg id-dataUsageReport
|
||||
|
||||
PrivateMessage N e1ap.proc.imsg id-privateMessage
|
||||
|
||||
#.FN_BODY PLMN-Identity VAL_PTR = ¶m_tvb
|
||||
tvbuff_t *param_tvb = NULL;
|
||||
%(DEFAULT_BODY)s
|
||||
if (param_tvb) {
|
||||
proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_e1ap_PLMN_Identity);
|
||||
dissect_e212_mcc_mnc(param_tvb, actx->pinfo, subtree, 0, E212_NONE, FALSE);
|
||||
}
|
||||
|
||||
#.TYPE_ATTR
|
||||
BitRate DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_bit_sec
|
||||
|
||||
#.FN_BODY DRB-Usage-Report-Item/startTimeStamp VAL_PTR = ×tamp_tvb
|
||||
tvbuff_t *timestamp_tvb = NULL;
|
||||
%(DEFAULT_BODY)s
|
||||
|
||||
#.FN_FTR DRB-Usage-Report-Item/startTimeStamp
|
||||
if (timestamp_tvb) {
|
||||
proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0));
|
||||
}
|
||||
|
||||
#.FN_BODY DRB-Usage-Report-Item/endTimeStamp VAL_PTR = ×tamp_tvb
|
||||
tvbuff_t *timestamp_tvb = NULL;
|
||||
%(DEFAULT_BODY)s
|
||||
|
||||
#.FN_FTR DRB-Usage-Report-Item/endTimeStamp
|
||||
if (timestamp_tvb) {
|
||||
proto_item_append_text(actx->created_item, " (%s)", tvb_ntp_fmt_ts_sec(timestamp_tvb, 0));
|
||||
}
|
||||
|
||||
#.TYPE_ATTR
|
||||
DRB-Usage-Report-Item/usageCountUL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_octet_octets
|
||||
|
||||
#.TYPE_ATTR
|
||||
DRB-Usage-Report-Item/usageCountDL DISPLAY=BASE_DEC|BASE_UNIT_STRING STRINGS=&units_octet_octets
|
||||
|
||||
#.TYPE_ATTR
|
||||
MaxPacketLossRate DISPLAY = BASE_CUSTOM STRINGS = CF_FUNC(e1ap_MaxPacketLossRate_fmt)
|
||||
|
||||
#.FN_BODY TransportLayerAddress VAL_PTR = ¶m_tvb
|
||||
tvbuff_t *param_tvb = NULL;
|
||||
%(DEFAULT_BODY)s
|
||||
if (param_tvb) {
|
||||
proto_tree *subtree;
|
||||
gint tvb_len;
|
||||
|
||||
tvb_len = tvb_reported_length(param_tvb);
|
||||
subtree = proto_item_add_subtree(actx->created_item, ett_e1ap_TransportLayerAddress);
|
||||
if (tvb_len == 4) {
|
||||
/* IPv4 */
|
||||
proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv4, param_tvb, 0, 4, ENC_BIG_ENDIAN);
|
||||
} else if (tvb_len == 16) {
|
||||
/* IPv6 */
|
||||
proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv6, param_tvb, 0, 16, ENC_NA);
|
||||
} else if (tvb_len == 20) {
|
||||
/* IPv4 */
|
||||
proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv4, param_tvb, 0, 4, ENC_BIG_ENDIAN);
|
||||
/* IPv6 */
|
||||
proto_tree_add_item(subtree, hf_e1ap_transportLayerAddressIPv6, param_tvb, 4, 16, ENC_NA);
|
||||
}
|
||||
}
|
||||
|
||||
#.FN_HDR Reset
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Reset");
|
||||
#.FN_HDR ResetAcknowledge
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetAcknowledge");
|
||||
#.FN_HDR ErrorIndication
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication");
|
||||
#.FN_HDR GNB-CU-UP-E1SetupRequest
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-E1SetupRequest");
|
||||
#.FN_HDR GNB-CU-UP-E1SetupResponse
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-E1SetupResponse");
|
||||
#.FN_HDR GNB-CU-UP-E1SetupFailure
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-E1SetupFailure");
|
||||
#.FN_HDR GNB-CU-CP-E1SetupRequest
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-E1SetupRequest");
|
||||
#.FN_HDR GNB-CU-CP-E1SetupResponse
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-E1SetupResponse");
|
||||
#.FN_HDR GNB-CU-CP-E1SetupFailure
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-E1SetupFailure");
|
||||
#.FN_HDR GNB-CU-UP-ConfigurationUpdate
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-ConfigurationUpdate");
|
||||
#.FN_HDR GNB-CU-UP-ConfigurationUpdateAcknowledge
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-ConfigurationUpdateAcknowledge");
|
||||
#.FN_HDR GNB-CU-UP-ConfigurationUpdateFailure
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-UP-ConfigurationUpdateFailure");
|
||||
#.FN_HDR GNB-CU-CP-ConfigurationUpdate
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-ConfigurationUpdate");
|
||||
#.FN_HDR GNB-CU-CP-ConfigurationUpdateAcknowledge
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-ConfigurationUpdateAcknowledge");
|
||||
#.FN_HDR GNB-CU-CP-ConfigurationUpdateFailure
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "GNB-CU-CP-ConfigurationUpdateFailure");
|
||||
#.FN_HDR E1ReleaseRequest
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E1ReleaseRequest");
|
||||
#.FN_HDR E1ReleaseResponse
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E1ReleaseResponse");
|
||||
#.FN_HDR BearerContextSetupRequest
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextSetupRequest");
|
||||
#.FN_HDR BearerContextSetupResponse
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextSetupResponse");
|
||||
#.FN_HDR BearerContextSetupFailure
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextSetupFailure");
|
||||
#.FN_HDR BearerContextModificationRequest
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationRequest");
|
||||
#.FN_HDR BearerContextModificationResponse
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationResponse");
|
||||
#.FN_HDR BearerContextModificationFailure
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationFailure");
|
||||
#.FN_HDR BearerContextModificationRequired
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationRequired");
|
||||
#.FN_HDR BearerContextModificationConfirm
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextModificationConfirm");
|
||||
#.FN_HDR BearerContextReleaseCommand
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextReleaseCommand");
|
||||
#.FN_HDR BearerContextReleaseComplete
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextReleaseComplete");
|
||||
#.FN_HDR BearerContextReleaseRequest
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextReleaseRequest");
|
||||
#.FN_HDR BearerContextInactivityNotification
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "BearerContextInactivityNotification");
|
||||
#.FN_HDR DLDataNotification
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DLDataNotification");
|
||||
#.FN_HDR DataUsageReport
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "DataUsageReport");
|
||||
#.FN_HDR PrivateMessage
|
||||
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PrivateMessage");
|
||||
#.END
|
||||
|
||||
#
|
||||
# Editor modelines - http://www.wireshark.org/tools/modelines.html
|
||||
#
|
||||
# Local variables:
|
||||
# c-basic-offset: 2
|
||||
# tab-width: 8
|
||||
# indent-tabs-mode: nil
|
||||
# End:
|
||||
#
|
||||
# vi: set shiftwidth=2 tabstop=8 expandtab:
|
||||
# :indentSize=2:tabSize=8:noTabs=true:
|
||||
#
|
|
@ -0,0 +1,233 @@
|
|||
/* packet-e1ap.c
|
||||
* Routines for E-UTRAN E1 Application Protocol (E1AP) packet dissection
|
||||
* Copyright 2018, Pascal Quantin <pascal.quantin@gmail.com>
|
||||
*
|
||||
* Wireshark - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
* Copyright 1998 Gerald Combs
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*
|
||||
* References: 3GPP TS 38.463 V15.0.0 (2018-06)
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <epan/packet.h>
|
||||
|
||||
#include <epan/asn1.h>
|
||||
#include <epan/sctpppids.h>
|
||||
#include <epan/proto_data.h>
|
||||
|
||||
#include "packet-per.h"
|
||||
#include "packet-e212.h"
|
||||
#include "packet-ntp.h"
|
||||
|
||||
#define PNAME "E1 Application Protocol"
|
||||
#define PSNAME "E1AP"
|
||||
#define PFNAME "e1ap"
|
||||
|
||||
// port number not assigned by IANA yet
|
||||
//#define SCTP_PORT_E1AP 38462
|
||||
|
||||
void proto_register_e1ap(void);
|
||||
void proto_reg_handoff_e1ap(void);
|
||||
|
||||
#include "packet-e1ap-val.h"
|
||||
|
||||
/* Initialize the protocol and registered fields */
|
||||
static int proto_e1ap = -1;
|
||||
|
||||
static int hf_e1ap_transportLayerAddressIPv4 = -1;
|
||||
static int hf_e1ap_transportLayerAddressIPv6 = -1;
|
||||
#include "packet-e1ap-hf.c"
|
||||
|
||||
/* Initialize the subtree pointers */
|
||||
static gint ett_e1ap = -1;
|
||||
static gint ett_e1ap_PLMN_Identity = -1;
|
||||
static gint ett_e1ap_TransportLayerAddress = -1;
|
||||
#include "packet-e1ap-ett.c"
|
||||
|
||||
enum{
|
||||
INITIATING_MESSAGE,
|
||||
SUCCESSFUL_OUTCOME,
|
||||
UNSUCCESSFUL_OUTCOME
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
guint32 message_type;
|
||||
guint32 procedure_code;
|
||||
guint32 protocol_ie_id;
|
||||
guint32 protocol_extension_id;
|
||||
const char *obj_id;
|
||||
} e1ap_private_data_t;
|
||||
|
||||
typedef struct {
|
||||
guint32 message_type;
|
||||
guint32 ProcedureCode;
|
||||
guint32 ProtocolIE_ID;
|
||||
guint32 ProtocolExtensionID;
|
||||
} e1ap_ctx_t;
|
||||
|
||||
/* Global variables */
|
||||
static dissector_handle_t e1ap_handle;
|
||||
|
||||
/* Dissector tables */
|
||||
static dissector_table_t e1ap_ies_dissector_table;
|
||||
static dissector_table_t e1ap_extension_dissector_table;
|
||||
static dissector_table_t e1ap_proc_imsg_dissector_table;
|
||||
static dissector_table_t e1ap_proc_sout_dissector_table;
|
||||
static dissector_table_t e1ap_proc_uout_dissector_table;
|
||||
|
||||
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
|
||||
//static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
|
||||
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
|
||||
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
|
||||
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
|
||||
|
||||
static void
|
||||
e1ap_MaxPacketLossRate_fmt(gchar *s, guint32 v)
|
||||
{
|
||||
g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f %% (%u)", (float)v/10, v);
|
||||
}
|
||||
|
||||
static e1ap_private_data_t*
|
||||
e1ap_get_private_data(packet_info *pinfo)
|
||||
{
|
||||
e1ap_private_data_t *e1ap_data = (e1ap_private_data_t*)p_get_proto_data(pinfo->pool, pinfo, proto_e1ap, 0);
|
||||
if (!e1ap_data) {
|
||||
e1ap_data = wmem_new0(pinfo->pool, e1ap_private_data_t);
|
||||
p_add_proto_data(pinfo->pool, pinfo, proto_e1ap, 0, e1ap_data);
|
||||
}
|
||||
return e1ap_data;
|
||||
}
|
||||
|
||||
#include "packet-e1ap-fn.c"
|
||||
|
||||
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
|
||||
{
|
||||
e1ap_ctx_t e1ap_ctx;
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo);
|
||||
|
||||
e1ap_ctx.message_type = e1ap_data->message_type;
|
||||
e1ap_ctx.ProcedureCode = e1ap_data->procedure_code;
|
||||
e1ap_ctx.ProtocolIE_ID = e1ap_data->protocol_ie_id;
|
||||
e1ap_ctx.ProtocolExtensionID = e1ap_data->protocol_extension_id;
|
||||
|
||||
return (dissector_try_uint_new(e1ap_ies_dissector_table, e1ap_data->protocol_ie_id, tvb, pinfo, tree, FALSE, &e1ap_ctx)) ? tvb_captured_length(tvb) : 0;
|
||||
}
|
||||
|
||||
//static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
|
||||
//{
|
||||
// e1ap_ctx_t e1ap_ctx;
|
||||
// e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo);
|
||||
//
|
||||
// e1ap_ctx.message_type = e1ap_data->message_type;
|
||||
// e1ap_ctx.ProcedureCode = e1ap_data->procedure_code;
|
||||
// e1ap_ctx.ProtocolIE_ID = e1ap_data->protocol_ie_id;
|
||||
// e1ap_ctx.ProtocolExtensionID = e1ap_data->protocol_extension_id;
|
||||
//
|
||||
// return (dissector_try_uint_new(e1ap_extension_dissector_table, e1ap_data->protocol_extension_id, tvb, pinfo, tree, FALSE, &e1ap_ctx)) ? tvb_captured_length(tvb) : 0;
|
||||
//}
|
||||
|
||||
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
|
||||
{
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo);
|
||||
|
||||
return (dissector_try_uint_new(e1ap_proc_imsg_dissector_table, e1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0;
|
||||
}
|
||||
|
||||
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
|
||||
{
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo);
|
||||
|
||||
return (dissector_try_uint_new(e1ap_proc_sout_dissector_table, e1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0;
|
||||
}
|
||||
|
||||
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
|
||||
{
|
||||
e1ap_private_data_t *e1ap_data = e1ap_get_private_data(pinfo);
|
||||
|
||||
return (dissector_try_uint_new(e1ap_proc_uout_dissector_table, e1ap_data->procedure_code, tvb, pinfo, tree, FALSE, data)) ? tvb_captured_length(tvb) : 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
dissect_e1ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
|
||||
{
|
||||
proto_item *e1ap_item = NULL;
|
||||
proto_tree *e1ap_tree = NULL;
|
||||
|
||||
/* make entry in the Protocol column on summary display */
|
||||
col_set_str(pinfo->cinfo, COL_PROTOCOL, "E1AP");
|
||||
col_clear(pinfo->cinfo, COL_INFO);
|
||||
|
||||
/* create the e1ap protocol tree */
|
||||
e1ap_item = proto_tree_add_item(tree, proto_e1ap, tvb, 0, -1, ENC_NA);
|
||||
e1ap_tree = proto_item_add_subtree(e1ap_item, ett_e1ap);
|
||||
|
||||
dissect_E1AP_PDU_PDU(tvb, pinfo, e1ap_tree, NULL);
|
||||
return tvb_captured_length(tvb);
|
||||
}
|
||||
|
||||
void proto_register_e1ap(void) {
|
||||
|
||||
/* List of fields */
|
||||
|
||||
static hf_register_info hf[] = {
|
||||
{ &hf_e1ap_transportLayerAddressIPv4,
|
||||
{ "IPv4 transportLayerAddress", "e1ap.transportLayerAddressIPv4",
|
||||
FT_IPv4, BASE_NONE, NULL, 0,
|
||||
NULL, HFILL }},
|
||||
{ &hf_e1ap_transportLayerAddressIPv6,
|
||||
{ "IPv6 transportLayerAddress", "e1ap.transportLayerAddressIPv6",
|
||||
FT_IPv6, BASE_NONE, NULL, 0,
|
||||
NULL, HFILL }},
|
||||
#include "packet-e1ap-hfarr.c"
|
||||
};
|
||||
|
||||
/* List of subtrees */
|
||||
static gint *ett[] = {
|
||||
&ett_e1ap,
|
||||
&ett_e1ap_PLMN_Identity,
|
||||
&ett_e1ap_TransportLayerAddress,
|
||||
#include "packet-e1ap-ettarr.c"
|
||||
};
|
||||
|
||||
/* Register protocol */
|
||||
proto_e1ap = proto_register_protocol(PNAME, PSNAME, PFNAME);
|
||||
/* Register fields and subtrees */
|
||||
proto_register_field_array(proto_e1ap, hf, array_length(hf));
|
||||
proto_register_subtree_array(ett, array_length(ett));
|
||||
|
||||
/* Register dissector */
|
||||
e1ap_handle = register_dissector("e1ap", dissect_e1ap, proto_e1ap);
|
||||
|
||||
/* Register dissector tables */
|
||||
e1ap_ies_dissector_table = register_dissector_table("e1ap.ies", "E1AP-PROTOCOL-IES", proto_e1ap, FT_UINT32, BASE_DEC);
|
||||
e1ap_extension_dissector_table = register_dissector_table("e1ap.extension", "E1AP-PROTOCOL-EXTENSION", proto_e1ap, FT_UINT32, BASE_DEC);
|
||||
e1ap_proc_imsg_dissector_table = register_dissector_table("e1ap.proc.imsg", "E1AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_e1ap, FT_UINT32, BASE_DEC);
|
||||
e1ap_proc_sout_dissector_table = register_dissector_table("e1ap.proc.sout", "E1AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_e1ap, FT_UINT32, BASE_DEC);
|
||||
e1ap_proc_uout_dissector_table = register_dissector_table("e1ap.proc.uout", "E1AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_e1ap, FT_UINT32, BASE_DEC);
|
||||
}
|
||||
|
||||
void
|
||||
proto_reg_handoff_e1ap(void)
|
||||
{
|
||||
//dissector_add_uint_with_preference("sctp.port", SCTP_PORT_E1AP, e1ap_handle);
|
||||
dissector_add_uint("sctp.ppi", E1AP_PROTOCOL_ID, e1ap_handle);
|
||||
#include "packet-e1ap-dis-tab.c"
|
||||
}
|
||||
|
||||
/*
|
||||
* Editor modelines
|
||||
*
|
||||
* Local Variables:
|
||||
* c-basic-offset: 2
|
||||
* tab-width: 8
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*
|
||||
* ex: set shiftwidth=2 tabstop=8 expandtab:
|
||||
* :indentSize=2:tabSize=8:noTabs=true:
|
||||
*/
|
File diff suppressed because it is too large
Load Diff
|
@ -82,5 +82,7 @@
|
|||
#define NGAP_PROTOCOL_ID 60
|
||||
#define XNAP_PROTOCOL_ID 61
|
||||
#define F1AP_PROTOCOL_ID 62
|
||||
#define HTTP_SCTP_PROTOCOL_ID 63
|
||||
#define E1AP_PROTOCOL_ID 64
|
||||
|
||||
#endif /* sctpppids.h */
|
||||
|
|
Loading…
Reference in New Issue