Add E2AP ORAN 1.00 dissector

This commit is contained in:
Martin Mathieson 2021-05-25 13:29:47 +01:00
parent 21a204643e
commit 3248e2a759
15 changed files with 7731 additions and 3 deletions

View File

@ -105,9 +105,7 @@ State Synchronization Protocol (SSyncP)
Tagged Image File Format (TIFF)
TP-Link Smart Home Protocol
R09.x (R09)
UAVCAN/CAN
UAVCAN DSDL
Van Jacobson PPP compression (VJC)
O-RAN E2AP
--
=== Updated Protocol Support

View File

@ -91,6 +91,7 @@ set(CLEAN_ASN1_DISSECTOR_SRC
${CMAKE_CURRENT_SOURCE_DIR}/packet-dop.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-dsp.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-e1ap.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-e2ap.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-ess.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-f1ap.c
${CMAKE_CURRENT_SOURCE_DIR}/packet-ftam.c

View File

@ -34,6 +34,7 @@ set(ASN1_SRC_DIRS
dop
dsp
e1ap
e2ap
ess
f1ap
ftam

View File

@ -0,0 +1,44 @@
# 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 e2ap )
set( PROTO_OPT )
set( EXPORT_FILES
${PROTOCOL_NAME}-exp.cnf
)
set( EXT_ASN_FILE_LIST
)
set( ASN_FILE_LIST
E2AP-CommonDataTypes.asn
E2AP-Constants.asn
E2AP-Containers.asn
E2AP-IEs.asn
E2AP-PDU-Contents.asn
E2AP-PDU-Descriptions.asn
e2sm-kpm-v1.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()

View File

@ -0,0 +1,27 @@
-- ASN1START
-- **************************************************************
--
-- Common definitions
-- Derived from 3GPP 38.413 v15.4.0
--
-- **************************************************************
E2AP-CommonDataTypes {
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-CommonDataTypes (3) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
Criticality ::= ENUMERATED { reject, ignore, notify }
Presence ::= ENUMERATED { optional, conditional, mandatory }
ProcedureCode ::= INTEGER (0..255)
ProtocolIE-ID ::= INTEGER (0..65535)
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome }
END
-- ASN1STOP

View File

@ -0,0 +1,93 @@
-- ASN1START
-- **************************************************************
--
-- Constant definitions
--
-- **************************************************************
E2AP-Constants {
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-Constants (4) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
ProcedureCode,
ProtocolIE-ID
FROM E2AP-CommonDataTypes;
-- **************************************************************
--
-- Elementary Procedures
--
-- **************************************************************
id-E2setup ProcedureCode ::= 1
id-ErrorIndication ProcedureCode ::= 2
id-Reset ProcedureCode ::= 3
id-RICcontrol ProcedureCode ::= 4
id-RICindication ProcedureCode ::= 5
id-RICserviceQuery ProcedureCode ::= 6
id-RICserviceUpdate ProcedureCode ::= 7
id-RICsubscription ProcedureCode ::= 8
id-RICsubscriptionDelete ProcedureCode ::= 9
-- **************************************************************
--
-- Extension constants
--
-- **************************************************************
maxProtocolIEs INTEGER ::= 65535
-- **************************************************************
--
-- Lists
--
-- **************************************************************
maxnoofErrors INTEGER ::= 256
maxofRANfunctionID INTEGER ::= 256
maxofRICactionID INTEGER ::= 16
-- **************************************************************
--
-- IEs
--
-- **************************************************************
id-Cause ProtocolIE-ID ::= 1
id-CriticalityDiagnostics ProtocolIE-ID ::= 2
id-GlobalE2node-ID ProtocolIE-ID ::= 3
id-GlobalRIC-ID ProtocolIE-ID ::= 4
id-RANfunctionID ProtocolIE-ID ::= 5
id-RANfunctionID-Item ProtocolIE-ID ::= 6
id-RANfunctionIEcause-Item ProtocolIE-ID ::= 7
id-RANfunction-Item ProtocolIE-ID ::= 8
id-RANfunctionsAccepted ProtocolIE-ID ::= 9
id-RANfunctionsAdded ProtocolIE-ID ::= 10
id-RANfunctionsDeleted ProtocolIE-ID ::= 11
id-RANfunctionsModified ProtocolIE-ID ::= 12
id-RANfunctionsRejected ProtocolIE-ID ::= 13
id-RICaction-Admitted-Item ProtocolIE-ID ::= 14
id-RICactionID ProtocolIE-ID ::= 15
id-RICaction-NotAdmitted-Item ProtocolIE-ID ::= 16
id-RICactions-Admitted ProtocolIE-ID ::= 17
id-RICactions-NotAdmitted ProtocolIE-ID ::= 18
id-RICaction-ToBeSetup-Item ProtocolIE-ID ::= 19
id-RICcallProcessID ProtocolIE-ID ::= 20
id-RICcontrolAckRequest ProtocolIE-ID ::= 21
id-RICcontrolHeader ProtocolIE-ID ::= 22
id-RICcontrolMessage ProtocolIE-ID ::= 23
id-RICcontrolStatus ProtocolIE-ID ::= 24
id-RICindicationHeader ProtocolIE-ID ::= 25
id-RICindicationMessage ProtocolIE-ID ::= 26
id-RICindicationSN ProtocolIE-ID ::= 27
id-RICindicationType ProtocolIE-ID ::= 28
id-RICrequestID ProtocolIE-ID ::= 29
id-RICsubscriptionDetails ProtocolIE-ID ::= 30
id-TimeToWait ProtocolIE-ID ::= 31
id-RICcontrolOutcome ProtocolIE-ID ::= 32
END
-- ASN1STOP

View File

@ -0,0 +1,132 @@
-- ASN1START
-- **************************************************************
--
-- Container definitions
--
-- derived from 3GPP 38.413 v15.4.0
-- **************************************************************
E2AP-Containers {
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-Containers (5) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
Presence,
PrivateIE-ID,
ProtocolExtensionID,
ProtocolIE-ID
FROM E2AP-CommonDataTypes
maxProtocolIEs
FROM E2AP-Constants;
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
E2AP-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 IEs
--
-- **************************************************************
E2AP-PROTOCOL-IES-PAIR ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&firstCriticality Criticality,
&FirstValue,
&secondCriticality Criticality,
&SecondValue,
&presence Presence
}
WITH SYNTAX {
ID &id
FIRST CRITICALITY &firstCriticality
FIRST TYPE &FirstValue
SECOND CRITICALITY &secondCriticality
SECOND TYPE &SecondValue
PRESENCE &presence
}
-- **************************************************************
--
-- Container for Protocol IEs
--
-- **************************************************************
ProtocolIE-Container {E2AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-SingleContainer {E2AP-PROTOCOL-IES : IEsSetParam} ::=
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Field {E2AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
id E2AP-PROTOCOL-IES.&id ({IEsSetParam}),
criticality E2AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
value E2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container for Protocol IE Pairs
--
-- **************************************************************
ProtocolIE-ContainerPair {E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-FieldPair {{IEsSetParam}}
ProtocolIE-FieldPair {E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
id E2AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
firstCriticality E2AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
firstValue E2AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
secondCriticality E2AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
secondValue E2AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container Lists for Protocol IE Containers
--
-- **************************************************************
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, E2AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-SingleContainer {{IEsSetParam}}
ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-ContainerPair {{IEsSetParam}}
END
-- ASN1STOP

View File

@ -0,0 +1,384 @@
-- ASN1START
-- **************************************************************
-- E2AP
-- Information Element Definitions
--
-- **************************************************************
E2AP-IEs {
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-IEs (2)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
Criticality,
Presence,
ProcedureCode,
ProtocolIE-ID,
TriggeringMessage
FROM E2AP-CommonDataTypes
maxnoofErrors,
maxProtocolIEs
FROM E2AP-Constants;
-- A
-- B
-- C
Cause ::= CHOICE {
ricRequest CauseRIC,
ricService CauseRICservice,
transport CauseTransport,
protocol CauseProtocol,
misc CauseMisc,
...
}
CauseMisc ::= ENUMERATED {
control-processing-overload,
hardware-failure,
om-intervention,
unspecified,
...
}
CauseProtocol ::= ENUMERATED {
transfer-syntax-error,
abstract-syntax-error-reject,
abstract-syntax-error-ignore-and-notify,
message-not-compatible-with-receiver-state,
semantic-error,
abstract-syntax-error-falsely-constructed-message,
unspecified,
...
}
CauseRIC ::= ENUMERATED {
ran-function-id-Invalid,
action-not-supported,
excessive-actions,
duplicate-action,
duplicate-event,
function-resource-limit,
request-id-unknown,
inconsistent-action-subsequent-action-sequence,
control-message-invalid,
call-process-id-invalid,
unspecified,
...
}
CauseRICservice ::= ENUMERATED{
function-not-required,
excessive-functions,
ric-resource-limit,
...
}
CauseTransport ::= ENUMERATED {
unspecified,
transport-resource-unavailable,
...
}
-- **************************************************************
-- copied from 3GPP 38.413 NGAP IEs v15.5.0
-- note: ie-Extensions removed
-- **************************************************************
CriticalityDiagnostics ::= SEQUENCE {
procedureCode ProcedureCode OPTIONAL,
triggeringMessage TriggeringMessage OPTIONAL,
procedureCriticality Criticality OPTIONAL,
ricRequestorID RICrequestID OPTIONAL,
iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
...
}
CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE(1..maxnoofErrors)) OF CriticalityDiagnostics-IE-Item
CriticalityDiagnostics-IE-Item ::= SEQUENCE {
iECriticality Criticality,
iE-ID ProtocolIE-ID,
typeOfError TypeOfError,
...
}
-- D
-- E
-- **************************************************************
-- copied from 3GPP X2AP IEs v15.4.0
-- note: ie-Extensions removed
-- **************************************************************
ENB-ID ::= CHOICE {
macro-eNB-ID BIT STRING (SIZE (20)),
home-eNB-ID BIT STRING (SIZE (28)),
... ,
short-Macro-eNB-ID BIT STRING (SIZE(18)),
long-Macro-eNB-ID BIT STRING (SIZE(21))
}
-- **************************************************************
-- copied from 3GPP 38.423 v15.5.0 XnAP IEs
-- **************************************************************
ENB-ID-Choice ::= CHOICE {
enb-ID-macro BIT STRING (SIZE(20)),
enb-ID-shortmacro BIT STRING (SIZE(18)),
enb-ID-longmacro BIT STRING (SIZE(21)),
...
}
-- **************************************************************
-- copied from 3GPP X2AP IEs v15.4.0
-- note: ie-Extensions removed
-- Note: to avoid duplicate names with XnAP, GNB-ID renamed ENGNB-ID, GlobalGNB-ID renamed GlobalenGNB-ID
-- **************************************************************
ENGNB-ID ::= CHOICE {
gNB-ID BIT STRING (SIZE (22..32)),
...
}
-- F
-- G
GlobalE2node-ID ::= CHOICE{
gNB GlobalE2node-gNB-ID,
en-gNB GlobalE2node-en-gNB-ID,
ng-eNB GlobalE2node-ng-eNB-ID,
eNB GlobalE2node-eNB-ID,
...
}
GlobalE2node-en-gNB-ID ::= SEQUENCE{
global-gNB-ID GlobalenGNB-ID,
...
}
GlobalE2node-eNB-ID ::= SEQUENCE{
global-eNB-ID GlobalENB-ID,
...
}
GlobalE2node-gNB-ID ::= SEQUENCE{
global-gNB-ID GlobalgNB-ID,
gNB-CU-UP-ID GNB-CU-UP-ID OPTIONAL,
gNB-DU-ID GNB-DU-ID OPTIONAL,
...
}
GlobalE2node-ng-eNB-ID ::= SEQUENCE{
global-ng-eNB-ID GlobalngeNB-ID,
...
}
-- **************************************************************
-- copied from 3GPP X2AP IEs v15.4.0
-- note: ie-Extensions removed
-- **************************************************************
GlobalENB-ID ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
eNB-ID ENB-ID,
...
}
-- **************************************************************
-- copied from 3GPP X2AP IEs v15.4.0
-- Note: to avoid duplicate names with XnAP, GNB-ID renamed ENGNB-ID, GlobalGNB-ID renamed GlobalenGNB-ID
-- **************************************************************
GlobalenGNB-ID ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
gNB-ID ENGNB-ID,
...
}
-- **************************************************************
-- copied from 3GPP 38.423 v15.5.0 XnAP IEs
-- **************************************************************
GlobalgNB-ID ::= SEQUENCE {
plmn-id PLMN-Identity,
gnb-id GNB-ID-Choice,
...
}
-- **************************************************************
-- copied from 3GPP 38.423 v15.5.0 XnAP IEs
-- **************************************************************
GlobalngeNB-ID ::= SEQUENCE {
plmn-id PLMN-Identity,
enb-id ENB-ID-Choice,
...
}
GlobalRIC-ID ::= SEQUENCE{
pLMN-Identity PLMN-Identity,
ric-ID BIT STRING (SIZE (20)),
...
}
-- **************************************************************
-- copied from 3GPP 38.463 v15.5.0 E1AP IEs
-- **************************************************************
GNB-CU-UP-ID::= INTEGER (0..68719476735)
GNB-DU-ID::= INTEGER (0..68719476735)
-- **************************************************************
-- copied from 3GPP 38.423 v15.5.0 XnAP IEs
-- **************************************************************
GNB-ID-Choice ::= CHOICE {
gnb-ID BIT STRING (SIZE(22..32)),
...
}
-- H
-- I
-- J
-- K
-- L
-- M
-- N
-- O
-- P
-- **************************************************************
-- copied from 3GPP X2AP IEs v15.4.0
-- **************************************************************
PLMN-Identity ::= OCTET STRING (SIZE(3))
-- Q
-- R
-- **************************************************************
-- Following IE defined in E2SM
-- **************************************************************
RANfunctionDefinition ::= OCTET STRING
RANfunctionID ::= INTEGER (0..4095)
RANfunctionRevision ::= INTEGER (0..4095)
-- **************************************************************
-- Following IE defined in E2SM
-- **************************************************************
RICactionDefinition ::= OCTET STRING
RICactionID ::= INTEGER (0..255)
RICactionType ::= ENUMERATED{
report,
insert,
policy,
...
}
-- **************************************************************
-- Following IE defined in E2SM
-- **************************************************************
RICcallProcessID ::= OCTET STRING
RICcontrolAckRequest ::= ENUMERATED{
noAck,
ack,
nAck,
...
}
-- **************************************************************
-- Following IE defined in E2SM
-- **************************************************************
RICcontrolHeader ::= OCTET STRING
-- **************************************************************
-- Following IE defined in E2SM
-- **************************************************************
RICcontrolMessage ::= OCTET STRING
-- **************************************************************
-- Following IE defined in E2SM
-- **************************************************************
RICcontrolOutcome ::= OCTET STRING
RICcontrolStatus ::= ENUMERATED{
success,
rejected,
failed,
...
}
-- **************************************************************
-- Following IE defined in E2SM
-- **************************************************************
RICeventTriggerDefinition ::= OCTET STRING
-- **************************************************************
-- Following IE defined in E2SM
-- **************************************************************
RICindicationHeader ::= OCTET STRING
-- **************************************************************
-- Following IE defined in E2SM
-- **************************************************************
RICindicationMessage ::= OCTET STRING
RICindicationSN ::= INTEGER (0..65535)
RICindicationType ::= ENUMERATED{
report,
insert,
...
}
RICrequestID ::= SEQUENCE {
ricRequestorID INTEGER (0..65535),
ricInstanceID INTEGER (0..65535),
...
}
RICsubsequentAction ::=SEQUENCE{
ricSubsequentActionType RICsubsequentActionType,
ricTimeToWait RICtimeToWait,
...
}
RICsubsequentActionType ::= ENUMERATED{
continue,
wait,
...
}
RICtimeToWait ::= ENUMERATED{
zero,
w1ms,
w2ms,
w5ms,
w10ms,
w20ms,
w30ms,
w40ms,
w50ms,
w100ms,
w200ms,
w500ms,
w1s,
w2s,
w5s,
w10s,
w20s,
w60s,
...
}
-- S
-- T
-- **************************************************************
-- copied from 3GPP 38.413 NGAP IEs v15.5.0
-- **************************************************************
TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...}
-- **************************************************************
-- copied from 3GPP 38.413 NGAP IEs v15.5.0
-- **************************************************************
TypeOfError ::= ENUMERATED {
not-understood,
missing,
...
}
-- U
-- V
-- W
-- X
-- Y
-- Z
END
-- ASN1STOP

View File

@ -0,0 +1,595 @@
-- ASN1START
-- **************************************************************
--
-- PDU definitions for E2AP
-- Derived from 3GPP 38.413 v15.4.0 NGAP
--
-- **************************************************************
E2AP-PDU-Contents {
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-PDU-Contents (1) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Cause,
CriticalityDiagnostics,
GlobalE2node-ID,
GlobalRIC-ID,
RANfunctionDefinition,
RANfunctionID,
RANfunctionRevision,
RICactionDefinition,
RICactionID,
RICactionType,
RICcallProcessID,
RICcontrolAckRequest,
RICcontrolHeader,
RICcontrolMessage,
RICcontrolOutcome,
RICcontrolStatus,
RICeventTriggerDefinition,
RICindicationHeader,
RICindicationMessage,
RICindicationSN,
RICindicationType,
RICrequestID,
RICsubsequentAction,
TimeToWait
FROM E2AP-IEs
ProtocolIE-Container{},
ProtocolIE-ContainerList{},
ProtocolIE-SingleContainer{},
E2AP-PROTOCOL-IES,
E2AP-PROTOCOL-IES-PAIR
FROM E2AP-Containers
id-Cause,
id-CriticalityDiagnostics,
id-GlobalE2node-ID,
id-GlobalRIC-ID,
id-RANfunctionID,
id-RANfunctionID-Item,
id-RANfunctionIEcause-Item,
id-RANfunction-Item,
id-RANfunctionsAccepted,
id-RANfunctionsAdded,
id-RANfunctionsDeleted,
id-RANfunctionsModified,
id-RANfunctionsRejected,
id-RICaction-Admitted-Item,
id-RICactionID,
id-RICaction-NotAdmitted-Item,
id-RICactions-Admitted,
id-RICactions-NotAdmitted,
id-RICaction-ToBeSetup-Item,
id-RICcallProcessID,
id-RICcontrolAckRequest,
id-RICcontrolHeader,
id-RICcontrolMessage,
id-RICcontrolOutcome,
id-RICcontrolStatus,
id-RICindicationHeader,
id-RICindicationMessage,
id-RICindicationSN,
id-RICindicationType,
id-RICrequestID,
id-RICserviceQuery,
id-RICsubscriptionDetails,
id-TimeToWait,
maxofRANfunctionID,
maxofRICactionID
FROM E2AP-Constants;
-- **************************************************************
--
-- MESSAGES FOR NEAR-RT RIC FUNCTIONAL PROCEDURES
--
-- **************************************************************
-- **************************************************************
--
-- RIC Subscription Elementary Procedure
--
-- **************************************************************
-- **************************************************************
--
-- RIC SUBSCRIPTION REQUEST
--
-- **************************************************************
RICsubscriptionRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICsubscriptionRequest-IEs}},
...
}
RICsubscriptionRequest-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}|
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}|
{ ID id-RICsubscriptionDetails CRITICALITY reject TYPE RICsubscriptionDetails PRESENCE mandatory},
...
}
RICsubscriptionDetails ::= SEQUENCE {
ricEventTriggerDefinition RICeventTriggerDefinition,
ricAction-ToBeSetup-List RICactions-ToBeSetup-List,
...
}
RICactions-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-SingleContainer { {RICaction-ToBeSetup-ItemIEs} }
RICaction-ToBeSetup-ItemIEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICaction-ToBeSetup-Item CRITICALITY ignore TYPE RICaction-ToBeSetup-Item PRESENCE mandatory },
...
}
RICaction-ToBeSetup-Item ::= SEQUENCE {
ricActionID RICactionID,
ricActionType RICactionType,
ricActionDefinition RICactionDefinition OPTIONAL,
ricSubsequentAction RICsubsequentAction OPTIONAL,
...
}
-- **************************************************************
--
-- RIC SUBSCRIPTION RESPONSE
--
-- **************************************************************
RICsubscriptionResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container{{RICsubscriptionResponse-IEs}},
...
}
RICsubscriptionResponse-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory } |
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory } |
{ ID id-RICactions-Admitted CRITICALITY reject TYPE RICaction-Admitted-List PRESENCE mandatory } |
{ ID id-RICactions-NotAdmitted CRITICALITY reject TYPE RICaction-NotAdmitted-List PRESENCE optional },
...
}
RICaction-Admitted-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-SingleContainer{{RICaction-Admitted-ItemIEs}}
RICaction-Admitted-ItemIEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICaction-Admitted-Item CRITICALITY ignore TYPE RICaction-Admitted-Item PRESENCE mandatory },
...
}
RICaction-Admitted-Item ::= SEQUENCE {
ricActionID RICactionID,
...
}
RICaction-NotAdmitted-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer { {RICaction-NotAdmitted-ItemIEs} }
RICaction-NotAdmitted-ItemIEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICaction-NotAdmitted-Item CRITICALITY ignore TYPE RICaction-NotAdmitted-Item PRESENCE mandatory },
...
}
RICaction-NotAdmitted-Item ::= SEQUENCE {
ricActionID RICactionID,
cause Cause,
...
}
-- **************************************************************
--
-- RIC SUBSCRIPTION FAILURE
--
-- **************************************************************
RICsubscriptionFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICsubscriptionFailure-IEs}},
...
}
RICsubscriptionFailure-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
{ ID id-RICactions-NotAdmitted CRITICALITY reject TYPE RICaction-NotAdmitted-List PRESENCE mandatory }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- RIC Subscription Delete Elementary Procedure
--
-- **************************************************************
-- **************************************************************
--
-- RIC SUBSCRIPTION DELETE REQUEST
--
-- **************************************************************
RICsubscriptionDeleteRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteRequest-IEs}},
...
}
RICsubscriptionDeleteRequest-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory },
...
}
-- **************************************************************
--
-- RIC SUBSCRIPTION DELETE RESPONSE
--
-- **************************************************************
RICsubscriptionDeleteResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteResponse-IEs}},
...
}
RICsubscriptionDeleteResponse-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory },
...
}
-- **************************************************************
--
-- RIC SUBSCRIPTION DELETE FAILURE
--
-- **************************************************************
RICsubscriptionDeleteFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteFailure-IEs}},
...
}
RICsubscriptionDeleteFailure-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- RIC Indication Elementary Procedure
--
-- **************************************************************
-- **************************************************************
--
-- RIC INDICATION
--
-- **************************************************************
RICindication ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICindication-IEs}},
...
}
RICindication-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
{ ID id-RICactionID CRITICALITY reject TYPE RICactionID PRESENCE mandatory }|
{ ID id-RICindicationSN CRITICALITY reject TYPE RICindicationSN PRESENCE optional }|
{ ID id-RICindicationType CRITICALITY reject TYPE RICindicationType PRESENCE mandatory }|
{ ID id-RICindicationHeader CRITICALITY reject TYPE RICindicationHeader PRESENCE mandatory }|
{ ID id-RICindicationMessage CRITICALITY reject TYPE RICindicationMessage PRESENCE mandatory }|
{ ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional },
...
}
-- **************************************************************
--
-- RIC Control Elementary Procedure
--
-- **************************************************************
-- **************************************************************
--
-- RIC CONTROL REQUEST
--
-- **************************************************************
RICcontrolRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICcontrolRequest-IEs}},
...
}
RICcontrolRequest-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
{ ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }|
{ ID id-RICcontrolHeader CRITICALITY reject TYPE RICcontrolHeader PRESENCE mandatory }|
{ ID id-RICcontrolMessage CRITICALITY reject TYPE RICcontrolMessage PRESENCE mandatory }|
{ ID id-RICcontrolAckRequest CRITICALITY reject TYPE RICcontrolAckRequest PRESENCE optional },
...
}
-- **************************************************************
--
-- RIC CONTROL ACKNOWLEDGE
--
-- **************************************************************
RICcontrolAcknowledge ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICcontrolAcknowledge-IEs}},
...
}
RICcontrolAcknowledge-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
{ ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }|
{ ID id-RICcontrolStatus CRITICALITY reject TYPE RICcontrolStatus PRESENCE mandatory } |
{ ID id-RICcontrolOutcome CRITICALITY reject TYPE RICcontrolOutcome PRESENCE optional },
...
}
-- **************************************************************
--
-- RIC CONTROL FAILURE
--
-- **************************************************************
RICcontrolFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICcontrolFailure-IEs}},
...
}
RICcontrolFailure-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
{ ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }|
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
{ ID id-RICcontrolOutcome CRITICALITY reject TYPE RICcontrolOutcome PRESENCE optional },
...
}
-- **************************************************************
--
-- MESSAGES FOR GLOBAL PROCEDURES
--
-- **************************************************************
-- **************************************************************
--
-- Error Indication Elementary Procedure
--
-- **************************************************************
-- **************************************************************
--
-- ERROR INDICATION
--
-- **************************************************************
ErrorIndication ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}},
...
}
ErrorIndication-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE optional }|
{ ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE optional }|
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- E2 Setup Elementary Procedure
--
-- **************************************************************
-- **************************************************************
--
-- E2 SETUP REQUEST
--
-- **************************************************************
E2setupRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {E2setupRequestIEs} },
...
}
E2setupRequestIEs E2AP-PROTOCOL-IES ::= {
{ ID id-GlobalE2node-ID CRITICALITY reject TYPE GlobalE2node-ID PRESENCE mandatory }|
{ ID id-RANfunctionsAdded CRITICALITY reject TYPE RANfunctions-List PRESENCE optional },
...
}
-- **************************************************************
--
-- E2 SETUP RESPONSE
--
-- **************************************************************
E2setupResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {E2setupResponseIEs} },
...
}
E2setupResponseIEs E2AP-PROTOCOL-IES ::= {
{ ID id-GlobalRIC-ID CRITICALITY reject TYPE GlobalRIC-ID PRESENCE mandatory }|
{ ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }|
{ ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional },
...
}
-- **************************************************************
--
-- E2 SETUP FAILURE
--
-- **************************************************************
E2setupFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {E2setupFailureIEs} },
...
}
E2setupFailureIEs E2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
{ ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- Reset Elementary Procedure
--
-- **************************************************************
-- **************************************************************
--
-- RESET REQUEST
--
-- **************************************************************
ResetRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {ResetRequestIEs} },
...
}
ResetRequestIEs E2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
...
}
-- **************************************************************
--
-- RESET RESPONSE
--
-- **************************************************************
ResetResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {ResetResponseIEs} },
...
}
ResetResponseIEs E2AP-PROTOCOL-IES ::= {
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- RIC Service Update Elementary Procedure
--
-- **************************************************************
-- **************************************************************
--
-- RIC SERVICE UPDATE
--
-- **************************************************************
RICserviceUpdate ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICserviceUpdate-IEs}},
...
}
RICserviceUpdate-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RANfunctionsAdded CRITICALITY reject TYPE RANfunctions-List PRESENCE optional }|
{ ID id-RANfunctionsModified CRITICALITY reject TYPE RANfunctions-List PRESENCE optional }|
{ ID id-RANfunctionsDeleted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional },
...
}
RANfunctions-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-SingleContainer { {RANfunction-ItemIEs} }
-- TODO (dodgy). also note that NGAP doesn't do this...
--RANfunctions-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF RANfunction-ItemIEs
RANfunction-ItemIEs E2AP-PROTOCOL-IES ::= {
{ ID id-RANfunction-Item CRITICALITY ignore TYPE RANfunction-Item PRESENCE mandatory },
...
}
RANfunction-Item ::= SEQUENCE {
ranFunctionID RANfunctionID,
ranFunctionDefinition RANfunctionDefinition,
ranFunctionRevision RANfunctionRevision,
...
}
RANfunctionsID-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-SingleContainer{{RANfunctionID-ItemIEs}}
RANfunctionID-ItemIEs E2AP-PROTOCOL-IES ::= {
{ ID id-RANfunctionID-Item CRITICALITY ignore TYPE RANfunctionID-Item PRESENCE mandatory },
...
}
RANfunctionID-Item ::= SEQUENCE {
ranFunctionID RANfunctionID,
ranFunctionRevision RANfunctionRevision,
...
}
-- **************************************************************
--
-- RIC SERVICE UPDATE ACKNOWLEDGE
--
-- **************************************************************
RICserviceUpdateAcknowledge ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICserviceUpdateAcknowledge-IEs}},
...
}
RICserviceUpdateAcknowledge-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }|
{ ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional },
...
}
RANfunctionsIDcause-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-SingleContainer { {RANfunctionIDcause-ItemIEs} }
RANfunctionIDcause-ItemIEs E2AP-PROTOCOL-IES ::= {
{ ID id-RANfunctionIEcause-Item CRITICALITY ignore TYPE RANfunctionIDcause-Item PRESENCE mandatory },
...
}
RANfunctionIDcause-Item ::= SEQUENCE {
ranFunctionID RANfunctionID,
cause Cause,
...
}
-- **************************************************************
--
-- RIC SERVICE UPDATE FAILURE
--
-- **************************************************************
RICserviceUpdateFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICserviceUpdateFailure-IEs}},
...
}
RICserviceUpdateFailure-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RANfunctionsRejected CRITICALITY ignore TYPE RANfunctionsIDcause-List PRESENCE optional }|
{ ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- RIC Service Query Elementary Procedure
--
-- **************************************************************
-- **************************************************************
--
-- RIC SERVICE QUERY
--
-- **************************************************************
RICserviceQuery ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RICserviceQuery-IEs}},
...
}
RICserviceQuery-IEs E2AP-PROTOCOL-IES ::= {
{ ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional },
...
}
END
-- ASN1STOP

View File

@ -0,0 +1,216 @@
-- ASN1START
-- **************************************************************
--
-- Elementary Procedure definitions
-- Derived from 3GPP 38.413 v15.4.0 NGAP
-- **************************************************************
E2AP-PDU-Descriptions {
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-PDU-Descriptions (0) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
ProcedureCode
FROM E2AP-CommonDataTypes
E2setupFailure,
E2setupRequest,
E2setupResponse,
ErrorIndication,
ResetRequest,
ResetResponse,
RICcontrolAcknowledge,
RICcontrolFailure,
RICcontrolRequest,
RICindication,
RICserviceQuery,
RICserviceUpdate,
RICserviceUpdateAcknowledge,
RICserviceUpdateFailure,
RICsubscriptionFailure,
RICsubscriptionRequest,
RICsubscriptionResponse,
RICsubscriptionDeleteFailure,
RICsubscriptionDeleteRequest,
RICsubscriptionDeleteResponse
FROM E2AP-PDU-Contents
id-E2setup,
id-ErrorIndication,
id-Reset,
id-RICcontrol,
id-RICindication,
id-RICserviceQuery,
id-RICserviceUpdate,
id-RICsubscription,
id-RICsubscriptionDelete
FROM E2AP-Constants;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
E2AP-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
--
-- **************************************************************
E2AP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}),
criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value E2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}),
criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value E2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}),
criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value E2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
E2AP-ELEMENTARY-PROCEDURES E2AP-ELEMENTARY-PROCEDURE ::= {
E2AP-ELEMENTARY-PROCEDURES-CLASS-1 |
E2AP-ELEMENTARY-PROCEDURES-CLASS-2,
...
}
E2AP-ELEMENTARY-PROCEDURES-CLASS-1 E2AP-ELEMENTARY-PROCEDURE ::= {
ricSubscription |
ricSubscriptionDelete |
ricServiceUpdate |
ricControl |
e2setup |
reset,
...
}
E2AP-ELEMENTARY-PROCEDURES-CLASS-2 E2AP-ELEMENTARY-PROCEDURE ::= {
ricIndication |
ricServiceQuery |
errorIndication,
...
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
e2setup E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E2setupRequest
SUCCESSFUL OUTCOME E2setupResponse
UNSUCCESSFUL OUTCOME E2setupFailure
PROCEDURE CODE id-E2setup
CRITICALITY reject
}
errorIndication E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-ErrorIndication
CRITICALITY ignore
}
reset E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResetRequest
SUCCESSFUL OUTCOME ResetResponse
PROCEDURE CODE id-Reset
CRITICALITY reject
}
ricControl E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RICcontrolRequest
SUCCESSFUL OUTCOME RICcontrolAcknowledge
UNSUCCESSFUL OUTCOME RICcontrolFailure
PROCEDURE CODE id-RICcontrol
CRITICALITY reject
}
ricIndication E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RICindication
PROCEDURE CODE id-RICindication
CRITICALITY ignore
}
ricServiceQuery E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RICserviceQuery
PROCEDURE CODE id-RICserviceQuery
CRITICALITY ignore
}
ricServiceUpdate E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RICserviceUpdate
SUCCESSFUL OUTCOME RICserviceUpdateAcknowledge
UNSUCCESSFUL OUTCOME RICserviceUpdateFailure
PROCEDURE CODE id-RICserviceUpdate
CRITICALITY reject
}
ricSubscription E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RICsubscriptionRequest
SUCCESSFUL OUTCOME RICsubscriptionResponse
UNSUCCESSFUL OUTCOME RICsubscriptionFailure
PROCEDURE CODE id-RICsubscription
CRITICALITY reject
}
ricSubscriptionDelete E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RICsubscriptionDeleteRequest
SUCCESSFUL OUTCOME RICsubscriptionDeleteResponse
UNSUCCESSFUL OUTCOME RICsubscriptionDeleteFailure
PROCEDURE CODE id-RICsubscriptionDelete
CRITICALITY reject
}
END
-- ASN1STOP

View File

@ -0,0 +1,533 @@
# e2ap.cnf
# e2ap conformation file
#.OPT
PER
ALIGNED
#.END
#.USE_VALS_EXT
ProcedureCode
ProtocolIE-ID
#.EXPORTS ONLY_VALS WS_DLL
#.EXPORTS
#.PDU
E2AP-PDU
E2SM-KPM-ActionDefinition
E2SM-KPM-RANfunction-Description
E2SM-KPM-EventTriggerDefinition
E2SM-KPM-IndicationHeader
RANcallProcess-ID-string
E2SM-KPM-IndicationMessage-Format1
#.MAKE_ENUM
ProcedureCode
ProtocolIE-ID
#.NO_EMIT
#.OMIT_ASSIGNMENT
# Get rid of unused code warnings
ProtocolIE-FieldPair
ProtocolIE-ContainerList
ProtocolIE-ContainerPair
ProtocolIE-ContainerPairList
Presence
# KPM items. Don't know which E2AP OCTET STRING is supposed to use this...
GNB-DU-Name
E2SM-KPM-IndicationMessage
#.END
#.TYPE_ATTR
E2SM-KPM-IndicationMessage DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationMessage_vals)
#.TYPE_ATTR
E2SM-KPM-IndicationHeader DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationHeader_vals)
#.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
#GlobalGNB-ID/gNB-ID globalGNB-ID_gNB-ID
#.FIELD_ATTR
#GlobalGNB-ID/gNB-ID ABBREV=globalGNB_ID.gNB_ID
#.FN_BODY ProtocolIE-ID VAL_PTR=&e2ap_data->protocol_ie_id
struct e2ap_private_data *e2ap_data = e2ap_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(e2ap_data->protocol_ie_id, &e2ap_ProtocolIE_ID_vals_ext, "unknown (%d)"));
}
#.END
# TODO: probably not worth it
# #.FN_BODY E2AP-PDU VAL_PTR=&value
# guint32 value;
# %(DEFAULT_BODY)s
# col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s)", val_to_str(value, e2ap_E2AP_PDU_vals, "Unknown"));
#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue
# Currently not used
# FN_PARS ProtocolIE-FieldPair/firstValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairFirstValue
# FN_PARS ProtocolIE-FieldPair/secondValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairSecondValue
#.FN_BODY ProcedureCode VAL_PTR = &e2ap_data->procedure_code
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
%(DEFAULT_BODY)s
//col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%%s", val_to_str(e2ap_data->procedure_code, e2ap_ProcedureCode_vals, "Unknown"));
#.END
#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
#.FN_HDR InitiatingMessage/value
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
e2ap_data->message_type = INITIATING_MESSAGE;
#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
#.FN_HDR SuccessfulOutcome/value
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
e2ap_data->message_type = SUCCESSFUL_OUTCOME;
#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue
#.FN_HDR UnsuccessfulOutcome/value
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
e2ap_data->message_type = UNSUCCESSFUL_OUTCOME;
#--- Parameterization is not supported in asn2wrs ---
#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, e2ap-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
#ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, e2ap-PROTOCOL-IES-PAIR : IEsSetParam} ::=
# SEQUENCE (SIZE (lowerBound..upperBound)) OF
# ProtocolIE-ContainerPair {{IEsSetParam}}
# Currently not used
# FN_PARS ProtocolIE-ContainerPairList
#MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound")
#MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
# FN_HDR ProtocolIE-ContainerPairList
# static const asn1_par_def_t ProtocolIE_ContainerPairList_pars[] = {
# { "lowerBound", ASN1_PAR_INTEGER },
# { "upperBound", ASN1_PAR_INTEGER },
# { NULL, 0 }
# };
# asn1_stack_frame_check(actx, "ProtocolIE-ContainerPairList", ProtocolIE_ContainerPairList_pars);
# END
#PduSessionResource-IE-ContainerList { e2ap-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxnoofPduSessionResources, {IEsSetParam} }
# FN_BODY PduSessionResource-IE-ContainerList
# asn1_stack_frame_push(%(ACTX)s, "ProtocolIE-ContainerList");
# asn1_param_push_integer(%(ACTX)s, 1);
# asn1_param_push_integer(%(ACTX)s, maxnoofE_RABs);
# %(DEFAULT_BODY)s
# asn1_stack_frame_pop(%(ACTX)s, "ProtocolIE-ContainerList");
# END
# PduSessionResource-IE-ContainerPairList { e2ap-PROTOCOL-IES-PAIR : IEsSetParam } ::= ProtocolIE-ContainerPairList { 1, maxnoofPduSessionResources, {IEsSetParam} }
# Currently not used
# FN_BODY SAEB-IE-ContainerPairList
# asn1_stack_frame_push(%(ACTX)s, "ProtocolIE-ContainerPairList");
# asn1_param_push_integer(%(ACTX)s, 1);
# asn1_param_push_integer(%(ACTX)s, maxnoofE_RABs);
#%(DEFAULT_BODY)s
# asn1_stack_frame_pop(%(ACTX)s, "ProtocolIE-ContainerPairList");
# END
# Currently not used
# ProtocolError-IE-ContainerList { e2ap-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxnoofPduSessionResources, {IEsSetParam} }
# FN_BODY ProtocolError-IE-ContainerList
# asn1_stack_frame_push(%(ACTX)s, "ProtocolIE-ContainerList");
# asn1_param_push_integer(%(ACTX)s, 1);
# asn1_param_push_integer(%(ACTX)s, maxnoofE_RABs);
#%(DEFAULT_BODY)s
# asn1_stack_frame_pop(%(ACTX)s, "ProtocolIE-ContainerList");
# END
# .FN_HDR PrivateIE-ID
# struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
# e2ap_data->obj_id = NULL;
# FN_BODY PrivateIE-ID/global FN_VARIANT = _str VAL_PTR = &e2ap_data->obj_id
# struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
# %(DEFAULT_BODY)s
# FN_BODY PrivateIE-Field/value
# struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
# if (e2ap_data->obj_id) {
# offset = call_per_oid_callback(e2ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index);
# } else {
# %(DEFAULT_BODY)s
# }
# #.FN_BODY E2AP-Message VAL_PTR = &parameter_tvb
# tvbuff_t *parameter_tvb;
# proto_tree *subtree;
#%(DEFAULT_BODY)s
# if (!parameter_tvb)
# return offset;
# subtree = proto_item_add_subtree(actx->created_item, ett_e2ap_e2ap_Message);
# col_set_fence(actx->pinfo->cinfo, COL_INFO);
# call_dissector(e2ap_handle, parameter_tvb, actx->pinfo, subtree);
# Calling in-depth KPM definitions of E2AP OCTET STRING fields.
#.FN_BODY RICactionDefinition VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
dissect_E2SM_KPM_ActionDefinition_PDU(parameter_tvb, actx->pinfo, tree, NULL);
#.FN_BODY RICeventTriggerDefinition VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
dissect_E2SM_KPM_EventTriggerDefinition_PDU(parameter_tvb, actx->pinfo, tree, NULL);
#.FN_BODY RICindicationHeader VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
dissect_E2SM_KPM_IndicationHeader_PDU(parameter_tvb, actx->pinfo, tree, NULL);
#.FN_BODY RICindicationMessage VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
/* It is believed that this is an error in the ASN in V1 of the spec... */
dissect_E2SM_KPM_IndicationMessage_Format1_PDU(parameter_tvb, actx->pinfo, tree, NULL);
#.FN_BODY RANfunctionDefinition VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
dissect_E2SM_KPM_RANfunction_Description_PDU(parameter_tvb, actx->pinfo, tree, NULL);
#.FN_BODY RICcallProcessID VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
dissect_RANcallProcess_ID_string_PDU(parameter_tvb, actx->pinfo, tree, NULL);
#.ASSIGN_VALUE_TO_TYPE # e2ap does not have constants assigned to types, they are pure INTEGER
# ProcedureCode
id-E2setup ProcedureCode
id-ErrorIndication ProcedureCode
id-Reset ProcedureCode
id-RICcontrol ProcedureCode
id-RICindication ProcedureCode
id-RICserviceQuery ProcedureCode
id-RICserviceUpdate ProcedureCode
id-RICsubscription ProcedureCode
id-RICsubscriptionDelete ProcedureCode
#id-E2nodeConfigurationUpdate ProcedureCode
#id-E2connectionUpdate ProcedureCode
# ProtocolIE-ID
id-Cause ProtocolIE-ID
id-CriticalityDiagnostics ProtocolIE-ID
id-GlobalE2node-ID ProtocolIE-ID
id-GlobalRIC-ID ProtocolIE-ID
id-RANfunctionID ProtocolIE-ID
id-RANfunctionID-Item ProtocolIE-ID
id-RANfunctionIEcause-Item ProtocolIE-ID
id-RANfunction-Item ProtocolIE-ID
id-RANfunctionsAccepted ProtocolIE-ID
id-RANfunctionsAdded ProtocolIE-ID
id-RANfunctionsDeleted ProtocolIE-ID
id-RANfunctionsModified ProtocolIE-ID
id-RANfunctionsRejected ProtocolIE-ID
id-RICaction-Admitted-Item ProtocolIE-ID
id-RICactionID ProtocolIE-ID
id-RICaction-NotAdmitted-Item ProtocolIE-ID
id-RICactions-Admitted ProtocolIE-ID
id-RICactions-NotAdmitted ProtocolIE-ID
id-RICaction-ToBeSetup-Item ProtocolIE-ID
id-RICcallProcessID ProtocolIE-ID
id-RICcontrolAckRequest ProtocolIE-ID
id-RICcontrolHeader ProtocolIE-ID
id-RICcontrolMessage ProtocolIE-ID
id-RICcontrolStatus ProtocolIE-ID
id-RICindicationHeader ProtocolIE-ID
id-RICindicationMessage ProtocolIE-ID
id-RICindicationSN ProtocolIE-ID
id-RICindicationType ProtocolIE-ID
id-RICrequestID ProtocolIE-ID
id-RICsubscriptionDetails ProtocolIE-ID
id-TimeToWait ProtocolIE-ID
id-RICcontrolOutcome ProtocolIE-ID
#id-E2nodeComponentConfigUpdate ProtocolIE-ID
#id-E2nodeComponentConfigUpdate-Item ProtocolIE-ID
#id-E2nodeComponentConfigUpdateAck ProtocolIE-ID
#id-E2nodeComponentConfigUpdateAck-Item ProtocolIE-ID
#id-E2connectionSetup ProtocolIE-ID
#id-E2connectionSetupFailed ProtocolIE-ID
#id-E2connectionSetupFailed-Item ProtocolIE-ID
#id-E2connectionFailed-Item ProtocolIE-ID
#id-E2connectionUpdate-Item ProtocolIE-ID
#id-E2connectionUpdateAdd ProtocolIE-ID
#id-E2connectionUpdateModify ProtocolIE-ID
#id-E2connectionUpdateRemove ProtocolIE-ID
#id-E2connectionUpdateRemove-Item ProtocolIE-ID
#id-TNLinformation ProtocolIE-ID
#id-TransactionID ProtocolIE-ID
#.END
#.REGISTER
#E2AP-PROTOCOL-IES
Cause N e2ap.ies id-Cause
CriticalityDiagnostics N e2ap.ies id-CriticalityDiagnostics
GlobalE2node-ID N e2ap.ies id-GlobalE2node-ID
GlobalRIC-ID N e2ap.ies id-GlobalRIC-ID
RANfunctionID N e2ap.ies id-RANfunctionID
RANfunctionID-Item N e2ap.ies id-RANfunctionID-Item
RANfunctionIDcause-Item N e2ap.ies id-RANfunctionIEcause-Item
RANfunction-Item N e2ap.ies id-RANfunction-Item
RANfunctionsID-List N e2ap.ies id-RANfunctionsAccepted
RANfunctions-List N e2ap.ies id-RANfunctionsAdded
RANfunctionsID-List N e2ap.ies id-RANfunctionsDeleted
RANfunctions-List N e2ap.ies id-RANfunctionsModified
RANfunctionsIDcause-List N e2ap.ies id-RANfunctionsRejected
RICaction-Admitted-Item N e2ap.ies id-RICaction-Admitted-Item
RICactionID N e2ap.ies id-RICactionID
RICaction-NotAdmitted-Item N e2ap.ies id-RICaction-NotAdmitted-Item
RICaction-Admitted-List N e2ap.ies id-RICactions-Admitted
RICaction-ToBeSetup-Item N e2ap.ies id-RICaction-ToBeSetup-Item
RICcallProcessID N e2ap.ies id-RICcallProcessID
RICaction-NotAdmitted-List N e2ap.ies id-RICactions-NotAdmitted
RICcontrolAckRequest N e2ap.ies id-RICcontrolAckRequest
RICcontrolHeader N e2ap.ies id-RICcontrolHeader
RICcontrolMessage N e2ap.ies id-RICcontrolMessage
RICcontrolOutcome N e2ap.ies id-RICcontrolOutcome
RICcontrolStatus N e2ap.ies id-RICcontrolStatus
RICindicationHeader N e2ap.ies id-RICindicationHeader
RICindicationMessage N e2ap.ies id-RICindicationMessage
RICindicationSN N e2ap.ies id-RICindicationSN
RICindicationType N e2ap.ies id-RICindicationType
RICrequestID N e2ap.ies id-RICrequestID
RICsubscriptionDetails N e2ap.ies id-RICsubscriptionDetails
TimeToWait N e2ap.ies id-TimeToWait
#TNLinformation N e2ap.ies id-TNLinformation
#TransactionID N e2ap.ies id-TransactionID
# TODO: V2?
#Cause N e2ap.ies id-Cause
#CriticalityDiagnostics N e2ap.ies id-CriticalityDiagnostics
#E2nodeComponentConfigUpdate N e2ap.ies id-E2nodeComponentConfigUpdate
#E2nodeComponentConfigUpdateAck N e2ap.ies id-E2nodeComponentConfigUpdateAck
#E2nodeComponentID N e2ap.ies id-E2nodeComponentID
#E2nodeComponentType N e2ap.ies id-E2nodeComponentType
#GlobalE2node-ID N e2ap.ies id-GlobalE2node-ID
#GlobalRIC-ID N e2ap.ies id-GlobalRIC-ID
#RANfunctionDefinition N e2ap.ies id-RANfunctionDefinition
#RANfunctionID N e2ap.ies id-RANfunctionID
#RANfunctionOID N e2ap.ies id-RANfunctionOID
#RANfunctionRevision N e2ap.ies id-RANfunctionRevision
#RICactionDefinition N e2ap.ies id-RICactionDefinition
#RICactionID N e2ap.ies id-RICactionID
#RICactionType N e2ap.ies id-RICactionType
#RICcallProcessID N e2ap.ies id-RICcallProcessID
#RICcontrolAckRequest N e2ap.ies id-RICcontrolAckRequest
#RICcontrolHeader N e2ap.ies id-RICcontrolHeader
#RICcontrolMessage N e2ap.ies id-RICcontrolMessage
#RICcontrolOutcome N e2ap.ies id-RICcontrolOutcome
#RICcontrolStatus N e2ap.ies id-RICcontrolStatus
#RICeventTriggerDefinition N e2ap.ies id-RICeventTriggerDefinition
#RICindicationHeader N e2ap.ies id-RICindicationHeader
#RICindicationMessage N e2ap.ies id-RICindicationMessage
#RICindicationSN N e2ap.ies id-RICindicationSN
#RICindicationType N e2ap.ies id-RICindicationType
#RICrequestID N e2ap.ies id-RICrequestID
#RICsubsequentAction N e2ap.ies id-RICsubsequentAction
#TimeToWait N e2ap.ies id-TimeToWait
#TNLinformation N e2ap.ies id-TNLinformation
#TNLusage N e2ap.ies id-TNLusage
#TransactionID N e2ap.ies id-TransactionID
#e2ap-PROTOCOL-EXTENSION
#E2AP-ELEMENTARY-PROCEDURE
#E2connectionUpdate N e2ap.proc.imsg id-E2connectionUpdate
#E2connectionUpdateAcknowledge N e2ap.proc.sout id-E2connectionUpdate
#E2connectionUpdateFailure N e2ap.proc.uout id-E2connectionUpdate
#E2nodeConfigurationUpdate N e2ap.proc.imsg id-E2nodeConfigurationUpdate
#E2nodeConfigurationUpdateAcknowledge N e2ap.proc.sout id-E2nodeConfigurationUpdate
#E2nodeConfigurationUpdateFailure N e2ap.proc.uout id-E2nodeConfigurationUpdate
E2setupFailure N e2ap.proc.uout id-E2setup
E2setupRequest N e2ap.proc.imsg id-E2setup
E2setupResponse N e2ap.proc.sout id-E2setup
ErrorIndication N e2ap.proc.imsg id-ErrorIndication
ResetRequest N e2ap.proc.imsg id-Reset
ResetResponse N e2ap.proc.sout id-Reset
RICcontrolAcknowledge N e2ap.proc.sout id-RICcontrol
RICcontrolFailure N e2ap.proc.uout id-RICcontrol
RICcontrolRequest N e2ap.proc.imsg id-RICcontrol
RICindication N e2ap.proc.imsg id-RICindication
RICserviceQuery N e2ap.proc.imsg id-RICserviceQuery
RICserviceUpdate N e2ap.proc.imsg id-RICserviceUpdate
RICserviceUpdateAcknowledge N e2ap.proc.sout id-RICserviceUpdate
RICserviceUpdateFailure N e2ap.proc.uout id-RICserviceUpdate
RICsubscriptionFailure N e2ap.proc.uout id-RICsubscription
RICsubscriptionRequest N e2ap.proc.imsg id-RICsubscription
RICsubscriptionResponse N e2ap.proc.sout id-RICsubscription
RICsubscriptionDeleteFailure N e2ap.proc.uout id-RICsubscriptionDelete
RICsubscriptionDeleteRequest N e2ap.proc.imsg id-RICsubscriptionDelete
RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDelete
#.FN_HDR E2setupFailure
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupFailure");
#.FN_HDR E2setupRequest
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupRequest");
#.FN_HDR E2setupResponse
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupResponse");
#.FN_HDR ErrorIndication
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication");
#.FN_HDR ResetRequest
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetRequest");
#.FN_HDR ResetResponse
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetResponse");
#.FN_HDR RICcontrolAcknowledge
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolAcknowledge");
#.FN_HDR RICcontrolFailure
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolFailure");
#.FN_HDR RICcontrolRequest
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolRequest");
#.FN_HDR RICindication
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICindication");
#.FN_HDR RICserviceQuery
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceQuery");
#.FN_HDR RICserviceUpdate
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdate");
#.FN_HDR RICserviceUpdateAcknowledge
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdateAcknowledge");
#.FN_HDR RICserviceUpdateFailure
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdateFailure");
#.FN_HDR RICsubscriptionFailure
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionFailure");
#.FN_HDR RICsubscriptionRequest
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionRequest");
#.FN_HDR RICsubscriptionResponse
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionResponse");
#.FN_HDR RICsubscriptionDeleteFailure
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteFailure");
#.FN_HDR RICsubscriptionDeleteRequest
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteRequest");
#.FN_HDR RICsubscriptionDeleteResponse
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteResponse");
#
# Editor modelines - https://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:
#

View File

@ -0,0 +1,426 @@
-- ASN1START
-- **************************************************************
-- E2SM-KPM
-- Information Element Definitions
--
-- **************************************************************
E2SM-KPM-IEs {
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2sm(2) e2sm-KPMMON-IEs (2)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
-- IEs
-- **************************************************************
-- **************************************************************
GlobalKPMnode-ID ::= CHOICE{
gNB GlobalKPMnode-gNB-ID,
en-gNB GlobalKPMnode-en-gNB-ID,
ng-eNB GlobalKPMnode-ng-eNB-ID,
eNB GlobalKPMnode-eNB-ID,
...
}
-- **************************************************************
GlobalKPMnode-gNB-ID ::= SEQUENCE{
global-gNB-ID GlobalgNB-ID,
gNB-CU-UP-ID GNB-CU-UP-ID OPTIONAL,
gNB-DU-ID GNB-DU-ID OPTIONAL,
...
}
--GlobalgNB-ID ::= SEQUENCE {
-- plmn-id PLMN-Identity,
-- gnb-id GNB-ID-Choice,
-- ...
--}
-- GNB-CU-UP-ID ::= INTEGER (0..68719476735)
-- GNB-DU-ID ::= INTEGER (0..68719476735)
-- GNB-ID-Choice ::= CHOICE {
-- gnb-ID BIT STRING (SIZE(22..32)),
-- ...
--}
-- **************************************************************
GlobalKPMnode-en-gNB-ID ::= SEQUENCE{
global-gNB-ID GlobalenGNB-ID,
...
}
--GlobalenGNB-ID ::= SEQUENCE {
-- pLMN-Identity PLMN-Identity,
-- gNB-ID ENGNB-ID,
-- ...
--}
--ENGNB-ID ::= CHOICE {
-- gNB-ID BIT STRING (SIZE (22..32)),
-- ...
--}
-- **************************************************************
GlobalKPMnode-ng-eNB-ID ::= SEQUENCE{
global-ng-eNB-ID GlobalngeNB-ID,
...
}
--GlobalngeNB-ID ::= SEQUENCE {
-- plmn-id PLMN-Identity,
-- enb-id ENB-ID-Choice,
-- ...
--}
--ENB-ID-Choice ::= CHOICE {
-- enb-ID-macro BIT STRING (SIZE(20)),
-- enb-ID-shortmacro BIT STRING (SIZE(18)),
-- enb-ID-longmacro BIT STRING (SIZE(21)),
-- ...
--}
-- **************************************************************
GlobalKPMnode-eNB-ID ::= SEQUENCE{
global-eNB-ID GlobalENB-ID,
...
}
--GlobalENB-ID ::= SEQUENCE {
-- pLMN-Identity PLMN-Identity,
-- eNB-ID ENB-ID,
-- ...
--}
--ENB-ID ::= CHOICE {
-- macro-eNB-ID BIT STRING (SIZE (20)),
-- home-eNB-ID BIT STRING (SIZE (28)),
-- ... ,
-- short-Macro-eNB-ID BIT STRING (SIZE(18)),
-- long-Macro-eNB-ID BIT STRING (SIZE(21))
--}
NRCGI ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
nRCellIdentity NRCellIdentity
}
--PLMN-Identity ::= OCTET STRING (SIZE(3))
NRCellIdentity ::= BIT STRING (SIZE(36))
SNSSAI ::= SEQUENCE {
sST OCTET STRING (SIZE(1)),
sD OCTET STRING (SIZE(3)) OPTIONAL
}
-- **************************************************************
--
-- Lists
--
-- **************************************************************
maxofMessageProtocolTests INTEGER ::= 15
maxofRICstyles INTEGER ::= 63
maxnoofQCI INTEGER ::= 256
maxnoofQoSFlows INTEGER ::= 64
maxnoofSliceItems INTEGER ::= 1024
maxnoofContainerListItems INTEGER ::= 3
maxCellingNBDU INTEGER ::= 512
maxofContainers INTEGER ::= 8
maxPLMN INTEGER ::= 12 -- Maximum number of PLMNs broadcast and reported by UE at establisghment
RIC-Style-Type ::= INTEGER
RIC-Style-Name ::= PrintableString(SIZE(1..150,...))
RIC-Format-Type ::= INTEGER
-- **************************************************************
-- E2SM-KPM Service model IEs
-- **************************************************************
-- **************************************************************
-- Event Trigger Definition OCTET STRING contents
-- **************************************************************
-- E2SM-KPM-EventTriggerDefinition IE
E2SM-KPM-EventTriggerDefinition ::= CHOICE{
eventDefinition-Format1 E2SM-KPM-EventTriggerDefinition-Format1,
...
}
-- E2SM-KPM-EventTriggerDefinition IE is used for Event Trigger Definition Format 1
E2SM-KPM-EventTriggerDefinition-Format1 ::= SEQUENCE{
policyTest-List SEQUENCE (SIZE(1..maxofMessageProtocolTests)) OF Trigger-ConditionIE-Item OPTIONAL,
...
}
-- **************************************************************
-- Action Definition OCTET STRING contents
-- **************************************************************
-- E2SM-KPM-ActionDefinition IE
E2SM-KPM-ActionDefinition ::= SEQUENCE{
ric-Style-Type RIC-Style-Type,
...
}
-- **************************************************************
-- Indication Header OCTET STRING contents
-- **************************************************************
-- E2SM-KPM-IndicationHeader IE
E2SM-KPM-IndicationHeader ::= CHOICE{
indicationHeader-Format1 E2SM-KPM-IndicationHeader-Format1,
...
}
-- E2SM-KPM-IndicationHeader Format 1
E2SM-KPM-IndicationHeader-Format1 ::= SEQUENCE{
id-GlobalKPMnode-ID GlobalKPMnode-ID OPTIONAL,
nRCGI NRCGI OPTIONAL,
pLMN-Identity PLMN-Identity OPTIONAL,
sliceID SNSSAI OPTIONAL,
fiveQI INTEGER (0..255) OPTIONAL,
qci INTEGER (0..255) OPTIONAL,
...
}
-- **************************************************************
-- Indication Message OCTET STRING contents
-- **************************************************************
-- E2SM-KPM-IndicationMessage IE
E2SM-KPM-IndicationMessage ::= CHOICE{
ric-Style-Type RIC-Style-Type,
indicationMessage-Format1 E2SM-KPM-IndicationMessage-Format1,
...
}
-- E2SM-KPM-IndicationMessage-Format 1 IE
E2SM-KPM-IndicationMessage-Format1 ::= SEQUENCE{
pm-Containers SEQUENCE (SIZE(1..maxCellingNBDU)) OF PM-Containers-List,
...
}
PM-Containers-List ::= SEQUENCE{
performanceContainer PF-Container OPTIONAL,
theRANContainer RAN-Container OPTIONAL,
...
}
-- ***************************************************************
-- RAN Function Description OCTET STRING contents
-- ***************************************************************
-- E2SM-KPM-RANfunction-Description
E2SM-KPM-RANfunction-Description ::= SEQUENCE{
ranFunction-Name RANfunction-Name,
e2SM-KPM-RANfunction-Item SEQUENCE{
ric-EventTriggerStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-EventTriggerStyle-List OPTIONAL,
ric-ReportStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-ReportStyle-List OPTIONAL,
...
},
...
}
-- ***************************************************************
-- commmon IEs
-- ***************************************************************
NI-Type ::= ENUMERATED{
x2-u,
xn-u,
f1-u,
...
}
RAN-Container ::= OCTET STRING
Trigger-ConditionIE-Item ::= SEQUENCE{
report-Period-IE RT-Period-IE,
...
}
RT-Period-IE ::= ENUMERATED{ ms10, ms20, ms32, ms40, ms60, ms64, ms70, ms80, ms128, ms160, ms256, ms320, ms512, ms640, ms1024, ms1280, ms2048, ms2560, ms5120, ms10240, ...}
RANcallProcess-ID-string ::= PrintableString(SIZE(1..150,...))
RANfunction-Name ::= SEQUENCE{
ranFunction-ShortName PrintableString(SIZE(1..150,...)),
ranFunction-E2SM-OID PrintableString(SIZE(1..1000,...)),
ranFunction-Description PrintableString(SIZE(1..150,...)),
ranFunction-Instance INTEGER OPTIONAL,
...
}
RIC-EventTriggerStyle-List ::= SEQUENCE{
ric-EventTriggerStyle-Type RIC-Style-Type,
ric-EventTriggerStyle-Name RIC-Style-Name,
ric-EventTriggerFormat-Type RIC-Format-Type,
...
}
RIC-ReportStyle-List ::= SEQUENCE{
ric-ReportStyle-Type RIC-Style-Type,
ric-ReportStyle-Name RIC-Style-Name,
ric-IndicationHeaderFormat-Type RIC-Format-Type,
ric-IndicationMessageFormat-Type RIC-Format-Type,
...
}
PF-Container ::= CHOICE {
oDU ODU-PF-Container,
oCU-CP OCUCP-PF-Container,
oCU-UP OCUUP-PF-Container
}
GNB-CU-CP-Name ::= PrintableString(SIZE(1..150,...))
GNB-DU-Name ::= PrintableString(SIZE(1..150,...))
GNB-CU-UP-Name ::= PrintableString(SIZE(1..150,...))
-- **************************************************************
-- O-DU Container IEs
-- **************************************************************
ODU-PF-Container ::= SEQUENCE{
cellResourceReportList SEQUENCE (SIZE(1..maxCellingNBDU)) OF CellResourceReportListItem,
...
}
CellResourceReportListItem ::= SEQUENCE{
nRCGI NRCGI,
dl-TotalofAvailablePRBs INTEGER (0..273) OPTIONAL,
ul-TotalofAvailablePRBs INTEGER (0..273) OPTIONAL,
servedPlmnPerCellList SEQUENCE (SIZE(1..maxPLMN)) OF ServedPlmnPerCellListItem,
...
}
ServedPlmnPerCellListItem ::= SEQUENCE{
pLMN-Identity PLMN-Identity,
du-PM-5GC FGC-DU-PM-Container OPTIONAL,
du-PM-EPC EPC-DU-PM-Container OPTIONAL,
...
}
FGC-DU-PM-Container ::= SEQUENCE{
slicePerPlmnPerCellList SEQUENCE (SIZE(1..maxnoofSliceItems)) OF SlicePerPlmnPerCellListItem,
...
}
SlicePerPlmnPerCellListItem ::= SEQUENCE{
sliceID SNSSAI,
fQIPERSlicesPerPlmnPerCellList SEQUENCE (SIZE(1..maxnoofQoSFlows)) OF FQIPERSlicesPerPlmnPerCellListItem,
...
}
FQIPERSlicesPerPlmnPerCellListItem ::= SEQUENCE{
fiveQI INTEGER (0..255),
dl-PRBUsage INTEGER (0..273) OPTIONAL,
ul-PRBUsage INTEGER (0..273) OPTIONAL,
...
}
EPC-DU-PM-Container ::= SEQUENCE{
perQCIReportList SEQUENCE (SIZE(1..maxnoofQCI)) OF PerQCIReportListItem,
...
}
PerQCIReportListItem ::= SEQUENCE{
qci INTEGER (0..255),
dl-PRBUsage INTEGER (0..100) OPTIONAL,
ul-PRBUsage INTEGER (0..100) OPTIONAL,
...
}
-- **************************************************************
-- O-CUCP Container IEs
-- **************************************************************
OCUCP-PF-Container ::= SEQUENCE{
gNB-CU-CP-Name GNB-CU-CP-Name OPTIONAL,
cu-CP-Resource-Status SEQUENCE {
numberOfActive-UEs INTEGER (1..65536, ...) OPTIONAL
}
}
-- **************************************************************
-- O-CU-UP Container IEs
-- **************************************************************
OCUUP-PF-Container ::= SEQUENCE{
gNB-CU-UP-Name GNB-CU-UP-Name OPTIONAL,
pf-ContainerList SEQUENCE (SIZE(1..maxnoofContainerListItems)) OF PF-ContainerListItem,
...
}
PF-ContainerListItem ::= SEQUENCE{
interface-type NI-Type,
o-CU-UP-PM-Container CUUPMeasurement-Container,
...
}
CUUPMeasurement-Container ::= SEQUENCE{
plmnList SEQUENCE (SIZE(1.. maxPLMN)) OF PlmnID-List,
...
}
PlmnID-List ::= SEQUENCE{
pLMN-Identity PLMN-Identity,
cu-UP-PM-5GC FGC-CUUP-PM-Format OPTIONAL,
cu-UP-PM-EPC EPC-CUUP-PM-Format OPTIONAL,
...
}
FGC-CUUP-PM-Format ::= SEQUENCE{
sliceToReportList SEQUENCE (SIZE(1..maxnoofSliceItems)) OF SliceToReportListItem,
...
}
SliceToReportListItem ::= SEQUENCE{
sliceID SNSSAI,
fQIPERSlicesPerPlmnList SEQUENCE (SIZE(1..maxnoofQoSFlows)) OF FQIPERSlicesPerPlmnListItem,
...
}
FQIPERSlicesPerPlmnListItem ::= SEQUENCE{
fiveQI INTEGER (0..255),
pDCPBytesDL INTEGER (0..10000000000,...) OPTIONAL,
pDCPBytesUL INTEGER (0..10000000000,...) OPTIONAL,
...
}
EPC-CUUP-PM-Format ::= SEQUENCE{
perQCIReportList SEQUENCE (SIZE(1..maxnoofQCI)) OF PerQCIReportListItemFormat,
...
}
PerQCIReportListItemFormat ::= SEQUENCE{
qci INTEGER (0..255),
pDCPBytesDL INTEGER (0..10000000000,...) OPTIONAL,
pDCPBytesUL INTEGER (0..10000000000,...) OPTIONAL,
...
}
END
-- ASN1STOP

View File

@ -0,0 +1,284 @@
/* packet-e2ap.c
* Routines for E2APApplication Protocol (e2ap) packet dissection
* Copyright 2021, Martin Mathieson
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*
* References: ORAN-WG3.E2AP-v01.00, ORAN-WG3.E2SM-KPM-v01.00
*/
#include "config.h"
#include <stdio.h>
#include <epan/packet.h>
#include <epan/strutil.h>
#include <epan/asn1.h>
#include <epan/prefs.h>
#include <epan/sctpppids.h>
#include <epan/expert.h>
#include <epan/proto_data.h>
#include <epan/conversation.h>
#include <epan/exceptions.h>
#include <epan/show_exception.h>
#include "packet-e2ap.h"
#include "packet-per.h"
#define PNAME "E2 Application Protocol"
#define PSNAME "E2AP"
#define PFNAME "e2ap"
/* Dissector will use SCTP PPID 18 or SCTP port. IANA assigned port = 37464 */
#define SCTP_PORT_E2AP 37464
void proto_register_e2ap(void);
void proto_reg_handoff_e2ap(void);
static dissector_handle_t e2ap_handle;
#include "packet-e2ap-val.h"
/* Initialize the protocol and registered fields */
static int proto_e2ap = -1;
#include "packet-e2ap-hf.c"
/* Initialize the subtree pointers */
static gint ett_e2ap = -1;
#include "packet-e2ap-ett.c"
enum{
INITIATING_MESSAGE,
SUCCESSFUL_OUTCOME,
UNSUCCESSFUL_OUTCOME
};
typedef struct _e2ap_ctx_t {
guint32 message_type;
guint32 ProcedureCode;
guint32 ProtocolIE_ID;
guint32 ProtocolExtensionID;
} e2ap_ctx_t;
struct e2ap_private_data {
guint32 procedure_code;
guint32 protocol_ie_id;
guint32 protocol_extension_id;
guint32 message_type;
guint32 ran_ue_e2ap_id;
};
/* Global variables */
static guint gbl_e2apSctpPort = SCTP_PORT_E2AP;
/* Dissector tables */
static dissector_table_t e2ap_ies_dissector_table;
//static dissector_table_t e2ap_ies_p1_dissector_table;
//static dissector_table_t e2ap_ies_p2_dissector_table;
static dissector_table_t e2ap_extension_dissector_table;
static dissector_table_t e2ap_proc_imsg_dissector_table;
static dissector_table_t e2ap_proc_sout_dissector_table;
static dissector_table_t e2ap_proc_uout_dissector_table;
static dissector_table_t e2ap_n2_ie_type_dissector_table;
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
/* Currently not used
static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
*/
/* Forward declarations */
static int dissect_E2SM_KPM_ActionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_E2SM_KPM_RANfunction_Description_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_E2SM_KPM_EventTriggerDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_E2SM_KPM_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_RANcallProcess_ID_string_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_E2SM_KPM_IndicationMessage_Format1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
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 struct e2ap_private_data*
e2ap_get_private_data(packet_info *pinfo)
{
struct e2ap_private_data *e2ap_data = (struct e2ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_e2ap, 0);
if (!e2ap_data) {
e2ap_data = wmem_new0(pinfo->pool, struct e2ap_private_data);
p_add_proto_data(pinfo->pool, pinfo, proto_e2ap, 0, e2ap_data);
}
return e2ap_data;
}
#include "packet-e2ap-fn.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
e2ap_ctx_t e2ap_ctx;
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
e2ap_ctx.message_type = e2ap_data->message_type;
e2ap_ctx.ProcedureCode = e2ap_data->procedure_code;
e2ap_ctx.ProtocolIE_ID = e2ap_data->protocol_ie_id;
e2ap_ctx.ProtocolExtensionID = e2ap_data->protocol_extension_id;
return (dissector_try_uint_new(e2ap_ies_dissector_table, e2ap_data->protocol_ie_id, tvb, pinfo, tree, FALSE, &e2ap_ctx)) ? tvb_captured_length(tvb) : 0;
}
/* Currently not used
static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
return (dissector_try_uint(e2ap_ies_p1_dissector_table, e2ap_data->protocol_ie_id, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
return (dissector_try_uint(e2ap_ies_p2_dissector_table, e2ap_data->protocol_ie_id, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
}
*/
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
return (dissector_try_uint_new(e2ap_proc_imsg_dissector_table, e2ap_data->procedure_code, tvb, pinfo, tree, TRUE, data)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
return (dissector_try_uint_new(e2ap_proc_sout_dissector_table, e2ap_data->procedure_code, tvb, pinfo, tree, TRUE, data)) ? tvb_captured_length(tvb) : 0;
}
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
{
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
return (dissector_try_uint_new(e2ap_proc_uout_dissector_table, e2ap_data->procedure_code, tvb, pinfo, tree, TRUE, data)) ? tvb_captured_length(tvb) : 0;
}
static int
dissect_e2ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
proto_item *e2ap_item = NULL;
proto_tree *e2ap_tree = NULL;
/* make entry in the Protocol column on summary display */
col_set_str(pinfo->cinfo, COL_PROTOCOL, "E2AP");
/* ensure that parent dissector is not e2ap before clearing fence */
col_clear(pinfo->cinfo, COL_INFO);
/* create the e2ap protocol tree */
e2ap_item = proto_tree_add_item(tree, proto_e2ap, tvb, 0, -1, ENC_NA);
e2ap_tree = proto_item_add_subtree(e2ap_item, ett_e2ap);
return dissect_E2AP_PDU_PDU(tvb, pinfo, e2ap_tree, NULL);
}
/*--- proto_reg_handoff_e2ap ---------------------------------------*/
void
proto_reg_handoff_e2ap(void)
{
static gboolean Initialized=FALSE;
static guint SctpPort;
if (!Initialized) {
dissector_add_for_decode_as("sctp.port", e2ap_handle);
#if 0
/* TODO: should one or more of these be registered? */
dissector_add_uint("sctp.ppi", E2_CP_PROTOCOL_ID, e2ap_handle);
dissector_add_uint("sctp.ppi", E2_UP_PROTOCOL_ID, e2ap_handle);
dissector_add_uint("sctp.ppi", E2_DU_PROTOCOL_ID, e2ap_handle);
#endif
Initialized=TRUE;
#include "packet-e2ap-dis-tab.c"
} else {
if (SctpPort != 0) {
dissector_delete_uint("sctp.port", SctpPort, e2ap_handle);
}
}
SctpPort=gbl_e2apSctpPort;
if (SctpPort != 0) {
dissector_add_uint("sctp.port", SctpPort, e2ap_handle);
}
}
/*--- proto_register_e2ap -------------------------------------------*/
void proto_register_e2ap(void) {
/* List of fields */
static hf_register_info hf[] = {
#include "packet-e2ap-hfarr.c"
};
/* List of subtrees */
static gint *ett[] = {
&ett_e2ap,
#include "packet-e2ap-ettarr.c"
};
module_t *e2ap_module;
/* Register protocol */
proto_e2ap = proto_register_protocol(PNAME, PSNAME, PFNAME);
/* Register fields and subtrees */
proto_register_field_array(proto_e2ap, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
/* Register dissector */
e2ap_handle = register_dissector("e2ap", dissect_e2ap, proto_e2ap);
/* Register dissector tables */
e2ap_ies_dissector_table = register_dissector_table("e2ap.ies", "E2AP-PROTOCOL-IES", proto_e2ap, FT_UINT32, BASE_DEC);
// e2ap_ies_p1_dissector_table = register_dissector_table("e2ap.ies.pair.first", "E2AP-PROTOCOL-IES-PAIR FirstValue", proto_e2ap, FT_UINT32, BASE_DEC);
// e2ap_ies_p2_dissector_table = register_dissector_table("e2ap.ies.pair.second", "E2AP-PROTOCOL-IES-PAIR SecondValue", proto_e2ap, FT_UINT32, BASE_DEC);
e2ap_extension_dissector_table = register_dissector_table("e2ap.extension", "E2AP-PROTOCOL-EXTENSION", proto_e2ap, FT_UINT32, BASE_DEC);
e2ap_proc_imsg_dissector_table = register_dissector_table("e2ap.proc.imsg", "E2AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_e2ap, FT_UINT32, BASE_DEC);
e2ap_proc_sout_dissector_table = register_dissector_table("e2ap.proc.sout", "E2AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_e2ap, FT_UINT32, BASE_DEC);
e2ap_proc_uout_dissector_table = register_dissector_table("e2ap.proc.uout", "E2AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_e2ap, FT_UINT32, BASE_DEC);
e2ap_n2_ie_type_dissector_table = register_dissector_table("e2ap.n2_ie_type", "E2AP N2 IE Type", proto_e2ap, FT_STRING, FALSE);
/* Register configuration options for ports */
e2ap_module = prefs_register_protocol(proto_e2ap, proto_reg_handoff_e2ap);
prefs_register_uint_preference(e2ap_module, "sctp.port",
"e2ap SCTP Port",
"Set the SCTP port for e2ap messages",
10,
&gbl_e2apSctpPort);
}
/*
* 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

View File

@ -0,0 +1,42 @@
/* Do not modify this file. Changes will be overwritten. */
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-e2ap.h */
/* asn2wrs.py -p e2ap -c ./e2ap.cnf -s ./packet-e2ap-template -D . -O ../.. E2AP-CommonDataTypes.asn E2AP-Constants.asn E2AP-Containers.asn E2AP-IEs.asn E2AP-PDU-Contents.asn E2AP-PDU-Descriptions.asn e2sm-kpm-v1.asn */
/* Input file: packet-e2ap-template.h */
#line 1 "./asn1/e2ap/packet-e2ap-template.h"
/* packet-e2ap.h
* Routines for NG-RAN NG Application Protocol (NGAP) packet dissection
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef PACKET_E2AP_H
#define PACKET_E2AP_H
/*--- Included file: packet-e2ap-exp.h ---*/
#line 1 "./asn1/e2ap/packet-e2ap-exp.h"
/*--- End of included file: packet-e2ap-exp.h ---*/
#line 15 "./asn1/e2ap/packet-e2ap-template.h"
#endif /* PACKET_E2AP_H */
/*
* 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:
*/