E2AP 2.01

This commit is contained in:
Martin Mathieson 2022-10-27 12:45:17 +01:00 committed by Martin Mathieson
parent c8cf2f544c
commit d46e7f90f2
15 changed files with 14079 additions and 2703 deletions

View File

@ -25,7 +25,9 @@ set( ASN_FILE_LIST
E2AP-IEs.asn
E2AP-PDU-Contents.asn
E2AP-PDU-Descriptions.asn
e2sm-kpm-v1.asn
e2sm-v2.01.asn
e2sm-ric-v1.02.asn
e2sm-kpm-v2.02.asn
)
set( EXTRA_DIST

View File

@ -2,12 +2,12 @@
-- **************************************************************
--
-- Common definitions
-- Derived from 3GPP 38.413 v15.4.0
-- Derived from 3GPP 38.413 (NGAP)
--
-- **************************************************************
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) }
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-CommonDataTypes (3) }
DEFINITIONS AUTOMATIC TAGS ::=

View File

@ -6,15 +6,15 @@
-- **************************************************************
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) }
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-Constants (4) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
ProcedureCode,
ProtocolIE-ID
ProcedureCode,
ProtocolIE-ID
FROM E2AP-CommonDataTypes;
-- **************************************************************
@ -31,6 +31,10 @@ id-RICserviceQuery ProcedureCode ::= 6
id-RICserviceUpdate ProcedureCode ::= 7
id-RICsubscription ProcedureCode ::= 8
id-RICsubscriptionDelete ProcedureCode ::= 9
id-E2nodeConfigurationUpdate ProcedureCode ::= 10
id-E2connectionUpdate ProcedureCode ::= 11
id-RICsubscriptionDeleteRequired ProcedureCode ::= 12
id-E2removal ProcedureCode ::= 13
-- **************************************************************
--
@ -47,8 +51,12 @@ maxProtocolIEs INTEGER ::= 65535
--
-- **************************************************************
maxnoofErrors INTEGER ::= 256
maxofE2nodeComponents INTEGER ::= 1024
maxofRANfunctionID INTEGER ::= 256
maxofRICactionID INTEGER ::= 16
maxofTNLA INTEGER ::= 32
maxofRICrequestID INTEGER ::= 4294967295
-- **************************************************************
--
@ -87,7 +95,33 @@ id-RICrequestID ProtocolIE-ID ::= 29
id-RICsubscriptionDetails ProtocolIE-ID ::= 30
id-TimeToWait ProtocolIE-ID ::= 31
id-RICcontrolOutcome ProtocolIE-ID ::= 32
id-E2nodeComponentConfigUpdate ProtocolIE-ID ::= 33
id-E2nodeComponentConfigUpdate-Item ProtocolIE-ID ::= 34
id-E2nodeComponentConfigUpdateAck ProtocolIE-ID ::= 35
id-E2nodeComponentConfigUpdateAck-Item ProtocolIE-ID ::= 36
id-E2connectionSetup ProtocolIE-ID ::= 39
id-E2connectionSetupFailed ProtocolIE-ID ::= 40
id-E2connectionSetupFailed-Item ProtocolIE-ID ::= 41
id-E2connectionFailed-Item ProtocolIE-ID ::= 42
id-E2connectionUpdate-Item ProtocolIE-ID ::= 43
id-E2connectionUpdateAdd ProtocolIE-ID ::= 44
id-E2connectionUpdateModify ProtocolIE-ID ::= 45
id-E2connectionUpdateRemove ProtocolIE-ID ::= 46
id-E2connectionUpdateRemove-Item ProtocolIE-ID ::= 47
id-TNLinformation ProtocolIE-ID ::= 48
id-TransactionID ProtocolIE-ID ::= 49
id-E2nodeComponentConfigAddition ProtocolIE-ID ::= 50
id-E2nodeComponentConfigAddition-Item ProtocolIE-ID ::= 51
id-E2nodeComponentConfigAdditionAck ProtocolIE-ID ::= 52
id-E2nodeComponentConfigAdditionAck-Item ProtocolIE-ID ::= 53
id-E2nodeComponentConfigRemoval ProtocolIE-ID ::= 54
id-E2nodeComponentConfigRemoval-Item ProtocolIE-ID ::= 55
id-E2nodeComponentConfigRemovalAck ProtocolIE-ID ::= 56
id-E2nodeComponentConfigRemovalAck-Item ProtocolIE-ID ::= 57
id-E2nodeTNLassociationRemoval ProtocolIE-ID ::= 58
id-E2nodeTNLassociationRemoval-Item ProtocolIE-ID ::= 59
id-RICsubscriptionToBeRemoved ProtocolIE-ID ::= 60
id-RICsubscription-withCause-Item ProtocolIE-ID ::= 61
END
-- ASN1STOP

View File

@ -3,11 +3,11 @@
--
-- Container definitions
--
-- derived from 3GPP 38.413 v15.4.0
-- derived from 3GPP 38.413 (NGAP)
-- **************************************************************
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) }
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-Containers (5) }
DEFINITIONS AUTOMATIC TAGS ::=
@ -21,14 +21,12 @@ BEGIN
IMPORTS
Criticality,
Presence,
PrivateIE-ID,
ProtocolExtensionID,
ProtocolIE-ID
Criticality,
Presence,
ProtocolIE-ID
FROM E2AP-CommonDataTypes
maxProtocolIEs
maxProtocolIEs
FROM E2AP-Constants;
-- **************************************************************
@ -38,16 +36,16 @@ FROM E2AP-Constants;
-- **************************************************************
E2AP-PROTOCOL-IES ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&criticality Criticality,
&Value,
&presence Presence
&id ProtocolIE-ID UNIQUE,
&criticality Criticality,
&Value,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
@ -57,20 +55,20 @@ PRESENCE &presence
-- **************************************************************
E2AP-PROTOCOL-IES-PAIR ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&firstCriticality Criticality,
&FirstValue,
&secondCriticality Criticality,
&SecondValue,
&presence Presence
&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
ID &id
FIRST CRITICALITY &firstCriticality
FIRST TYPE &FirstValue
SECOND CRITICALITY &secondCriticality
SECOND TYPE &SecondValue
PRESENCE &presence
}
@ -83,16 +81,16 @@ PRESENCE &presence
-- **************************************************************
ProtocolIE-Container {E2AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-SingleContainer {E2AP-PROTOCOL-IES : IEsSetParam} ::=
ProtocolIE-Field {{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})
id E2AP-PROTOCOL-IES.&id ({IEsSetParam}),
criticality E2AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
value E2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
}
-- **************************************************************
@ -102,15 +100,15 @@ value E2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
-- **************************************************************
ProtocolIE-ContainerPair {E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-FieldPair {{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})
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})
}
-- **************************************************************
@ -120,12 +118,12 @@ secondValue E2AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
-- **************************************************************
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, E2AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-SingleContainer {{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}}
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-ContainerPair {{IEsSetParam}}
END

View File

@ -6,221 +6,315 @@
-- **************************************************************
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)}
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-IEs (2)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
Criticality,
Presence,
ProcedureCode,
ProtocolIE-ID,
TriggeringMessage
Criticality,
Presence,
ProcedureCode,
ProtocolIE-ID,
TriggeringMessage
FROM E2AP-CommonDataTypes
maxnoofErrors,
maxProtocolIEs
maxnoofErrors,
maxProtocolIEs
FROM E2AP-Constants;
-- A
-- **************************************************************
-- [New for E2AP v02.00] copied from 3GPP 38.413 (NGAP) IEs
-- **************************************************************
AMFName ::= PrintableString (SIZE(1..150, ...))
-- B
-- C
Cause ::= CHOICE {
ricRequest CauseRIC,
ricService CauseRICservice,
transport CauseTransport,
protocol CauseProtocol,
misc CauseMisc,
...
ricRequest CauseRICrequest,
ricService CauseRICservice,
e2Node CauseE2node,
transport CauseTransport,
protocol CauseProtocol,
misc CauseMisc,
...
}
CauseE2node ::= ENUMERATED {
e2node-component-unknown,
...
}
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,
...
control-processing-overload,
hardware-failure,
om-intervention,
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,
...
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,
...
}
CauseRICrequest ::= ENUMERATED {
ran-function-id-invalid,
action-not-supported,
excessive-actions,
duplicate-action,
duplicate-event-trigger,
function-resource-limit,
request-id-unknown,
inconsistent-action-subsequent-action-sequence,
control-message-invalid,
ric-call-process-id-invalid,
control-timer-expired,
control-failed-to-execute,
system-not-ready,
unspecified,
...
}
CauseRICservice ::= ENUMERATED{
function-not-required,
excessive-functions,
ric-resource-limit,
...
ran-function-not-supported,
excessive-functions,
ric-resource-limit,
...
}
CauseTransport ::= ENUMERATED {
unspecified,
transport-resource-unavailable,
...
unspecified,
transport-resource-unavailable,
...
}
-- **************************************************************
-- copied from 3GPP 38.413 NGAP IEs v15.5.0
-- copied from 3GPP 38.413 (NGAP) IEs
-- note: ie-Extensions removed
-- **************************************************************
CriticalityDiagnostics ::= SEQUENCE {
procedureCode ProcedureCode OPTIONAL,
triggeringMessage TriggeringMessage OPTIONAL,
procedureCriticality Criticality OPTIONAL,
ricRequestorID RICrequestID OPTIONAL,
iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
...
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,
...
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))
-- Following IE used to carry 3GPP defined SETUP and RAN Configuration messages defined in F1AP, E1AP, XnAP, etc.
E2nodeComponentConfiguration ::= SEQUENCE{
e2nodeComponentRequestPart OCTET STRING,
e2nodeComponentResponsePart OCTET STRING,
...
}
-- **************************************************************
-- 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)),
...
E2nodeComponentConfigurationAck ::= SEQUENCE{
updateOutcome ENUMERATED {success, failure, ...},
failureCause Cause OPTIONAL,
...
}
E2nodeComponentInterfaceType ::= ENUMERATED {ng, xn, e1, f1, w1, s1, x2,...}
E2nodeComponentID ::= CHOICE{
e2nodeComponentInterfaceTypeNG E2nodeComponentInterfaceNG,
e2nodeComponentInterfaceTypeXn E2nodeComponentInterfaceXn,
e2nodeComponentInterfaceTypeE1 E2nodeComponentInterfaceE1,
e2nodeComponentInterfaceTypeF1 E2nodeComponentInterfaceF1,
e2nodeComponentInterfaceTypeW1 E2nodeComponentInterfaceW1,
e2nodeComponentInterfaceTypeS1 E2nodeComponentInterfaceS1,
e2nodeComponentInterfaceTypeX2 E2nodeComponentInterfaceX2,
...
}
E2nodeComponentInterfaceE1 ::= SEQUENCE{
gNB-CU-CP-ID GNB-CU-UP-ID,
...
}
E2nodeComponentInterfaceF1 ::= SEQUENCE{
gNB-DU-ID GNB-DU-ID,
...
}
E2nodeComponentInterfaceNG ::= SEQUENCE{
amf-name AMFName,
...
}
E2nodeComponentInterfaceS1 ::= SEQUENCE{
mme-name MMEname,
...
}
E2nodeComponentInterfaceX2 ::= SEQUENCE{
global-eNB-ID GlobalENB-ID OPTIONAL,
global-en-gNB-ID GlobalenGNB-ID OPTIONAL,
...
}
E2nodeComponentInterfaceXn ::= SEQUENCE{
global-NG-RAN-Node-ID GlobalNG-RANNode-ID,
...
}
E2nodeComponentInterfaceW1 ::= SEQUENCE{
ng-eNB-DU-ID NGENB-DU-ID,
...
}
-- **************************************************************
-- copied from 3GPP X2AP IEs v15.4.0
-- copied from 3GPP 36.423 (X2AP) IEs
-- 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 (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 36.423 (X2AP) IEs
-- 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)),
...
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,
...
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,
...
global-en-gNB-ID GlobalenGNB-ID,
en-gNB-CU-UP-ID GNB-CU-UP-ID OPTIONAL,
en-gNB-DU-ID GNB-DU-ID OPTIONAL,
...
}
GlobalE2node-eNB-ID ::= SEQUENCE{
global-eNB-ID GlobalENB-ID,
...
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,
...
global-gNB-ID GlobalgNB-ID,
global-en-gNB-ID GlobalenGNB-ID OPTIONAL,
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,
...
global-ng-eNB-ID GlobalngeNB-ID,
global-eNB-ID GlobalENB-ID OPTIONAL,
ngENB-DU-ID NGENB-DU-ID OPTIONAL,
...
}
-- **************************************************************
-- copied from 3GPP X2AP IEs v15.4.0
-- copied from 3GPP 36.423 (X2AP) IEs
-- note: ie-Extensions removed
-- **************************************************************
GlobalENB-ID ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
eNB-ID ENB-ID,
...
pLMN-Identity PLMN-Identity,
eNB-ID ENB-ID,
...
}
-- **************************************************************
-- copied from 3GPP X2AP IEs v15.4.0
-- copied from 3GPP 36.423 (X2AP) IEs
-- 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,
...
pLMN-Identity PLMN-Identity,
gNB-ID ENGNB-ID,
...
}
-- **************************************************************
-- copied from 3GPP 38.423 v15.5.0 XnAP IEs
-- copied from 3GPP 38.423 (XnAP) IEs
-- **************************************************************
GlobalgNB-ID ::= SEQUENCE {
plmn-id PLMN-Identity,
gnb-id GNB-ID-Choice,
...
plmn-id PLMN-Identity,
gnb-id GNB-ID-Choice,
...
}
-- **************************************************************
-- copied from 3GPP 38.423 v15.5.0 XnAP IEs
-- copied from 3GPP 38.423 (XnAP) IEs
-- **************************************************************
GlobalngeNB-ID ::= SEQUENCE {
plmn-id PLMN-Identity,
enb-id ENB-ID-Choice,
...
plmn-id PLMN-Identity,
enb-id ENB-ID-Choice,
...
}
-- **************************************************************
-- [NEW for E2AP v02.00] copied from 3GPP 38.423 (XnAP) IEs
-- Note: extension field removed
-- **************************************************************
GlobalNG-RANNode-ID ::= CHOICE {
gNB GlobalgNB-ID,
ng-eNB GlobalngeNB-ID,
...
}
GlobalRIC-ID ::= SEQUENCE{
pLMN-Identity PLMN-Identity,
ric-ID BIT STRING (SIZE (20)),
...
pLMN-Identity PLMN-Identity,
ric-ID BIT STRING (SIZE (20)),
...
}
-- **************************************************************
-- copied from 3GPP 38.463 v15.5.0 E1AP IEs
-- copied from 3GPP 38.463 (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
-- copied from 3GPP 38.423 (XnAP) IEs
-- **************************************************************
GNB-ID-Choice ::= CHOICE {
gnb-ID BIT STRING (SIZE(22..32)),
...
gnb-ID BIT STRING (SIZE(22..32)),
...
}
-- H
-- I
@ -228,11 +322,24 @@ gnb-ID BIT STRING (SIZE(22..32)),
-- K
-- L
-- M
-- **************************************************************
-- [New for E2AP v02.00] copied from 3GPP 36.413 (S1AP) IEs
-- **************************************************************
MMEname ::= PrintableString (SIZE (1..150,...))
-- N
-- **************************************************************
-- copied from 3GPP 37.473 (W1AP) IEs
-- **************************************************************
NGENB-DU-ID ::= INTEGER (0..68719476735)
-- O
-- P
-- **************************************************************
-- copied from 3GPP X2AP IEs v15.4.0
-- copied from 3GPP 36.423 (X2AP) IEs
-- **************************************************************
PLMN-Identity ::= OCTET STRING (SIZE(3))
@ -245,6 +352,8 @@ RANfunctionDefinition ::= OCTET STRING
RANfunctionID ::= INTEGER (0..4095)
RANfunctionOID ::= PrintableString(SIZE(1..1000,...))
RANfunctionRevision ::= INTEGER (0..4095)
-- **************************************************************
@ -255,10 +364,10 @@ RICactionDefinition ::= OCTET STRING
RICactionID ::= INTEGER (0..255)
RICactionType ::= ENUMERATED{
report,
insert,
policy,
...
report,
insert,
policy,
...
}
-- **************************************************************
@ -267,10 +376,9 @@ policy,
RICcallProcessID ::= OCTET STRING
RICcontrolAckRequest ::= ENUMERATED{
noAck,
ack,
nAck,
...
noAck,
ack,
...
}
-- **************************************************************
@ -288,13 +396,6 @@ RICcontrolMessage ::= OCTET STRING
-- **************************************************************
RICcontrolOutcome ::= OCTET STRING
RICcontrolStatus ::= ENUMERATED{
success,
rejected,
failed,
...
}
-- **************************************************************
-- Following IE defined in E2SM
-- **************************************************************
@ -313,64 +414,74 @@ RICindicationMessage ::= OCTET STRING
RICindicationSN ::= INTEGER (0..65535)
RICindicationType ::= ENUMERATED{
report,
insert,
...
report,
insert,
...
}
RICrequestID ::= SEQUENCE {
ricRequestorID INTEGER (0..65535),
ricInstanceID INTEGER (0..65535),
...
ricRequestorID INTEGER (0..65535),
ricInstanceID INTEGER (0..65535),
...
}
RICsubsequentAction ::=SEQUENCE{
ricSubsequentActionType RICsubsequentActionType,
ricTimeToWait RICtimeToWait,
...
ricSubsequentActionType RICsubsequentActionType,
ricTimeToWait RICtimeToWait,
...
}
RICsubsequentActionType ::= ENUMERATED{
continue,
wait,
...
continue,
wait,
...
}
RICtimeToWait ::= ENUMERATED{
zero,
w1ms,
w2ms,
w5ms,
w10ms,
w20ms,
w30ms,
w40ms,
w50ms,
w100ms,
w200ms,
w500ms,
w1s,
w2s,
w5s,
w10s,
w20s,
w60s,
...
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
-- copied from 3GPP 38.413 (NGAP) IEs
-- **************************************************************
TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...}
TNLinformation ::= SEQUENCE{
tnlAddress BIT STRING (SIZE(1..160,...)),
tnlPort BIT STRING (SIZE(16)) OPTIONAL,
...
}
TNLusage ::= ENUMERATED{ric-service, support-function, both, ...}
TransactionID ::= INTEGER (0..255,...)
-- **************************************************************
-- copied from 3GPP 38.413 NGAP IEs v15.5.0
-- copied from 3GPP 38.413 (NGAP) IEs
-- **************************************************************
TypeOfError ::= ENUMERATED {
not-understood,
missing,
...
not-understood,
missing,
...
}
-- U

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@
-- **************************************************************
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) }
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version2 (2) e2ap(1) e2ap-PDU-Descriptions (0) }
DEFINITIONS AUTOMATIC TAGS ::=
@ -19,43 +19,57 @@ BEGIN
-- **************************************************************
IMPORTS
Criticality,
ProcedureCode
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
E2connectionUpdate,
E2connectionUpdateAcknowledge,
E2connectionUpdateFailure,
E2nodeConfigurationUpdate,
E2nodeConfigurationUpdateAcknowledge,
E2nodeConfigurationUpdateFailure,
E2setupFailure,
E2setupRequest,
E2setupResponse,
ErrorIndication,
ResetRequest,
ResetResponse,
RICcontrolAcknowledge,
RICcontrolFailure,
RICcontrolRequest,
RICindication,
RICserviceQuery,
RICserviceUpdate,
RICserviceUpdateAcknowledge,
RICserviceUpdateFailure,
RICsubscriptionFailure,
RICsubscriptionRequest,
RICsubscriptionResponse,
RICsubscriptionDeleteFailure,
RICsubscriptionDeleteRequest,
RICsubscriptionDeleteResponse,
RICsubscriptionDeleteRequired,
E2RemovalFailure,
E2RemovalRequest,
E2RemovalResponse
FROM E2AP-PDU-Contents
id-E2setup,
id-ErrorIndication,
id-Reset,
id-RICcontrol,
id-RICindication,
id-RICserviceQuery,
id-RICserviceUpdate,
id-RICsubscription,
id-RICsubscriptionDelete
id-E2connectionUpdate,
id-E2nodeConfigurationUpdate,
id-E2setup,
id-ErrorIndication,
id-Reset,
id-RICcontrol,
id-RICindication,
id-RICserviceQuery,
id-RICserviceUpdate,
id-RICsubscription,
id-RICsubscriptionDelete,
id-RICsubscriptionDeleteRequired,
id-E2removal
FROM E2AP-Constants;
-- **************************************************************
@ -65,19 +79,19 @@ FROM E2AP-Constants;
-- **************************************************************
E2AP-ELEMENTARY-PROCEDURE ::= CLASS {
&InitiatingMessage ,
&SuccessfulOutcome OPTIONAL ,
&UnsuccessfulOutcome OPTIONAL ,
&procedureCode ProcedureCode UNIQUE ,
&criticality Criticality DEFAULT ignore
&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]
INITIATING MESSAGE &InitiatingMessage
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
PROCEDURE CODE &procedureCode
[CRITICALITY &criticality]
}
-- **************************************************************
@ -87,28 +101,28 @@ PROCEDURE CODE &procedureCode
-- **************************************************************
E2AP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
...
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})
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})
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})
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})
}
-- **************************************************************
@ -118,26 +132,30 @@ value E2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({E2AP-ELEMENTARY-PROCEDU
-- **************************************************************
E2AP-ELEMENTARY-PROCEDURES E2AP-ELEMENTARY-PROCEDURE ::= {
E2AP-ELEMENTARY-PROCEDURES-CLASS-1 |
E2AP-ELEMENTARY-PROCEDURES-CLASS-2,
...
E2AP-ELEMENTARY-PROCEDURES-CLASS-1 |
E2AP-ELEMENTARY-PROCEDURES-CLASS-2,
...
}
E2AP-ELEMENTARY-PROCEDURES-CLASS-1 E2AP-ELEMENTARY-PROCEDURE ::= {
ricSubscription |
ricSubscriptionDelete |
ricServiceUpdate |
ricControl |
e2setup |
reset,
...
ricSubscription |
ricSubscriptionDelete |
ricServiceUpdate |
ricControl |
e2setup |
e2nodeConfigurationUpdate |
e2connectionUpdate |
reset |
e2removal,
...
}
E2AP-ELEMENTARY-PROCEDURES-CLASS-2 E2AP-ELEMENTARY-PROCEDURE ::= {
ricIndication |
ricServiceQuery |
errorIndication,
...
ricIndication |
ricServiceQuery |
errorIndication |
ricSubscriptionDeleteRequired,
...
}
-- **************************************************************
@ -146,71 +164,102 @@ errorIndication,
--
-- **************************************************************
-- New for v01.01
e2connectionUpdate E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E2connectionUpdate
SUCCESSFUL OUTCOME E2connectionUpdateAcknowledge
UNSUCCESSFUL OUTCOME E2connectionUpdateFailure
PROCEDURE CODE id-E2connectionUpdate
CRITICALITY reject
}
e2nodeConfigurationUpdate E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E2nodeConfigurationUpdate
SUCCESSFUL OUTCOME E2nodeConfigurationUpdateAcknowledge
UNSUCCESSFUL OUTCOME E2nodeConfigurationUpdateFailure
PROCEDURE CODE id-E2nodeConfigurationUpdate
CRITICALITY reject
}
-- New for v02.01
e2removal E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E2RemovalRequest
SUCCESSFUL OUTCOME E2RemovalResponse
UNSUCCESSFUL OUTCOME E2RemovalFailure
PROCEDURE CODE id-E2removal
CRITICALITY reject
}
e2setup E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E2setupRequest
SUCCESSFUL OUTCOME E2setupResponse
UNSUCCESSFUL OUTCOME E2setupFailure
PROCEDURE CODE id-E2setup
CRITICALITY reject
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
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
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
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
INITIATING MESSAGE RICindication
PROCEDURE CODE id-RICindication
CRITICALITY ignore
}
ricServiceQuery E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RICserviceQuery
PROCEDURE CODE id-RICserviceQuery
CRITICALITY ignore
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
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
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
INITIATING MESSAGE RICsubscriptionDeleteRequest
SUCCESSFUL OUTCOME RICsubscriptionDeleteResponse
UNSUCCESSFUL OUTCOME RICsubscriptionDeleteFailure
PROCEDURE CODE id-RICsubscriptionDelete
CRITICALITY reject
}
ricSubscriptionDeleteRequired E2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RICsubscriptionDeleteRequired
PROCEDURE CODE id-RICsubscriptionDeleteRequired
CRITICALITY ignore
}
END
-- ASN1STOP

View File

@ -17,18 +17,26 @@ ProtocolIE-ID
#.PDU
E2AP-PDU
E2SM-KPM-ActionDefinition
E2SM-KPM-RANfunction-Description
E2SM-KPM-EventTriggerDefinition
E2SM-KPM-ActionDefinition
E2SM-KPM-IndicationHeader
RANcallProcess-ID-string
E2SM-KPM-IndicationMessage-Format1
E2SM-KPM-IndicationMessage
E2SM-KPM-RANfunction-Description
#E2SM-KPM-CallProcessID (no such function)
E2SM-RC-EventTrigger
E2SM-RC-ActionDefinition
E2SM-RC-RANFunctionDefinition
E2SM-RC-IndicationMessage
E2SM-RC-IndicationHeader
E2SM-RC-CallProcessID
#.MAKE_ENUM
ProcedureCode
ProtocolIE-ID
#.NO_EMIT
#.OMIT_ASSIGNMENT
@ -38,20 +46,46 @@ 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
E2SM-RC-ControlOutcome
E2SM-RC-ControlOutcome-Format3
E2SM-RC-ControlOutcome-Format2
E2SM-RC-ControlOutcome-Format1
E2SM-RC-ControlOutcome-Format3-Item
E2SM-RC-ControlOutcome-Format2-Style-Item
E2SM-RC-ControlOutcome-Format1-Item
E2SM-RC-ControlMessage
E2SM-RC-ControlHeader
FreqBandNrItem
S-NSSAI
IndexToRFSP
EN-GNB-ID
SST
SD
SubscriberProfileIDforRFP
QoSID
GroupID
CoreCPID
E2RemovalFailure
E2RemovalResponse
E2RemovalRequest
E2SM-RC-ControlOutcome-Format2-ControlOutcome-Item
E2SM-RC-ControlMessage-Format2
E2SM-RC-ControlHeader-Format2
E2SM-RC-ControlHeader-Format1
E2SM-RC-ControlOutcome-Format2-RANP-Item
E2SM-RC-ControlMessage-Format2-Style-Item
E2SM-RC-ControlMessage-Format2-ControlAction-Item
E2SM-RC-ControlMessage-Format1
E2SM-RC-ControlMessage-Format1-Item
#.END
#.TYPE_ATTR
E2SM-KPM-IndicationMessage DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationMessage_vals)
#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)
#E2SM-KPM-IndicationHeader DISPLAY=BASE_DEC STRINGS=VALS(e2ap_E2SM_KPM_IndicationHeader_vals)
#.TYPE_RENAME
@ -97,7 +131,6 @@ SuccessfulOutcome/value successfulOutcome_value
# 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
@ -215,38 +248,73 @@ SuccessfulOutcome/value successfulOutcome_value
# 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);
# ################################################################################
# Calling in-depth definitions of E2AP OCTET STRING fields.
#.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);
/* Looking for shortName string near beginning of tvb */
gboolean found = FALSE;
for (int n=KPM_RANFUNCTIONS; n<MAX_RANFUNCTIONS; n++) {
guint32 tvb_len = tvb_captured_length(parameter_tvb);
guint name_len = (gint)strlen(g_ran_functioname_table[n].name);
for (int m=0; (m<30) && ((m+name_len+1))<tvb_len; m++) {
if (strcmp(tvb_get_ptr(parameter_tvb, m, name_len),
g_ran_functioname_table[n].name) == 0) {
/* Call the set's dissector */
g_ran_functioname_table[n].functions.ran_function_definition_dissector(parameter_tvb, actx->pinfo, tree, NULL);
found = TRUE;
break;
}
}
}
if (!found) {
proto_item *ti = proto_tree_add_item(tree, hf_e2ap_ran_function_name_not_recognised, tvb, 0, 0, ENC_NA);
expert_add_info_format(actx->pinfo, ti, &ei_e2ap_ran_function_names_no_match,
"ShortName does not match any known Service Model");
}
#.FN_BODY RICeventTriggerDefinition VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb);
if (functions && functions->ran_event_trigger_dissector) {
functions->ran_event_trigger_dissector(parameter_tvb, actx->pinfo, tree, NULL);
}
#.FN_BODY RICactionDefinition VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb);
if (functions && functions->ran_action_definition_dissector) {
functions->ran_action_definition_dissector(parameter_tvb, actx->pinfo, tree, NULL);
}
#.FN_BODY RICindicationHeader VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb);
if (functions && functions->ran_indication_header_dissector) {
functions->ran_indication_header_dissector(parameter_tvb, actx->pinfo, tree, NULL);
}
#.FN_BODY RICindicationMessage VAL_PTR = &parameter_tvb
tvbuff_t *parameter_tvb;
%(DEFAULT_BODY)s
ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb);
if (functions && functions->ran_indication_message_dissector) {
functions->ran_indication_message_dissector(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);
ran_function_pointers_t* functions = lookup_ranfunction_pointers(actx->pinfo, tree, parameter_tvb);
if (functions && functions->ran_callprocessid_dissector) {
functions->ran_callprocessid_dissector(parameter_tvb, actx->pinfo, tree, NULL);
}
# ################################################################################
@ -262,8 +330,9 @@ id-RICserviceQuery ProcedureCode
id-RICserviceUpdate ProcedureCode
id-RICsubscription ProcedureCode
id-RICsubscriptionDelete ProcedureCode
#id-E2nodeConfigurationUpdate ProcedureCode
#id-E2connectionUpdate ProcedureCode
id-E2nodeConfigurationUpdate ProcedureCode
id-E2connectionUpdate ProcedureCode
id-RICsubscriptionDeleteRequired ProcedureCode
@ -278,7 +347,6 @@ 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
@ -289,36 +357,48 @@ 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-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
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
id-E2nodeComponentConfigAddition ProtocolIE-ID
id-E2nodeComponentConfigAddition-Item ProtocolIE-ID
id-E2nodeComponentConfigAdditionAck ProtocolIE-ID
id-E2nodeComponentConfigAdditionAck-Item ProtocolIE-ID
id-E2nodeComponentConfigRemoval ProtocolIE-ID
id-E2nodeComponentConfigRemoval-Item ProtocolIE-ID
id-E2nodeComponentConfigRemovalAck ProtocolIE-ID
id-E2nodeComponentConfigRemovalAck-Item ProtocolIE-ID
id-E2nodeTNLassociationRemoval ProtocolIE-ID
id-E2nodeTNLassociationRemoval-Item ProtocolIE-ID
id-RICsubscriptionToBeRemoved ProtocolIE-ID
id-RICsubscription-withCause-Item ProtocolIE-ID
#.END
@ -328,7 +408,6 @@ id-RICcontrolOutcome ProtocolIE-ID
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
@ -343,7 +422,7 @@ 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-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
@ -351,7 +430,7 @@ 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
#RICcontrolStatus N e2ap.ies id-RICcontrolStatus
RICindicationHeader N e2ap.ies id-RICindicationHeader
RICindicationMessage N e2ap.ies id-RICindicationMessage
RICindicationSN N e2ap.ies id-RICindicationSN
@ -359,60 +438,50 @@ 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
#RICcontrolOutcome N e2ap.ies id-RICcontrolOutcome
E2nodeComponentConfigUpdate-List N e2ap.ies id-E2nodeComponentConfigUpdate
E2nodeComponentConfigUpdate-Item N e2ap.ies id-E2nodeComponentConfigUpdate-Item
E2nodeComponentConfigUpdateAck-List N e2ap.ies id-E2nodeComponentConfigUpdateAck
E2nodeComponentConfigUpdateAck-Item N e2ap.ies id-E2nodeComponentConfigUpdateAck-Item
E2connectionUpdate-List N e2ap.ies id-E2connectionSetup
E2connectionSetupFailed-List N e2ap.ies id-E2connectionSetupFailed
E2connectionSetupFailed-Item N e2ap.ies id-E2connectionSetupFailed-Item
#E2connectionSetupFailed-Item N e2ap.ies id-E2connectionFailed-Item
E2connectionUpdate-Item N e2ap.ies id-E2connectionUpdate-Item
E2connectionUpdate-List N e2ap.ies id-E2connectionUpdateAdd
E2connectionUpdate-List N e2ap.ies id-E2connectionUpdateModify
E2connectionUpdateRemove-List N e2ap.ies id-E2connectionUpdateRemove
E2connectionUpdateRemove-Item N e2ap.ies id-E2connectionUpdateRemove-Item
TNLinformation N e2ap.ies id-TNLinformation
TransactionID N e2ap.ies id-TransactionID
E2nodeComponentConfigAddition-List N e2ap.ies id-E2nodeComponentConfigAddition
E2nodeComponentConfigAddition-Item N e2ap.ies id-E2nodeComponentConfigAddition-Item
E2nodeComponentConfigAdditionAck-List N e2ap.ies id-E2nodeComponentConfigAdditionAck
E2nodeComponentConfigAdditionAck-Item N e2ap.ies id-E2nodeComponentConfigAdditionAck-Item
E2nodeComponentConfigRemoval-List N e2ap.ies id-E2nodeComponentConfigRemoval
E2nodeComponentConfigRemoval-Item N e2ap.ies id-E2nodeComponentConfigRemoval-Item
E2nodeComponentConfigRemovalAck-List N e2ap.ies id-E2nodeComponentConfigRemovalAck
E2nodeComponentConfigRemovalAck-Item N e2ap.ies id-E2nodeComponentConfigRemovalAck-Item
E2nodeTNLassociationRemoval-List N e2ap.ies id-E2nodeTNLassociationRemoval
E2nodeTNLassociationRemoval-Item N e2ap.ies id-E2nodeTNLassociationRemoval-Item
RICsubscription-List-withCause N e2ap.ies id-RICsubscriptionToBeRemoved
RICsubscription-withCause-Item N e2ap.ies id-RICsubscription-withCause-Item
# 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
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
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
@ -443,6 +512,46 @@ RICsubscriptionDeleteFailure N e2ap.proc.uout id-RICsubscriptionDele
RICsubscriptionDeleteRequest N e2ap.proc.imsg id-RICsubscriptionDelete
RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDelete
RICsubscriptionDeleteRequired N e2ap.proc.sout id-RICsubscriptionDeleteRequired
#.FN_BODY RANfunctionID VAL_PTR=&value
guint32 value;
%(DEFAULT_BODY)s
/* Store value in packet-private data */
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
e2ap_data->ran_function_id = value;
#.FN_BODY RANfunction-Name/ranFunction-ShortName
gint start_offset = offset;
%(DEFAULT_BODY)s
/* TODO: is there a nicer/reliable way to get PrintableString here (VAL_PTR won't get assigned..) */
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo);
ran_functionid_table_t *table = get_ran_functionid_table(actx->pinfo);
store_ran_function_mapping(actx->pinfo, table, e2ap_data->ran_function_id, tvb_get_ptr(tvb, (start_offset+15)/8, (offset-start_offset)/8));
#.FN_HDR E2connectionUpdate
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdate");
#.FN_HDR E2connectionUpdateAcknowledge
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdateAcknowledge");
#.FN_HDR E2connectionUpdateFailure
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2connectionUpdateFailure");
#.FN_HDR E2nodeConfigurationUpdate
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdate");
#.FN_HDR E2nodeConfigurationUpdateAcknowledge
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdateAcknowledge");
#.FN_HDR E2nodeConfigurationUpdateFailure
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2nodeConfigurationUpdateFailure");
#.FN_HDR E2setupFailure
@ -454,26 +563,28 @@ RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDele
#.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");
@ -481,10 +592,10 @@ RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDele
#.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");
@ -513,10 +624,8 @@ RICsubscriptionDeleteResponse N e2ap.proc.sout id-RICsubscriptionDele
#.FN_HDR RICsubscriptionDeleteResponse
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteResponse");
#.FN_HDR RICsubscriptionDeleteRequired
col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteRequired");
#

View File

@ -1,426 +0,0 @@
-- 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,389 @@
-- ASN1START
-- **************************************************************
-- E2SM-KPM Information Element Definitions
-- **************************************************************
E2SM-KPM-IEs {
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) oran(53148) e2(1) version2(2) e2sm(2) e2sm-KPMMON-IEs (2)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
-- IEs
-- **************************************************************
IMPORTS
CGI,
FiveQI,
PLMNIdentity,
QCI,
QosFlowIdentifier,
RANfunction-Name,
RIC-Format-Type,
RIC-Style-Name,
RIC-Style-Type,
-- TODO: removed hyphen
-- SNSSAI,
UEID
FROM E2SM-COMMON-IEs;
TimeStamp ::= OCTET STRING (SIZE(4))
GranularityPeriod ::= INTEGER (1.. 4294967295)
MeasurementType ::= CHOICE {
measName MeasurementTypeName,
measID MeasurementTypeID,
...
}
-- TODO: (copied from e2sm-kpm-v1.asn)
SNSSAI ::= SEQUENCE {
sST OCTET STRING (SIZE(1)),
sD OCTET STRING (SIZE(3)) OPTIONAL
}
MeasurementTypeName ::= PrintableString(SIZE(1.. 150, ...))
MeasurementTypeID ::= INTEGER (1.. 65536, ...)
MeasurementLabel ::= SEQUENCE {
noLabel ENUMERATED {true, ...} OPTIONAL,
-- TODO: changed from PLMNIdentity and S-NSSAI
plmnID PLMN-Identity OPTIONAL,
sliceID SNSSAI OPTIONAL,
fiveQI FiveQI OPTIONAL,
qFI QosFlowIdentifier OPTIONAL,
qCI QCI OPTIONAL,
qCImax QCI OPTIONAL,
qCImin QCI OPTIONAL,
aRPmax INTEGER (1.. 15, ...) OPTIONAL,
aRPmin INTEGER (1.. 15, ...) OPTIONAL,
bitrateRange INTEGER (1.. 65535, ...) OPTIONAL,
layerMU-MIMO INTEGER (1.. 65535, ...) OPTIONAL,
sUM ENUMERATED {true, ...} OPTIONAL,
distBinX INTEGER (1.. 65535, ...) OPTIONAL,
distBinY INTEGER (1.. 65535, ...) OPTIONAL,
distBinZ INTEGER (1.. 65535, ...) OPTIONAL,
preLabelOverride ENUMERATED {true, ...} OPTIONAL,
startEndInd ENUMERATED {start, end, ...} OPTIONAL,
min ENUMERATED {true, ...} OPTIONAL,
max ENUMERATED {true, ...} OPTIONAL,
avg ENUMERATED {true, ...} OPTIONAL,
...
}
TestCondInfo ::= SEQUENCE{
testType TestCond-Type,
testExpr TestCond-Expression OPTIONAL,
testValue TestCond-Value OPTIONAL,
...
}
TestCond-Type ::= CHOICE{
gBR ENUMERATED {true, ...},
aMBR ENUMERATED {true, ...},
isStat ENUMERATED {true, ...},
isCatM ENUMERATED {true, ...},
rSRP ENUMERATED {true, ...},
rSRQ ENUMERATED {true, ...},
...,
ul-rSRP ENUMERATED {true, ...},
cQI ENUMERATED {true, ...},
fiveQI ENUMERATED {true, ...},
qCI ENUMERATED {true, ...},
sNSSAI ENUMERATED {true, ...}
}
TestCond-Expression ::= ENUMERATED {
equal,
greaterthan,
lessthan,
contains,
present,
...
}
TestCond-Value ::= CHOICE{
valueInt INTEGER,
valueEnum INTEGER,
valueBool BOOLEAN,
valueBitS BIT STRING,
valueOctS OCTET STRING,
valuePrtS PrintableString,
...,
valueReal REAL
}
-- **************************************************************
-- Lists
-- **************************************************************
maxnoofCells INTEGER ::= 16384
maxnoofRICStyles INTEGER ::= 63
maxnoofMeasurementInfo INTEGER ::= 65535
maxnoofLabelInfo INTEGER ::= 2147483647
maxnoofMeasurementRecord INTEGER ::= 65535
maxnoofMeasurementValue INTEGER ::= 2147483647
maxnoofConditionInfo INTEGER ::= 32768
maxnoofUEID INTEGER ::= 65535
maxnoofConditionInfoPerSub INTEGER ::= 32768
maxnoofUEIDPerSub INTEGER ::= 65535
maxnoofUEMeasReport INTEGER ::= 65535
MeasurementInfoList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementInfoItem
MeasurementInfoItem ::= SEQUENCE {
measType MeasurementType,
labelInfoList LabelInfoList,
...
}
LabelInfoList ::= SEQUENCE (SIZE(1..maxnoofLabelInfo)) OF LabelInfoItem
LabelInfoItem ::= SEQUENCE {
measLabel MeasurementLabel,
...
}
MeasurementData ::= SEQUENCE (SIZE(1..maxnoofMeasurementRecord)) OF MeasurementDataItem
MeasurementDataItem ::= SEQUENCE {
measRecord MeasurementRecord,
incompleteFlag ENUMERATED {true, ...} OPTIONAL,
...
}
MeasurementRecord ::= SEQUENCE (SIZE(1..maxnoofMeasurementValue)) OF MeasurementRecordItem
MeasurementRecordItem ::= CHOICE {
integer INTEGER (0.. 4294967295),
real REAL,
noValue NULL,
...
}
MeasurementInfo-Action-List ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementInfo-Action-Item
MeasurementInfo-Action-Item ::= SEQUENCE {
measName MeasurementTypeName,
measID MeasurementTypeID OPTIONAL,
...
}
MeasurementCondList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementCondItem
MeasurementCondItem ::= SEQUENCE {
measType MeasurementType,
matchingCond MatchingCondList,
...
}
MeasurementCondUEidList ::= SEQUENCE (SIZE(1..maxnoofMeasurementInfo)) OF MeasurementCondUEidItem
MeasurementCondUEidItem ::= SEQUENCE {
measType MeasurementType,
matchingCond MatchingCondList,
matchingUEidList MatchingUEidList OPTIONAL,
...
}
MatchingCondList ::= SEQUENCE (SIZE(1..maxnoofConditionInfo)) OF MatchingCondItem
MatchingCondItem ::= CHOICE{
measLabel MeasurementLabel,
testCondInfo TestCondInfo,
...
}
MatchingUEidList ::= SEQUENCE (SIZE(1..maxnoofUEID)) OF MatchingUEidItem
MatchingUEidItem ::= SEQUENCE{
ueID UEID,
...
}
MatchingUeCondPerSubList ::= SEQUENCE (SIZE(1..maxnoofConditionInfoPerSub)) OF MatchingUeCondPerSubItem
MatchingUeCondPerSubItem ::= SEQUENCE{
testCondInfo TestCondInfo,
...
}
MatchingUEidPerSubList ::= SEQUENCE (SIZE(2..maxnoofUEIDPerSub)) OF MatchingUEidPerSubItem
MatchingUEidPerSubItem ::= SEQUENCE{
ueID UEID,
...
}
UEMeasurementReportList ::= SEQUENCE (SIZE(1..maxnoofUEMeasReport)) OF UEMeasurementReportItem
UEMeasurementReportItem ::= SEQUENCE{
ueID UEID,
measReport E2SM-KPM-IndicationMessage-Format1,
...
}
-- **************************************************************
-- E2SM-KPM Service Model IEs
-- **************************************************************
-- **************************************************************
-- Event Trigger Definition OCTET STRING contents
-- **************************************************************
E2SM-KPM-EventTriggerDefinition ::= SEQUENCE{
eventDefinition-formats CHOICE{
eventDefinition-Format1 E2SM-KPM-EventTriggerDefinition-Format1,
...
},
...
}
E2SM-KPM-EventTriggerDefinition-Format1 ::= SEQUENCE{
reportingPeriod INTEGER (1.. 4294967295),
...
}
-- **************************************************************
-- Action Definition OCTET STRING contents
-- **************************************************************
E2SM-KPM-ActionDefinition ::= SEQUENCE{
ric-Style-Type RIC-Style-Type,
actionDefinition-formats CHOICE{
actionDefinition-Format1 E2SM-KPM-ActionDefinition-Format1,
actionDefinition-Format2 E2SM-KPM-ActionDefinition-Format2,
actionDefinition-Format3 E2SM-KPM-ActionDefinition-Format3,
...,
actionDefinition-Format4 E2SM-KPM-ActionDefinition-Format4,
actionDefinition-Format5 E2SM-KPM-ActionDefinition-Format5
},
...
}
E2SM-KPM-ActionDefinition-Format1 ::= SEQUENCE {
measInfoList MeasurementInfoList,
granulPeriod GranularityPeriod,
cellGlobalID CGI OPTIONAL,
...
}
E2SM-KPM-ActionDefinition-Format2 ::= SEQUENCE {
ueID UEID,
subscriptInfo E2SM-KPM-ActionDefinition-Format1,
...
}
E2SM-KPM-ActionDefinition-Format3 ::= SEQUENCE {
measCondList MeasurementCondList,
granulPeriod GranularityPeriod,
cellGlobalID CGI OPTIONAL,
...
}
E2SM-KPM-ActionDefinition-Format4 ::= SEQUENCE {
matchingUeCondList MatchingUeCondPerSubList,
subscriptionInfo E2SM-KPM-ActionDefinition-Format1,
...
}
E2SM-KPM-ActionDefinition-Format5 ::= SEQUENCE {
matchingUEidList MatchingUEidPerSubList,
subscriptionInfo E2SM-KPM-ActionDefinition-Format1,
...
}
-- **************************************************************
-- Indication Header OCTET STRING contents
-- **************************************************************
E2SM-KPM-IndicationHeader ::= SEQUENCE{
indicationHeader-formats CHOICE{
indicationHeader-Format1 E2SM-KPM-IndicationHeader-Format1,
...
},
...
}
E2SM-KPM-IndicationHeader-Format1 ::= SEQUENCE{
colletStartTime TimeStamp,
fileFormatversion PrintableString (SIZE (0..15), ...) OPTIONAL,
senderName PrintableString (SIZE (0..400), ...) OPTIONAL,
senderType PrintableString (SIZE (0..8), ...) OPTIONAL,
vendorName PrintableString (SIZE (0..32), ...) OPTIONAL,
...
}
-- **************************************************************
-- Indication Message OCTET STRING contents
-- **************************************************************
E2SM-KPM-IndicationMessage ::= SEQUENCE{
indicationMessage-formats CHOICE{
indicationMessage-Format1 E2SM-KPM-IndicationMessage-Format1,
indicationMessage-Format2 E2SM-KPM-IndicationMessage-Format2,
...,
indicationMessage-Format3 E2SM-KPM-IndicationMessage-Format3
},
...
}
E2SM-KPM-IndicationMessage-Format1 ::= SEQUENCE {
measData MeasurementData,
measInfoList MeasurementInfoList OPTIONAL,
granulPeriod GranularityPeriod OPTIONAL,
...
}
E2SM-KPM-IndicationMessage-Format2 ::= SEQUENCE {
measData MeasurementData,
measCondUEidList MeasurementCondUEidList,
granulPeriod GranularityPeriod OPTIONAL,
...
}
E2SM-KPM-IndicationMessage-Format3 ::= SEQUENCE {
ueMeasReportList UEMeasurementReportList,
...
}
-- ***************************************************************
-- RAN Function Definition OCTET STRING contents
-- ***************************************************************
E2SM-KPM-RANfunction-Description ::= SEQUENCE{
ranFunction-Name RANfunction-Name,
ric-EventTriggerStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RIC-EventTriggerStyle-Item OPTIONAL,
ric-ReportStyle-List SEQUENCE (SIZE(1..maxnoofRICStyles)) OF RIC-ReportStyle-Item OPTIONAL,
...
}
RIC-EventTriggerStyle-Item ::= SEQUENCE{
ric-EventTriggerStyle-Type RIC-Style-Type,
ric-EventTriggerStyle-Name RIC-Style-Name,
ric-EventTriggerFormat-Type RIC-Format-Type,
...
}
RIC-ReportStyle-Item ::= SEQUENCE{
ric-ReportStyle-Type RIC-Style-Type,
ric-ReportStyle-Name RIC-Style-Name,
ric-ActionFormat-Type RIC-Format-Type,
measInfo-Action-List MeasurementInfo-Action-List,
ric-IndicationHeaderFormat-Type RIC-Format-Type,
ric-IndicationMessageFormat-Type RIC-Format-Type,
...
}
END
-- ASN1STOP

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,573 @@
-- ASN1START
-- **************************************************************
-- E2SM
-- Information Element Definitions
--
-- **************************************************************
E2SM-COMMON-IEs {
iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2sm(2) e2sm-COMMON-IEs (0)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- --------------------------------------------------
-- Constants
-- --------------------------------------------------
maxE1APid INTEGER ::= 65535
maxF1APid INTEGER ::= 4
-- IEs derived from 3GPP 36.423 (X2AP)
maxEARFCN INTEGER ::= 65535
-- IEs derived from 3GPP 38.473 (F1AP)
maxNRARFCN INTEGER ::= 3279165
maxnoofNrCellBands INTEGER ::= 32
-- --------------------------------------------------
-- E2SM Commmon IEs
-- --------------------------------------------------
CGI ::= CHOICE {
nR-CGI NR-CGI,
eUTRA-CGI EUTRA-CGI,
...
}
CoreCPID ::= CHOICE {
fiveGC GUAMI,
ePC GUMMEI,
...
}
InterfaceIdentifier ::= CHOICE {
nG InterfaceID-NG,
xN InterfaceID-Xn,
f1 InterfaceID-F1,
e1 InterfaceID-E1,
s1 InterfaceID-S1,
x2 InterfaceID-X2,
w1 InterfaceID-W1,
...
}
InterfaceID-NG ::= SEQUENCE {
guami GUAMI,
...
}
InterfaceID-Xn ::= SEQUENCE {
global-NG-RAN-ID GlobalNGRANNodeID,
...
}
InterfaceID-F1 ::= SEQUENCE {
globalGNB-ID GlobalGNB-ID,
gNB-DU-ID GNB-DU-ID,
...
}
InterfaceID-E1 ::= SEQUENCE {
globalGNB-ID GlobalGNB-ID,
gNB-CU-UP-ID GNB-CU-UP-ID,
...
}
InterfaceID-S1 ::= SEQUENCE {
gUMMEI GUMMEI,
...
}
InterfaceID-X2 ::= SEQUENCE {
nodeType CHOICE {
global-eNB-ID GlobalENB-ID,
global-en-gNB-ID GlobalenGNB-ID,
...
},
...
}
InterfaceID-W1 ::= SEQUENCE {
global-ng-eNB-ID GlobalNgENB-ID,
ng-eNB-DU-ID NGENB-DU-ID,
...
}
Interface-MessageID ::= SEQUENCE {
interfaceProcedureID INTEGER,
messageType ENUMERATED {initiatingMessage, successfulOutcome, unsuccessfulOutcome, ...},
...
}
InterfaceType ::= ENUMERATED {nG, xn, f1, e1, s1, x2, w1, ...}
GroupID ::= CHOICE {
fiveGC FiveQI,
ePC QCI,
...
}
QoSID ::= CHOICE {
fiveGC FiveQI,
ePC QCI,
...
}
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-Format-Type ::= INTEGER
RIC-Style-Type ::= INTEGER
RIC-Style-Name ::= PrintableString(SIZE(1..150,...))
RRC-MessageID ::= SEQUENCE {
rrcType CHOICE {
lTE RRCclass-LTE,
nR RRCclass-NR,
...
},
messageID INTEGER,
...
}
RRCclass-LTE ::= ENUMERATED {bCCH-BCH, bCCH-BCH-MBMS, bCCH-DL-SCH, bCCH-DL-SCH-BR, bCCH-DL-SCH-MBMS, mCCH, pCCH, dL-CCCH, dL-DCCH, uL-CCCH, uL-DCCH, sC-MCCH, ...}
RRCclass-NR ::= ENUMERATED {bCCH-BCH, bCCH-DL-SCH, dL-CCCH, dL-DCCH, pCCH, uL-CCCH, uL-CCCH1, uL-DCCH, ...}
ServingCell-ARFCN ::= CHOICE {
nR NR-ARFCN,
eUTRA E-UTRA-ARFCN,
...
}
ServingCell-PCI ::= CHOICE {
nR NR-PCI,
eUTRA E-UTRA-PCI,
...
}
UEID ::= CHOICE{
gNB-UEID UEID-GNB,
gNB-DU-UEID UEID-GNB-DU,
gNB-CU-UP-UEID UEID-GNB-CU-UP,
ng-eNB-UEID UEID-NG-ENB,
ng-eNB-DU-UEID UEID-NG-ENB-DU,
en-gNB-UEID UEID-EN-GNB,
eNB-UEID UEID-ENB,
...
}
UEID-GNB ::= SEQUENCE{
amf-UE-NGAP-ID AMF-UE-NGAP-ID,
guami GUAMI,
gNB-CU-UE-F1AP-ID-List UEID-GNB-CU-F1AP-ID-List OPTIONAL,
-- C-ifCUDUseparated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CU-DU separated gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. More than 1 F1AP ID shall be reported by E2 Node only when NR-DC is established.
gNB-CU-CP-UE-E1AP-ID-List UEID-GNB-CU-CP-E1AP-ID-List OPTIONAL,
-- C-ifCPUPseparated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CP-UP separated gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included.
ran-UEID RANUEID OPTIONAL,
m-NG-RAN-UE-XnAP-ID NG-RANnodeUEXnAPID OPTIONAL,
-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported by both MN and SN.
globalGNB-ID GlobalGNB-ID OPTIONAL,
-- This IE shall not be used. This IE is replaced with globalNG-RANNode-ID.
...,
globalNG-RANNode-ID GlobalNGRANNodeID OPTIONAL
-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported only by SN.
}
UEID-GNB-CU-CP-E1AP-ID-List ::= SEQUENCE (SIZE(1..maxE1APid)) OF UEID-GNB-CU-CP-E1AP-ID-Item
UEID-GNB-CU-CP-E1AP-ID-Item ::= SEQUENCE{
gNB-CU-CP-UE-E1AP-ID GNB-CU-CP-UE-E1AP-ID,
...
}
UEID-GNB-CU-F1AP-ID-List ::= SEQUENCE (SIZE(1..maxF1APid)) OF UEID-GNB-CU-CP-F1AP-ID-Item
UEID-GNB-CU-CP-F1AP-ID-Item ::= SEQUENCE{
gNB-CU-UE-F1AP-ID GNB-CU-UE-F1AP-ID,
...
}
UEID-GNB-DU ::= SEQUENCE{
gNB-CU-UE-F1AP-ID GNB-CU-UE-F1AP-ID,
ran-UEID RANUEID OPTIONAL,
...
}
UEID-GNB-CU-UP ::= SEQUENCE{
gNB-CU-CP-UE-E1AP-ID GNB-CU-CP-UE-E1AP-ID,
ran-UEID RANUEID OPTIONAL,
...
}
UEID-NG-ENB ::= SEQUENCE{
amf-UE-NGAP-ID AMF-UE-NGAP-ID,
guami GUAMI,
ng-eNB-CU-UE-W1AP-ID NGENB-CU-UE-W1AP-ID OPTIONAL,
-- C-ifCUDUseperated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CU-DU seperated ng-eNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included.
m-NG-RAN-UE-XnAP-ID NG-RANnodeUEXnAPID OPTIONAL,
-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported by both MN and SN.
globalNgENB-ID GlobalNgENB-ID OPTIONAL,
-- This IE shall not be used. This IE is replaced with globalNG-RANNode-ID.
...,
globalNG-RANNode-ID GlobalNGRANNodeID OPTIONAL
-- C-ifDCSetup: This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported only by SN.
}
UEID-NG-ENB-DU ::= SEQUENCE{
ng-eNB-CU-UE-W1AP-ID NGENB-CU-UE-W1AP-ID,
...
}
UEID-EN-GNB ::= SEQUENCE{
m-eNB-UE-X2AP-ID ENB-UE-X2AP-ID,
m-eNB-UE-X2AP-ID-Extension ENB-UE-X2AP-ID-Extension OPTIONAL,
globalENB-ID GlobalENB-ID,
gNB-CU-UE-F1AP-ID GNB-CU-UE-F1AP-ID OPTIONAL,
-- C-ifCUDUseperated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CU-DU seperated en-gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included.
gNB-CU-CP-UE-E1AP-ID-List UEID-GNB-CU-CP-E1AP-ID-List OPTIONAL,
-- C-ifCPUPseparated: This IE shall be present in messages from E2 Node to NearRT-RIC for a CP-UP separated en-gNB, whereas from NearRT-RIC to E2 Node messages, this IE may not be included.
ran-UEID RANUEID OPTIONAL,
...
}
UEID-ENB ::= SEQUENCE{
mME-UE-S1AP-ID MME-UE-S1AP-ID,
gUMMEI GUMMEI,
m-eNB-UE-X2AP-ID ENB-UE-X2AP-ID OPTIONAL,
-- This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported by MeNB and SeNB.
m-eNB-UE-X2AP-ID-Extension ENB-UE-X2AP-ID-Extension OPTIONAL,
globalENB-ID GlobalENB-ID OPTIONAL,
-- This IE shall be present in messages from E2 Node to NearRT-RIC if DC is established, whereas from NearRT-RIC to E2 Node messages, this IE may not be included. To be reported only by SeNB.
...
}
-- **************************************************************
-- 3GPP derived IEs
-- **************************************************************
-- NOTE:
-- - Extension fields removed and replaced with "..."
-- - IE names modified across all extracts to use "PLMNIdentity"
-- **************************************************************
-- IEs derived from 3GPP 36.413 (S1AP)
-- **************************************************************
-- **************************************************************
-- copied from v16.5.0
-- 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 v16.5.0
-- GlobalENB-ID ::= SEQUENCE {
-- pLMNIdentity PLMNIdentity,
-- eNB-ID ENB-ID,
-- ...
-- }
-- copied from v16.5.0
GUMMEI ::= SEQUENCE {
pLMN-Identity PLMNIdentity,
mME-Group-ID MME-Group-ID,
mME-Code MME-Code,
...
}
-- copied from v16.5.0
MME-Group-ID ::= OCTET STRING (SIZE (2))
-- copied from v16.5.0
MME-Code ::= OCTET STRING (SIZE (1))
-- copied from v16.5.0
MME-UE-S1AP-ID ::= INTEGER (0..4294967295)
-- copied from v16.5.0
QCI ::= INTEGER (0..255)
-- copied from v16.5.0
SubscriberProfileIDforRFP ::= INTEGER (1..256)
-- **************************************************************
-- IEs derived from 3GPP 36.423 (X2AP)
-- **************************************************************
-- Extension fields removed.
-- Note: to avoid duplicate names with NGAP, XnAP, etc.:
-- GNB-ID renamed ENGNB-ID,
-- GlobalGNB-ID renamed GlobalenGNB-ID,
-- UE-X2AP-ID renamed ENB-UE-X2AP-ID
-- UE-X2AP-ID-Extension renamed ENB-UE-X2AP-ID-Extension
-- **************************************************************
-- copied from v16.5.0
EN-GNB-ID ::= CHOICE {
en-gNB-ID BIT STRING (SIZE (22..32)),
...
}
-- copied from v16.5.0
ENB-UE-X2AP-ID ::= INTEGER (0..4095)
-- copied from v16.5.0
ENB-UE-X2AP-ID-Extension ::= INTEGER (0..4095, ...)
-- copied from v16.5.0
E-UTRA-ARFCN ::= INTEGER (0..maxEARFCN)
-- copied from v16.5.0
E-UTRA-PCI ::= INTEGER (0..503, ...)
-- copied from v16.5.0
E-UTRA-TAC ::= OCTET STRING (SIZE(2))
-- copied from v16.5.0
-- GlobalenGNB-ID ::= SEQUENCE {
-- pLMN-Identity PLMNIdentity,
-- en-gNB-ID EN-GNB-ID,
-- ...
-- }
-- **************************************************************
-- IEs derived from 3GPP 37.473 (W1AP)
-- **************************************************************
-- copied from v16.3.0
NGENB-CU-UE-W1AP-ID ::= INTEGER (0..4294967295)
-- copied from v16.3.0
-- NGENB-DU-ID ::= INTEGER (0..68719476735)
-- **************************************************************
-- IEs derived from 3GPP 38.413 (NGAP)
-- Extension fields removed and replaced with ...
-- **************************************************************
-- copied from v16.2.0
AMFPointer ::= BIT STRING (SIZE(6))
-- copied from v16.2.0
AMFRegionID ::= BIT STRING (SIZE(8))
-- copied from v16.2.0
AMFSetID ::= BIT STRING (SIZE(10))
-- copied from v16.2.0
AMF-UE-NGAP-ID ::= INTEGER (0..1099511627775)
-- copied from v16.2.0
EUTRACellIdentity ::= BIT STRING (SIZE(28))
-- copied from v16.2.0
EUTRA-CGI ::= SEQUENCE {
pLMNIdentity PLMNIdentity,
eUTRACellIdentity EUTRACellIdentity,
...
}
-- copied from v16.2.0
FiveQI ::= INTEGER (0..255, ...)
-- copied from v16.2.0
GlobalGNB-ID ::= SEQUENCE {
pLMNIdentity PLMNIdentity,
gNB-ID GNB-ID,
...
}
-- copied from v16.2.0
GlobalNgENB-ID ::= SEQUENCE {
pLMNIdentity PLMNIdentity,
ngENB-ID NgENB-ID,
...
}
-- copied from v16.2.0
GNB-ID ::= CHOICE {
gNB-ID BIT STRING (SIZE(22..32)),
...
}
-- copied from v16.2.0
GUAMI ::= SEQUENCE {
pLMNIdentity PLMNIdentity,
aMFRegionID AMFRegionID,
aMFSetID AMFSetID,
aMFPointer AMFPointer,
...
}
-- copied from v16.2.0
IndexToRFSP ::= INTEGER (1..256, ...)
-- copied from v16.2.0
NgENB-ID ::= CHOICE {
macroNgENB-ID BIT STRING (SIZE(20)),
shortMacroNgENB-ID BIT STRING (SIZE(18)),
longMacroNgENB-ID BIT STRING (SIZE(21)),
...
}
-- copied from v16.2.0
NRCellIdentity ::= BIT STRING (SIZE(36))
-- copied from v16.2.0
-- NR-CGI ::= SEQUENCE {
-- pLMNIdentity PLMNIdentity,
-- nRCellIdentity NRCellIdentity,
-- ...
-- }
-- copied from v16.2.0
PLMNIdentity ::= OCTET STRING (SIZE(3))
-- copied from v16.2.0
QosFlowIdentifier ::= INTEGER (0..63, ...)
-- copied from v16.2.0
SD ::= OCTET STRING (SIZE(3))
-- copied from v16.2.0
S-NSSAI ::= SEQUENCE {
sST SST,
sD SD OPTIONAL,
...
}
-- copied from v16.2.0
SST ::= OCTET STRING (SIZE(1))
-- **************************************************************
-- IEs derived from 3GPP 38.423 (XnAP)
-- **************************************************************
-- copied from v16.2.0
NG-RANnodeUEXnAPID ::= INTEGER (0.. 4294967295)
GlobalNGRANNodeID ::= CHOICE {
gNB GlobalGNB-ID,
ng-eNB GlobalNgENB-ID,
...
}
-- **************************************************************
-- IEs derived from 3GPP 38.463 (E1AP)
-- **************************************************************
-- copied from v16.5.0
GNB-CU-CP-UE-E1AP-ID ::= INTEGER (0..4294967295)
-- copied from v16.5.0
-- GNB-CU-UP-ID ::= INTEGER (0..68719476735)
-- **************************************************************
-- IEs derived from 3GPP 38.473 (F1AP)
-- **************************************************************
-- copied from v16.5.0
FiveGS-TAC ::= OCTET STRING (SIZE(3))
-- copied from v16.5.0
FreqBandNrItem ::= SEQUENCE {
freqBandIndicatorNr INTEGER (1..1024, ...),
...
}
-- copied from v16.5.0
GNB-CU-UE-F1AP-ID ::= INTEGER (0..4294967295)
-- copied from v16.5.0
-- GNB-DU-ID ::= INTEGER (0..68719476735)
-- copied from v16.5.0
NR-PCI ::= INTEGER (0..1007)
-- copied from v16.5.0
NR-ARFCN ::= SEQUENCE {
nRARFCN INTEGER (0..maxNRARFCN),
...
}
-- copied from v16.5.0
NRFrequencyBand-List ::= SEQUENCE (SIZE(1..maxnoofNrCellBands)) OF NRFrequencyBandItem
-- copied from v16.5.0
NRFrequencyBandItem ::= SEQUENCE {
freqBandIndicatorNr INTEGER (1..1024,...),
supportedSULBandList SupportedSULBandList,
...
}
-- copied from v16.5.0
NRFrequencyInfo ::= SEQUENCE {
nrARFCN NR-ARFCN,
frequencyBand-List NRFrequencyBand-List,
frequencyShift7p5khz NRFrequencyShift7p5khz OPTIONAL,
...
}
-- copied from v16.5.0
NRFrequencyShift7p5khz ::= ENUMERATED {false, true, ...}
-- copied from v16.5.0
RANUEID ::= OCTET STRING (SIZE (8))
-- copied from v16.5.0
SupportedSULBandList ::= SEQUENCE (SIZE(0..maxnoofNrCellBands)) OF SupportedSULFreqBandItem
-- copied from v16.5.0
SupportedSULFreqBandItem ::= SEQUENCE {
freqBandIndicatorNr INTEGER (1..1024,...),
...
}
END
-- ASN1STOP

View File

@ -8,7 +8,7 @@
*
* SPDX-License-Identifier: GPL-2.0-or-later
*
* References: ORAN-WG3.E2AP-v01.00, ORAN-WG3.E2SM-KPM-v01.00
* References: ORAN-WG3.E2AP-v02.01, ORAN-WG3.E2SM-KPM-v02.02, ORAN-WG3.E2SM-RC.01.02
*/
#include "config.h"
@ -45,13 +45,37 @@ static dissector_handle_t e2ap_handle;
static int proto_e2ap = -1;
#include "packet-e2ap-hf.c"
static int hf_e2ap_unmapped_ran_function_id = -1;
static int hf_e2ap_ran_function_name_not_recognised = -1;
static int hf_e2ap_ran_function_setup_frame = -1;
/* Initialize the subtree pointers */
static gint ett_e2ap = -1;
static expert_field ei_e2ap_ran_function_names_no_match = EI_INIT;
static expert_field ei_e2ap_ran_function_id_not_mapped = EI_INIT;
#include "packet-e2ap-ett.c"
enum{
/* Forward declarations */
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_ActionDefinition_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_E2SM_KPM_IndicationMessage_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_RC_EventTrigger_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_E2SM_RC_ActionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_E2SM_RC_RANFunctionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_E2SM_RC_IndicationMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_E2SM_RC_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
static int dissect_E2SM_RC_CallProcessID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
enum {
INITIATING_MESSAGE,
SUCCESSFUL_OUTCOME,
UNSUCCESSFUL_OUTCOME
@ -72,37 +96,10 @@ struct e2ap_private_data {
guint32 protocol_extension_id;
guint32 message_type;
guint32 ran_ue_e2ap_id;
guint32 ran_function_id;
};
/* 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)
{
@ -114,6 +111,208 @@ e2ap_get_private_data(packet_info *pinfo)
return e2ap_data;
}
/****************************************************************************************************************/
/* We learn which set of RAN functions pointers corresponds to a given ranFunctionID when we see E2SetupRequest */
typedef int (*pdu_dissector_t)(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data);
/* Function pointers for a RANFunction */
typedef struct {
pdu_dissector_t ran_function_definition_dissector;
pdu_dissector_t ran_action_definition_dissector;
pdu_dissector_t ran_indication_message_dissector;
pdu_dissector_t ran_indication_header_dissector;
pdu_dissector_t ran_callprocessid_dissector;
pdu_dissector_t ran_event_trigger_dissector;
} ran_function_pointers_t;
typedef enum {
MIN_RANFUNCTIONS,
KPM_RANFUNCTIONS=0,
RIC_RANFUNCTIONS,
MAX_RANFUNCTIONS
} ran_function_t;
typedef struct {
const char* name;
ran_function_pointers_t functions;
} ran_function_name_mapping_t;
/* Static table mapping from string -> ran_function */
static const ran_function_name_mapping_t g_ran_functioname_table[MAX_RANFUNCTIONS] =
{
{ "ORAN-E2SM-KPM", { dissect_E2SM_KPM_RANfunction_Description_PDU,
dissect_E2SM_KPM_ActionDefinition_PDU,
dissect_E2SM_KPM_IndicationMessage_PDU,
dissect_E2SM_KPM_IndicationHeader_PDU,
NULL, /* no dissect_E2SM_KPM_CallProcessID_PDU */
dissect_E2SM_KPM_EventTriggerDefinition_PDU
}
},
{ "ORAN-E2SM-RC", { dissect_E2SM_RC_RANFunctionDefinition_PDU,
dissect_E2SM_RC_ActionDefinition_PDU,
dissect_E2SM_RC_IndicationMessage_PDU,
dissect_E2SM_RC_IndicationHeader_PDU,
dissect_E2SM_RC_CallProcessID_PDU,
dissect_E2SM_RC_EventTrigger_PDU
}
}
};
/* Per-conversation mapping: ranFunctionId -> ran_function */
typedef struct {
guint32 setup_frame;
guint32 ran_function_id;
ran_function_t ran_function;
ran_function_pointers_t *ran_function_pointers;
} ran_function_id_mapping_t;
typedef struct {
#define MAX_RANFUNCTION_ENTRIES 16
guint32 num_entries;
ran_function_id_mapping_t entries[MAX_RANFUNCTION_ENTRIES];
} ran_functionid_table_t;
const char *ran_function_to_str(ran_function_t ran_function)
{
switch (ran_function) {
case KPM_RANFUNCTIONS:
return "KPM";
case RIC_RANFUNCTIONS:
return "RIC";
default:
return "Unknown";
}
}
/* Get RANfunctionID table from conversation data */
ran_functionid_table_t* get_ran_functionid_table(packet_info *pinfo)
{
conversation_t *p_conv;
ran_functionid_table_t *p_conv_data = NULL;
/* Lookup conversation */
p_conv = find_conversation(pinfo->num, &pinfo->net_dst, &pinfo->net_src,
conversation_pt_to_endpoint_type(pinfo->ptype),
pinfo->destport, pinfo->srcport, 0);
if (!p_conv) {
/* None, so create new data and set */
p_conv = conversation_new(pinfo->num, &pinfo->net_dst, &pinfo->net_src,
conversation_pt_to_endpoint_type(pinfo->ptype),
pinfo->destport, pinfo->srcport, 0);
p_conv_data = (ran_functionid_table_t*)wmem_new0(wmem_file_scope(), ran_functionid_table_t);
conversation_add_proto_data(p_conv, proto_e2ap, p_conv_data);
}
else {
/* Will return existing conversation data */
p_conv_data = (ran_functionid_table_t*)conversation_get_proto_data(p_conv, proto_e2ap);
}
return p_conv_data;
}
/* Store new RANfunctionID -> Service Model mapping in table */
static void store_ran_function_mapping(packet_info *pinfo, ran_functionid_table_t *table, guint32 ran_function_id, const char *name)
{
/* Stop if already reached table limit */
if (table->num_entries == MAX_RANFUNCTION_ENTRIES) {
/* TODO: expert info warning? */
return;
}
ran_function_t ran_function = MAX_RANFUNCTIONS; /* i.e. invalid */
ran_function_pointers_t *ran_function_pointers = NULL;
/* Check known RAN functions */
for (int n=MIN_RANFUNCTIONS; n < MAX_RANFUNCTIONS; n++) {
/* TODO: shouldn't need to check both positions! */
if ((strcmp(name, g_ran_functioname_table[n].name) == 0) ||
(strcmp(name+1, g_ran_functioname_table[n].name) == 0)) {
ran_function = n;
ran_function_pointers = (ran_function_pointers_t*)&(g_ran_functioname_table[n].functions);
break;
}
}
/* Nothing to do if no matches */
if (ran_function == MAX_RANFUNCTIONS) {
return;
}
/* If ID already mapped, ignore */
for (guint n=0; n < table->num_entries; n++) {
if (table->entries[n].ran_function_id == ran_function_id) {
return;
}
}
/* OK, store this new entry */
guint idx = table->num_entries++;
table->entries[idx].setup_frame = pinfo->num;
table->entries[idx].ran_function_id = ran_function_id;
table->entries[idx].ran_function = ran_function;
table->entries[idx].ran_function_pointers = ran_function_pointers;
}
/* Look for Service Model function pointers, based on current RANFunctionID in pinfo */
ran_function_pointers_t* lookup_ranfunction_pointers(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb)
{
/* Get ranFunctionID from this frame */
struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo);
guint ran_function_id = e2ap_data->ran_function_id;
/* Look in table function pointers for this ranFunctionID */
ran_functionid_table_t *table = get_ran_functionid_table(pinfo);
for (guint n=0; n < table->num_entries; n++) {
if (ran_function_id == table->entries[n].ran_function_id) {
/* Point back at the setup frame where this ranfunction was mapped */
proto_item *ti = proto_tree_add_uint(tree, hf_e2ap_ran_function_setup_frame,
tvb, 0, 0, table->entries[n].setup_frame);
/* Also show that mapping */
proto_item_append_text(ti, " (%u -> %s)", table->entries[n].ran_function_id, ran_function_to_str(table->entries[n].ran_function));
proto_item_set_generated(ti);
return table->entries[n].ran_function_pointers;
}
}
/* No match found.. */
proto_item *ti = proto_tree_add_item(tree, hf_e2ap_unmapped_ran_function_id, tvb, 0, 0, ENC_NA);
expert_add_info_format(pinfo, ti, &ei_e2ap_ran_function_id_not_mapped,
"Service Model not mapped for FunctionID %u", ran_function_id);
return NULL;
}
/* 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);
*/
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 *);
#include "packet-e2ap-fn.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
@ -128,6 +327,9 @@ static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto
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)
{
@ -181,7 +383,6 @@ dissect_e2ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_
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);
}
@ -191,17 +392,12 @@ void
proto_reg_handoff_e2ap(void)
{
dissector_add_uint_with_preference("sctp.port", SCTP_PORT_E2AP, 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
#include "packet-e2ap-dis-tab.c"
}
/*--- proto_register_e2ap -------------------------------------------*/
void proto_register_e2ap(void) {
@ -209,7 +405,18 @@ void proto_register_e2ap(void) {
static hf_register_info hf[] = {
#include "packet-e2ap-hfarr.c"
{ &hf_e2ap_unmapped_ran_function_id,
{ "Unmapped RANfunctionID", "e2ap.unmapped-ran-function-id",
FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_e2ap_ran_function_name_not_recognised,
{ "RANfunction name not recognised", "e2ap.ran-function-name-not-recognised",
FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL }},
{ &hf_e2ap_ran_function_setup_frame,
{ "RANfunction setup frame", "e2ap.setup-frame",
FT_FRAMENUM, BASE_NONE, NULL, 0x0,
NULL, HFILL }}
};
/* List of subtrees */
@ -218,8 +425,12 @@ void proto_register_e2ap(void) {
#include "packet-e2ap-ettarr.c"
};
static ei_register_info ei[] = {
{ &ei_e2ap_ran_function_names_no_match, { "e2ap.ran-function-names-no-match", PI_PROTOCOL, PI_WARN, "RAN Function name doesn't match known service models", EXPFILL }},
{ &ei_e2ap_ran_function_id_not_mapped, { "e2ap.ran-function-id-not-known", PI_PROTOCOL, PI_WARN, "Service Model not known for RANFunctionID", EXPFILL }},
};
/* module_t *e2ap_module; */
expert_module_t* expert_e2ap;
/* Register protocol */
proto_e2ap = proto_register_protocol(PNAME, PSNAME, PFNAME);
@ -231,19 +442,19 @@ void proto_register_e2ap(void) {
/* Register dissector */
e2ap_handle = register_dissector("e2ap", dissect_e2ap, proto_e2ap);
expert_e2ap = expert_register_protocol(proto_e2ap);
expert_register_field_array(expert_e2ap, ei, array_length(ei));
/* 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_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, NULL); */
}
/*

File diff suppressed because it is too large Load Diff

View File

@ -815,7 +815,7 @@ class EthCtx:
#--- eth_reg_assign ---------------------------------------------------------
def eth_reg_assign(self, ident, val, virt=False):
#print "eth_reg_assign(ident='%s')" % (ident)
#print("eth_reg_assign(ident='%s')" % (ident), 'module=', self.Module())
if ident in self.assign:
raise DuplicateError("assignment", ident)
self.assign[ident] = { 'val' : val , 'virt' : virt }
@ -935,13 +935,14 @@ class EthCtx:
#--- eth_reg_type -----------------------------------------------------------
def eth_reg_type(self, ident, val, mod=None):
#print "eth_reg_type(ident='%s', type='%s')" % (ident, val.type)
#print("eth_reg_type(ident='%s', type='%s')" % (ident, val.type))
if ident in self.type:
if self.type[ident]['import'] and (self.type[ident]['import'] == self.Module()) :
# replace imported type
del self.type[ident]
self.type_imp.remove(ident)
else:
#print('DuplicateError: import=', self.type[ident]['import'], 'module=', self.Module())
raise DuplicateError("type", ident)
val.ident = ident
self.type[ident] = { 'val' : val, 'import' : None }