Initial work on a E-UTRAN X2 Application Protocol (X2AP) packet dissector.

svn path=/trunk/; revision=23886
This commit is contained in:
Anders Broman 2007-12-16 14:26:18 +00:00
parent fa34d46851
commit 2a7d7da157
11 changed files with 1880 additions and 0 deletions

26
asn1/x2ap/Makefile.am Normal file
View File

@ -0,0 +1,26 @@
# $Id$
#
#
# Wireshark - Network traffic analyzer
# By Gerald Combs <gerald@wireshark.org>
# Copyright 1998 Gerald Combs
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
include ../Makefile.preinc
include Makefile.common
include ../Makefile.inc

52
asn1/x2ap/Makefile.common Normal file
View File

@ -0,0 +1,52 @@
# $Id$
#
#
# Wireshark - Network traffic analyzer
# By Gerald Combs <gerald@wireshark.org>
# Copyright 1998 Gerald Combs
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
PROTOCOL_NAME = x2ap
DISSECTOR_FILES = \
packet-$(PROTOCOL_NAME).c
# NEED_PACKET_PROTO_H =
EXT_ASN_FILE_LIST =
ASN_FILE_LIST = \
X2AP-CommonDataTypes.asn \
X2AP-Constants.asn \
X2AP-Containers.asn \
X2AP-IEs.asn \
X2AP-PDU-Contents.asn \
X2AP-PDU-Descriptions.asn
EXTRA_DIST = \
$(ASN_FILE_LIST) \
packet-$(PROTOCOL_NAME)-template.c \
$(PROTOCOL_NAME).cnf
SRC_FILES = \
$(EXTRA_DIST) \
$(EXT_ASN_FILE_LIST)
A2W_FLAGS =
EXTRA_CNF =

29
asn1/x2ap/Makefile.nmake Normal file
View File

@ -0,0 +1,29 @@
## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
#
# $Id$
#
#
# Wireshark - Network traffic analyzer
# By Gerald Combs <gerald@wireshark.org>
# Copyright 1998 Gerald Combs
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
include ../../config.nmake
include ../Makefile.preinc.nmake
include Makefile.common
include ../Makefile.inc.nmake

View File

@ -0,0 +1,51 @@
-- $Id$
-- 3GPP TS 36.423 V8.0.0 (2007-12)
-- 9.3.6 Common Definitions
-- **************************************************************
--
-- Common definitions
--
-- **************************************************************
X2AP-CommonDataTypes {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-CommonDataTypes (3) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- Extension constants
--
-- **************************************************************
maxPrivateIEs INTEGER ::= 65535
maxProtocolExtensions INTEGER ::= 65535
maxProtocolIEs INTEGER ::= 65535
-- **************************************************************
--
-- Common Data Types
--
-- **************************************************************
Criticality ::= ENUMERATED { reject, ignore, notify }
Presence ::= ENUMERATED { optional, conditional, mandatory }
PrivateIE-ID ::= CHOICE {
local INTEGER (0.. maxPrivateIEs),
global OBJECT IDENTIFIER
}
ProcedureCode ::= INTEGER (0..255)
ProtocolIE-ID ::= INTEGER (0..maxProtocolIEs)
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome}
END

View File

@ -0,0 +1,92 @@
-- $Id$
-- 3GPP TS 36.423 V8.0.0 (2007-12)
-- 9.3.7 Constant Definitions
-- **************************************************************
--
-- Constant definitions
--
-- **************************************************************
X2AP-Constants {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-Constants (4) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
ProcedureCode,
ProtocolIE-ID
FROM X2AP-CommonDataTypes;
-- **************************************************************
--
-- Elementary Procedures
--
-- **************************************************************
id-handoverPreparation ProcedureCode ::= 0
id-handoverCancel ProcedureCode ::= 1
id-loadIndication ProcedureCode ::= 2
id-errorIndication ProcedureCode ::= 3
id-snStatusTransfer ProcedureCode ::= 4
id-releaseResource ProcedureCode ::= 5
id-x2Setup ProcedureCode ::= 6
id-reset ProcedureCode ::= 7
-- **************************************************************
--
-- Lists
--
-- **************************************************************
maxInterfaces INTEGER ::= 16 -- FFS Value to be checked
maxCellineNB INTEGER ::= 256 -- FFS Value to be checked
maxnoofCells INTEGER ::= 16 -- FFS Value to be checked
maxnoofBearers INTEGER ::= 16 -- FFS Value to be checked
maxNrOfErrors INTEGER ::= 256 -- FFS Value to be checked
maxnoofPDCP-SN INTEGER ::= 16 -- FFS Value to be checked
maxnoofEPLMNs INTEGER ::= 15
maxnoofEPLMNsPlusOne INTEGER ::= 16
maxnoofForbLACs INTEGER ::= 256 -- FFS Value to be checked
maxnoofForbTAIs INTEGER ::= 256 -- FFS Value to be checked
maxnoofBPLMNs INTEGER ::= 6
-- **************************************************************
--
-- IEs
--
-- **************************************************************
id-Bearers-Admitted-Item ProtocolIE-ID ::= 0
id-Bearers-Admitted-List ProtocolIE-ID ::= 1
id-Bearers-NotAdmitted-Item ProtocolIE-ID ::= 2
id-Bearers-NotAdmitted-List ProtocolIE-ID ::= 3
id-Bearers-ToBeSetup-Item ProtocolIE-ID ::= 4
id-Cause ProtocolIE-ID ::= 5
id-CellInformation ProtocolIE-ID ::= 6
id-CellInformation-Item ProtocolIE-ID ::= 7
id-InterfacesToTrace-Item ProtocolIE-ID ::= 8
id-New-eNB-UE-X2AP-ID ProtocolIE-ID ::= 9
id-Old-eNB-UE-X2AP-ID ProtocolIE-ID ::= 10
id-TargetCell-ID ProtocolIE-ID ::= 11
id-TargeteNBtoSource-eNBTransparentContainer ProtocolIE-ID ::= 12
id-TraceActivation ProtocolIE-ID ::= 13
id-UE-ContextInformation ProtocolIE-ID ::= 14
id-UE-HistoryInformation ProtocolIE-ID ::= 15
id-UE-X2AP-ID ProtocolIE-ID ::= 16
id-CriticalityDiagnostics ProtocolIE-ID ::= 17
id-Bearers-SubjectToStatusTransfer-List ProtocolIE-ID ::= 18
id-Bearers-SubjectToStatusTransfer-Item ProtocolIE-ID ::= 19
id-ServedCells ProtocolIE-ID ::= 20
id-ENB-ID ProtocolIE-ID ::= 21
id-TimeToWait ProtocolIE-ID ::= 22
END

View File

@ -0,0 +1,197 @@
-- $Id$
-- 3GPP TS 36.423 V1.0.1 (2007-10)
-- 9.3.8 Container Definitions
-- **************************************************************
--
-- Container definitions
--
-- **************************************************************
X2AP-Containers {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-Containers (5) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
maxPrivateIEs,
maxProtocolExtensions,
maxProtocolIEs,
Criticality,
Presence,
PrivateIE-ID,
ProtocolIE-ID
FROM X2AP-CommonDataTypes;
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
X2AP-PROTOCOL-IES ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&criticality Criticality,
&Value,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
X2AP-PROTOCOL-IES-PAIR ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&firstCriticality Criticality,
&FirstValue,
&secondCriticality Criticality,
&SecondValue,
&presence Presence
}
WITH SYNTAX {
ID &id
FIRST CRITICALITY &firstCriticality
FIRST TYPE &FirstValue
SECOND CRITICALITY &secondCriticality
SECOND TYPE &SecondValue
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol Extensions
--
-- **************************************************************
X2AP-PROTOCOL-EXTENSION ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&criticality Criticality,
&Extension,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
EXTENSION &Extension
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Private IEs
--
-- **************************************************************
X2AP-PRIVATE-IES ::= CLASS {
&id PrivateIE-ID,
&criticality Criticality,
&Value,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Container for Protocol IEs
--
-- **************************************************************
ProtocolIE-Container {X2AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Single-Container {X2AP-PROTOCOL-IES : IEsSetParam} ::=
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Field {X2AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
id X2AP-PROTOCOL-IES.&id ({IEsSetParam}),
criticality X2AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
value X2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container for Protocol IE Pairs
--
-- **************************************************************
ProtocolIE-ContainerPair {X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-FieldPair {{IEsSetParam}}
ProtocolIE-FieldPair {X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
id X2AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
firstCriticality X2AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
firstValue X2AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
secondCriticality X2AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
secondValue X2AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container Lists for Protocol IE Containers
--
-- **************************************************************
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, X2AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-Container {{IEsSetParam}}
ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-ContainerPair {{IEsSetParam}}
-- **************************************************************
--
-- Container for Protocol Extensions
--
-- **************************************************************
ProtocolExtensionContainer {X2AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
ProtocolExtensionField {{ExtensionSetParam}}
ProtocolExtensionField {X2AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
id X2AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
criticality X2AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
extensionValue X2AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
}
-- **************************************************************
--
-- Container for Private IEs
--
-- **************************************************************
PrivateIE-Container {X2AP-PRIVATE-IES : IEsSetParam} ::=
SEQUENCE (SIZE (1..maxPrivateIEs)) OF
PrivateIE-Field {{IEsSetParam}}
PrivateIE-Field {X2AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
id X2AP-PRIVATE-IES.&id ({IEsSetParam}),
criticality X2AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
value X2AP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
}
END

424
asn1/x2ap/X2AP-IEs.asn Normal file
View File

@ -0,0 +1,424 @@
-- $Id$
-- 3GPP TS 36.423 V8.0.0 (2007-12)
-- 9.3.5 Information Element Definitions
-- **************************************************************
--
-- Information Element Definitions
--
-- **************************************************************
X2AP-IEs {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-IEs (2) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
id-InterfacesToTrace-Item,
maxInterfaces,
maxNrOfErrors,
maxnoofCells,
maxnoofEPLMNs,
maxnoofEPLMNsPlusOne,
maxnoofForbLACs,
maxnoofForbTAIs,
maxCellineNB,
maxnoofBPLMNs
FROM X2AP-Constants
Criticality,
ProcedureCode,
ProtocolIE-ID,
TriggeringMessage
FROM X2AP-CommonDataTypes
ProtocolIE-Single-Container{},
ProtocolExtensionContainer{},
X2AP-PROTOCOL-IES,
X2AP-PROTOCOL-EXTENSION
FROM X2AP-Containers;
-- A
AggregateMaximumBitRate ::= SEQUENCE {
aggregateMaximumBitRateDownlink SAE-BearerBitRate,
aggregateMaximumBitRateUplink SAE-BearerBitRate,
...
}
-- B
Bearer-ID ::= BIT STRING (SIZE (8)) -- To be checked, FFS
BroadcastPLMNs-Item ::= SEQUENCE (SIZE(1..maxnoofBPLMNs)) OF PLMN-Identity
-- C
Cause ::= CHOICE {
radioNetwork CauseRadioNetwork,
transport CauseTransport,
protocol CauseProtocol,
misc CauseMisc,
...
}
CauseMisc ::= ENUMERATED {
control-processing-overload,
hardware-failure,
om-intervention,
not-enough-user-plane-processing-resources,
unspecified,
...
}
CauseProtocol ::= ENUMERATED {
transfer-syntax-error,
abstract-syntax-error-reject,
abstract-syntax-error-ignore-and-notify,
message-not-compatible-with-receiver-state,
semantic-error,
unspecified,
abstract-syntax-error-falsely-constructed-message,
...
}
CauseRadioNetwork ::= ENUMERATED {
unspecified,
...
}
CauseTransport ::= ENUMERATED {
transport-resource-unavailable,
unspecified,
...
}
CellType ::= ENUMERATED{
macro,
micro,
pico,
femto,
...
}
CellId ::= OCTET STRING
CGI ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
lAC LAC,
cI CI,
iE-Extensions ProtocolExtensionContainer { {CGI-ExtIEs} } OPTIONAL
}
CGI-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
CI ::= OCTET STRING (SIZE (2))
CriticalityDiagnostics ::= SEQUENCE {
procedureCode ProcedureCode OPTIONAL,
triggeringMessage TriggeringMessage OPTIONAL,
procedureCriticality Criticality OPTIONAL,
iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL,
...
}
CriticalityDiagnostics-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF
SEQUENCE {
iECriticality Criticality,
iE-ID ProtocolIE-ID,
typeOfError TypeOfError,
iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL,
...
}
CriticalityDiagnostics-IE-List-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- D
DL-data-received ::= INTEGER
DL-Forwarding ::= ENUMERATED {
dL-forwardingProposed,
...
}
-- E
ENB-ID ::= INTEGER (0..65535) -- Value to be checked FFS
EPLMNs ::= SEQUENCE (SIZE(1..maxnoofEPLMNs)) OF PLMN-Identity
-- F
ForbiddenInterRATs ::= ENUMERATED {
all,
gsm,
wcdma,
...
}
ForbiddenTAs ::= SEQUENCE (SIZE(1.. maxnoofEPLMNsPlusOne)) OF ForbiddenTAs-Item
ForbiddenTAs-Item ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
forbiddenTAIs ForbiddenTAIs
}
ForbiddenTAIs ::= SEQUENCE (SIZE(1..maxnoofForbTAIs)) OF TAI
ForbiddenLAs ::= SEQUENCE (SIZE(1..maxnoofEPLMNsPlusOne)) OF ForbiddenLAs-Item
ForbiddenLAs-Item ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
forbiddenLACs ForbiddenLACs
}
ForbiddenLACs ::= SEQUENCE (SIZE(1..maxnoofForbLACs)) OF LAC
Frequency ::= OCTET STRING
-- G
GTPtunnelEndpoint ::= SEQUENCE {
transportLayerAddress TransportLayerAddress,
gTP-TEID GTP-TEI,
iE-Extensions ProtocolExtensionContainer { {GTPtunnelEndpoint-ExtIEs} } OPTIONAL,
...
}
GTPtunnelEndpoint-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
GTP-TEI ::= OCTET STRING (SIZE (4))
-- H
HandoverRestrictionList ::= SEQUENCE {
equivalentPLMNs EPLMNs OPTIONAL,
forbiddenTAs ForbiddenTAs OPTIONAL,
forbiddenLAs ForbiddenLAs OPTIONAL,
forbiddenInterRATs ForbiddenInterRATs OPTIONAL,
iE-Extensions ProtocolExtensionContainer { {HandoverRestrictionList-ExtIEs} } OPTIONAL,
...
}
HandoverRestrictionList-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- I
InterfacesToTrace ::= SEQUENCE (SIZE(0..maxInterfaces)) OF ProtocolIE-Single-Container {{InterfacesToTrace-ItemIEs} }
InterfacesToTrace-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-InterfacesToTrace-Item CRITICALITY ignore TYPE InterfacesToTrace-Item PRESENCE mandatory }
}
InterfacesToTrace-Item ::= SEQUENCE {
traceInterface TraceInterface,
traceDepth TraceDepth,
iE-Extensions ProtocolExtensionContainer { {InterfacesToTrace-Item-ExtIEs} } OPTIONAL,
...
}
InterfacesToTrace-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
InterferenceOverloadIndication ::= OCTET STRING -- FFS
-- J
-- K
-- L
LAC ::= OCTET STRING (SIZE (2)) --(EXCEPT ('0000'H|'FFFE'H))
LastVisitedCell-Item ::= SEQUENCE {
global-Cell-ID CGI,
cellType CellType,
time-UE-StayedInCell Time-UE-StayedInCell OPTIONAL,
iE-Extensions ProtocolExtensionContainer { {LastVisitedCell-Item-ExtIEs} } OPTIONAL,
...
}
LastVisitedCell-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- M
-- N
-- O
-- P
PDCP-SN ::= INTEGER -- FFS
PhyCID ::= OCTET STRING
PLMN-Identity ::= OCTET STRING (SIZE(3))
-- Q
-- R
RB-type ::= INTEGER
-- Editors note: FFS To be replaced by other QCI definition, ENUMERATED??
RRC-Context ::= OCTET STRING
-- S
SAE-BearerBitRate ::= INTEGER (0..210000000000)
SAE-BearerLevel-QoS-Parameters ::= SEQUENCE {
label INTEGER (1..256),
allocationAndRetentionPriority OCTET STRING, --FFS
sAE-BearerType SAE-BearerType,
...
}
SAE-BearerType ::= CHOICE {
sAE-GBR-bearer SAE-GBR-bearer,
sAE-non-GBR-bearer SAE-Non-GBR-bearer,
...
}
SAE-GBR-Bearer ::= SEQUENCE {
sAE-Bearer-MaximumBitrateDL SAE-Bearer-BitRate,
sAE-Bearer-MaximumBitrateUL SAE-Bearer-BitRate,
sAE-Bearer-GuaranteedBitrateDL SAE-Bearer-BitRate,
sAE-Bearer-GuaranteedBitrateUL SAE-Bearer-BitRate,
iE-Extensions ProtocolExtensionContainer { {SAE-GBR-Bearer-Parameters-ExtIEs} } OPTIONAL,
...
}
SAE-GBR-Bearer-Parameters-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
SAE-non-GBR-Bearer ::= SEQUENCE {
sAE-non-GBR-Bearer-Type ENUMERATED {non-GBR-Bearer,...},
iE-Extensions ProtocolExtensionContainer { {SAE-non-GBR-Bearer-Parameters-ExtIEs} } OPTIONAL,
...
}
SAE-non-GBR-Bearer-Parameters-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
ServedCells ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ServedCell-Information
ServedCell-Information ::= SEQUENCE {
phyCID PhyCID,
cellId CellId,
tAI TAI,
broadcastPLMNs BroadcastPLMNs-Item,
frequency Frequency,
iE-Extensions ProtocolExtensionContainer { {ServedCell-Information-ExtIEs} } OPTIONAL,
...
}
ServedCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- T
TAI ::= OCTET STRING -- FFS
TargeteNBtoSource-eNBTransparentContainer ::= OCTET STRING
Time-UE-StayedInCell ::= INTEGER
TimeToWait ::= OCTET STRING
TraceActivation ::= SEQUENCE {
traceReference TraceReference,
interfacesToTrace InterfacesToTrace,
iE-Extensions ProtocolExtensionContainer { {TraceActivation-ExtIEs} } OPTIONAL,
...
}
TraceActivation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
TraceDepth ::= ENUMERATED {
minimum,
medium,
maximum,
...
}
TraceInterface ::= ENUMERATED {
s1,
x2,
uu,
...
}
TraceReference ::= OCTET STRING (SIZE (3))
TransportLayerAddress ::= BIT STRING (SIZE(1..160, ...))
TypeOfError ::= ENUMERATED {
not-understood,
missing,
...
}
-- U
UE-HistoryInformation ::= SEQUENCE (SIZE(1..maxnoofCells)) OF LastVisitedCell-Item
UE-S1AP-ID ::= INTEGER (0..4095) -- Value FFS
UE-X2AP-ID ::= INTEGER (0..4095) -- Value FFS
-- V
-- W
-- X
-- Y
-- Z
END

View File

@ -0,0 +1,455 @@
-- $Id$
-- 3GPP TS 36.423 V8.0.0 (2007-12)
-- 9.3.4 PDU Definitions
-- **************************************************************
--
-- PDU definitions for X2AP.
--
-- **************************************************************
X2AP-PDU-Contents {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Contents (1) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
AggregateMaximumBitRate,
Bearer-ID,
Cause,
CGI,
CriticalityDiagnostics,
DL-Forwarding,
ENB-ID,
HandoverRestrictionList,
InterferenceOverloadIndication,
PDCP-SN,
PLMN-Identity,
UE-S1AP-ID,
RB-type,
RRC-Context,
SAE-BearerLevel-QoS-Parameters,
ServedCells,
TimeToWait,
TraceActivation,
TargeteNBtoSource-eNBTransparentContainer,
TraceDepth,
TraceReference,
TransportLayerAddress,
UE-HistoryInformation,
GTPtunnelEndpoint,
UE-X2AP-ID
FROM X2AP-IEs
PrivateIE-Container{},
ProtocolExtensionContainer{},
ProtocolIE-ContainerList{},
ProtocolIE-ContainerPair{},
ProtocolIE-ContainerPairList{},
ProtocolIE-Container{},
ProtocolIE-Single-Container{},
X2AP-PRIVATE-IES,
X2AP-PROTOCOL-EXTENSION,
X2AP-PROTOCOL-IES,
X2AP-PROTOCOL-IES-PAIR
FROM X2AP-Containers
id-Bearers-Admitted-Item,
id-Bearers-Admitted-List,
id-Bearers-NotAdmitted-Item,
id-Bearers-NotAdmitted-List,
id-Bearers-SubjectToStatusTransfer-List,
id-Bearers-SubjectToStatusTransfer-Item,
id-Cause,
id-CellInformation,
id-CellInformation-Item,
id-CriticalityDiagnostics,
id-ENB-ID,
id-UE-ContextInformation,
id-Bearers-ToBeSetup-Item,
id-New-eNB-UE-X2AP-ID,
id-Old-eNB-UE-X2AP-ID,
id-ServedCells,
id-TargetCell-ID,
id-TargeteNBtoSource-eNBTransparentContainer,
id-TimeToWait,
id-TraceActivation,
id-UE-HistoryInformation,
id-UE-X2AP-ID,
maxnoofBearers,
maxnoofPDCP-SN,
maxCellineNB
FROM X2AP-Constants;
-- **************************************************************
--
-- HANDOVER REQUEST
--
-- **************************************************************
HandoverRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{HandoverRequest-IEs}},
...
}
HandoverRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory } |
{ ID id-TargetCell-ID CRITICALITY reject TYPE CGI PRESENCE mandatory } |
{ ID id-UE-ContextInformation CRITICALITY reject TYPE UE-ContextInformation PRESENCE mandatory } |
{ ID id-UE-HistoryInformation CRITICALITY reject TYPE UE-HistoryInformation PRESENCE optional } |
{ ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE optional } ,
...
}
UE-ContextInformation ::= SEQUENCE {
mME-UE-S1AP-ID UE-S1AP-ID,
aggregateMaximumBitRate AggregateMaximumBitRate,
bearers-ToBeSetup-List Bearers-ToBeSetup-List,
rRC-Context RRC-Context,
servingPLMN PLMN-Identity OPTIONAL,
handoverRestrictionList HandoverRestrictionList OPTIONAL,
iE-Extensions ProtocolExtensionContainer { {UE-ContextInformation-ExtIEs} } OPTIONAL,
...
}
UE-ContextInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
Bearers-ToBeSetup-List ::= SEQUENCE (SIZE(0..maxnoofBearers)) OF ProtocolIE-Single-Container { {Bearers-ToBeSetup-ItemIEs} }
Bearers-ToBeSetup-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-Bearers-ToBeSetup-Item CRITICALITY ignore TYPE Bearers-ToBeSetup-Item PRESENCE mandatory },
...
}
Bearers-ToBeSetup-Item ::= SEQUENCE {
sAE-Bearer-ID Bearer-ID,
sAE-BearerLevel-QoS-Parameters SAE-BearerLevel-QoS-Parameters,
dL-Forwarding DL-Forwarding,
uL-GTPtunnelEndpoint GTPtunnelEndpoint,
rB-type RB-type,
iE-Extensions ProtocolExtensionContainer { {Bearers-ToBeSetup-ItemExtIEs} } OPTIONAL,
...
}
Bearers-ToBeSetup-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- HANDOVER REQUEST ACKNOWLEDGE
--
-- **************************************************************
HandoverRequestAcknowledge ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{HandoverRequestAcknowledge-IEs}},
...
}
HandoverRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-Bearers-Admitted-List CRITICALITY ignore TYPE Bearers-Admitted-List PRESENCE optional } |
{ ID id-Bearers-NotAdmitted-List CRITICALITY ignore TYPE Bearers-NotAdmitted-List PRESENCE optional } |
{ ID id-TargeteNBtoSource-eNBTransparentContainer CRITICALITY ignore TYPE TargeteNBtoSource-eNBTransparentContainer PRESENCE },
...
}
Bearers-Admitted-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {Bearers-Admitted-ItemIEs} }
Bearers-Admitted-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-Bearers-Admitted-Item CRITICALITY ignore TYPE Bearers-Admitted-Item PRESENCE mandatory }
}
Bearers-Admitted-Item ::= SEQUENCE {
bearer-ID Bearer-ID,
uL-GTP-TunnelEndpoint GTPtunnelEndpoint OPTIONAL,
dL-GTP-TunnelEndpoint GTPtunnelEndpoint OPTIONAL,
iE-Extensions ProtocolExtensionContainer { {Bearers-Admitted-Item-ExtIEs} } OPTIONAL,
...
}
Bearers-Admitted-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
Bearers-NotAdmitted-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {Bearers-NotAdmitted-ItemIEs} }
Bearers-NotAdmitted-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-Bearers-NotAdmitted-Item CRITICALITY ignore TYPE Bearers-NotAdmitted-Item PRESENCE mandatory }
}
Bearers-NotAdmitted-Item ::= SEQUENCE {
bearer-ID Bearer-ID,
cause Cause,
iE-Extensions ProtocolExtensionContainer { {Bearers-NotAdmitted-Item-ExtIEs} } OPTIONAL,
...
}
Bearers-NotAdmitted-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- HANDOVER PREPARATION FAILURE
--
-- **************************************************************
HandoverPreparationFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{HandoverPreparationFailure-IEs}},
...
}
HandoverPreparationFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} ,
...
}
-- **************************************************************
--
-- SN Status Transfer
--
-- **************************************************************
SNStatusTransfer ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{SNStatusTransfer-IEs}},
...
}
SNStatusTransfer-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-Bearers-SubjectToStatusTransfer-List CRITICALITY ignore TYPE Bearers-SubjectToStatusTransfer-List PRESENCE mandatory} ,
...
}
Bearers-SubjectToStatusTransfer-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { { Bearers-SubjectToStatusTransfer-ItemIEs} }
Bearers-SubjectToStatusTransfer-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-Bearers-SubjectToStatusTransfer-Item CRITICALITY ignore TYPE Bearers-SubjectToStatusTransfer-Item PRESENCE mandatory }
}
Bearers-SubjectToStatusTransfer-Item ::= SEQUENCE {
bearer-ID Bearer-ID,
pDCP-SNofULSDUsNotToBeRetransmitted-List PDCP-SNofULSDUsNotToBeRetransmitted-List OPTIONAL,
uL-PDCP-SN-NextInSequenceExpected PDCP-SN,
dL-PDCP-SN-NextToAssign PDCP-SN,
iE-Extensions ProtocolExtensionContainer { {Bearers-SubjectToStatusTransfer-ItemExtIEs} } OPTIONAL,
...
}
Bearers-SubjectToStatusTransfer-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
PDCP-SNofULSDUsNotToBeRetransmitted-List ::= SEQUENCE (SIZE (1..maxnoofPDCP-SN)) OF PDCP-SN
-- **************************************************************
--
-- Release Resource
--
-- **************************************************************
ReleaseResource ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ReleaseResource-IEs}},
...
}
ReleaseResource-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} ,
...
}
-- **************************************************************
--
-- HANDOVER CANCEL
--
-- **************************************************************
HandoverCancel ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{HandoverCancel-IEs}},
...
}
HandoverCancel-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} ,
...
}
-- **************************************************************
--
-- ERROR INDICATION
--
-- **************************************************************
ErrorIndication ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}},
...
}
ErrorIndication-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE optional} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE optional} |
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional} |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional} ,
...
}
-- **************************************************************
--
-- Reset Request
--
-- **************************************************************
ResetRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ResetRequest-IEs}},
...
}
ResetRequest-IEs X2AP-PROTOCOL-IES ::= {
...
}
-- **************************************************************
--
-- Reset Response
--
-- **************************************************************
ResetResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ResetResponse-IEs}},
...
}
ResetResponse-IEs X2AP-PROTOCOL-IES ::= {
...
}
-- **************************************************************
--
-- X2 SETUP REQUEST
--
-- **************************************************************
X2SetupRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2SetupRequest-IEs}},
...
}
X2SetupRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB-ID CRITICALITY reject TYPE ENB-ID PRESENCE mandatory} |
{ ID id-ServedCells CRITICALITY reject TYPE ServedCells PRESENCE mandatory} ,
...
}
-- **************************************************************
--
-- X2 SETUP RESPONSE
--
-- **************************************************************
X2SetupResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2SetupResponse-IEs}},
...
}
X2SetupResponse-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB-ID CRITICALITY reject TYPE ENB-ID PRESENCE mandatory} |
{ ID id-ServedCells CRITICALITY reject TYPE ServedCells PRESENCE mandatory} ,
...
}
-- **************************************************************
--
-- X2 SETUP FAILURE
--
-- **************************************************************
X2SetupFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2SetupFailure-IEs}},
...
}
X2SetupFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
{ ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional} ,
...
}
-- **************************************************************
--
-- LOAD INFORMATION
--
-- **************************************************************
LoadInformation ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{LoadInformation-IEs}},
...
}
LoadInformation-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-CellInformation CRITICALITY ignore TYPE CellInformation-List PRESENCE mandatory} ,
...
}
CellInformation-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellInformation-ItemIEs} }
CellInformation-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-CellInformation-Item CRITICALITY ignore TYPE CellInformation-Item PRESENCE mandatory }
}
CellInformation-Item ::= SEQUENCE {
global-Cell-ID CGI,
interferenceOverloadIndication InterferenceOverloadIndication OPTIONAL,
iE-Extensions ProtocolExtensionContainer { {CellInformation-Item-ExtIEs} } OPTIONAL,
...
}
CellInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- PRIVATE MESSAGE
--
-- **************************************************************
PrivateMessage ::= SEQUENCE {
privateIEs PrivateIE-Container {{PrivateMessage-IEs}},
...
}
PrivateMessage-IEs X2AP-PRIVATE-IES ::= {
...
}
END

View File

@ -0,0 +1,203 @@
-- $Id$
-- 3GPP TS 36.423 V8.0.0 (2007-12)
-- 9.3.3 Elementary Procedure Definitions
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
X2AP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Descriptions (0) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
ProcedureCode
FROM X2AP-CommonDataTypes
ErrorIndication,
HandoverRequest,
HandoverRequestAcknowledge,
HandoverPreparationFailure,
SNStatusTransfer,
ReleaseResource,
HandoverCancel,
LoadInformation,
ResetRequest,
ResetResponse,
X2SetupRequest,
X2SetupResponse,
X2SetupFailure
FROM X2AP-PDU-Contents
id-errorIndication,
id-handoverPreparation,
id-snStatusTransfer,
id-releaseResource,
id-handoverCancel,
id-loadIndication,
id-reset,
id-x2Setup
FROM X2AP-Constants;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
X2AP-ELEMENTARY-PROCEDURE ::= CLASS {
&InitiatingMessage ,
&SuccessfulOutcome OPTIONAL,
&UnsuccessfulOutcome OPTIONAL,
&procedureCode ProcedureCode UNIQUE,
&criticality Criticality DEFAULT ignore
}
WITH SYNTAX {
INITIATING MESSAGE &InitiatingMessage
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
PROCEDURE CODE &procedureCode
[CRITICALITY &criticality]
}
-- **************************************************************
--
-- Interface PDU Definition
--
-- **************************************************************
X2AP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
X2AP-ELEMENTARY-PROCEDURES X2AP-ELEMENTARY-PROCEDURE ::= {
X2AP-ELEMENTARY-PROCEDURES-CLASS-1 |
X2AP-ELEMENTARY-PROCEDURES-CLASS-2 ,
...
}
X2AP-ELEMENTARY-PROCEDURES-CLASS-1 X2AP-ELEMENTARY-PROCEDURE ::= {
handoverPreparation |
reset |
x2Setup ,
...
}
X2AP-ELEMENTARY-PROCEDURES-CLASS-2 X2AP-ELEMENTARY-PROCEDURE ::= {
snStatusTransfer |
releaseResource |
handoverCancel |
errorIndication |
loadIndication ,
...
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
handoverPreparation X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverRequest
SUCCESSFUL OUTCOME HandoverRequestAcknowledge
UNSUCCESSFUL OUTCOME HandoverPreparationFailure
PROCEDURE CODE id-handoverPreparation
CRITICALITY reject
}
snStatusTransfer X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SNStatusTransfer
PROCEDURE CODE id-snStatusTransfer
CRITICALITY ignore
}
releaseResource X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ReleaseResource
PROCEDURE CODE id-releaseResource
CRITICALITY ignore
}
handoverCancel X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverCancel
PROCEDURE CODE id-handoverCancel
CRITICALITY ignore
}
errorIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-errorIndication
CRITICALITY ignore
}
reset X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResetRequest
SUCCESSFUL OUTCOME ResetResponse
PROCEDURE CODE id-reset
CRITICALITY reject
}
x2Setup X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE X2SetupRequest
SUCCESSFUL OUTCOME X2SetupResponse
UNSUCCESSFUL OUTCOME X2SetupFailure
PROCEDURE CODE id-x2Setup
CRITICALITY reject
}
loadIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE LoadInformation
PROCEDURE CODE id-loadIndication
CRITICALITY ignore
}
END

View File

@ -0,0 +1,183 @@
/* packet-x2ap.c
* Routines for dissecting Evolved Universal Terrestrial Radio Access Network (EUTRAN);
* X2 Application Protocol (X2AP);
* 3GPP TS 36.423 packet dissection
* Copyright 2007, Anders Broman <anders.broman@ericsson.com>
*
* $Id$
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Ref:
* 3GPP TS 36.423 V8.0.0 (2007-12)
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <glib.h>
#include <epan/packet.h>
#include <epan/conversation.h>
#include <stdio.h>
#include <string.h>
#include <epan/asn1.h>
#include "packet-per.h"
#ifdef _MSC_VER
/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
#pragma warning(disable:4146)
#endif
#define PNAME "EUTRAN X2 Application Protocol (X2AP)"
#define PSNAME "X2AP"
#define PFNAME "x2ap"
#define SCCP_SSN_X2AP 143
#include "packet-x2ap-val.h"
static dissector_handle_t x2ap_handle = NULL;
/* Initialize the protocol and registered fields */
static int proto_x2ap = -1;
#include "packet-x2ap-hf.c"
/* Initialize the subtree pointers */
static int ett_x2ap = -1;
#include "packet-x2ap-ett.c"
/* Global variables */
static guint32 ProcedureCode;
static guint32 ProtocolIE_ID;
static guint32 ddMode;
static const gchar *ProcedureID;
/* Dissector tables */
static dissector_table_t x2ap_ies_dissector_table;
static dissector_table_t x2ap_extension_dissector_table;
static dissector_table_t x2ap_proc_imsg_dissector_table;
static dissector_table_t x2ap_proc_sout_dissector_table;
static dissector_table_t x2ap_proc_uout_dissector_table;
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
#include "packet-x2ap-fn.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
return (dissector_try_port(x2ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
return (dissector_try_port(x2ap_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
if (!ProcedureID) return 0;
return (dissector_try_string(x2ap_proc_imsg_dissector_table, ProcedureID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
if (!ProcedureID) return 0;
return (dissector_try_string(x2ap_proc_sout_dissector_table, ProcedureID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
if (!ProcedureID) return 0;
return (dissector_try_string(x2ap_proc_uout_dissector_table, ProcedureID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static void
dissect_x2ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *x2ap_item = NULL;
proto_tree *x2ap_tree = NULL;
/* make entry in the Protocol column on summary display */
if (check_col(pinfo->cinfo, COL_PROTOCOL))
col_set_str(pinfo->cinfo, COL_PROTOCOL, "X2AP");
/* create the x2ap protocol tree */
x2ap_item = proto_tree_add_item(tree, proto_x2ap, tvb, 0, -1, FALSE);
x2ap_tree = proto_item_add_subtree(x2ap_item, ett_x2ap);
dissect_X2AP_PDU_PDU(tvb, pinfo, x2ap_tree);
}
/*--- proto_register_x2ap -------------------------------------------*/
void proto_register_x2ap(void) {
/* List of fields */
static hf_register_info hf[] = {
#include "packet-x2ap-hfarr.c"
};
/* List of subtrees */
static gint *ett[] = {
&ett_x2ap,
#include "packet-x2ap-ettarr.c"
};
/* Register protocol */
proto_x2ap = proto_register_protocol(PNAME, PSNAME, PFNAME);
/* Register fields and subtrees */
proto_register_field_array(proto_x2ap, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
/* Register dissector */
register_dissector("x2ap", dissect_x2ap, proto_x2ap);
x2ap_handle = find_dissector("x2ap");
/* Register dissector tables */
x2ap_ies_dissector_table = register_dissector_table("x2ap.ies", "X2AP-PROTOCOL-IES", FT_UINT32, BASE_DEC);
x2ap_extension_dissector_table = register_dissector_table("x2ap.extension", "X2AP-PROTOCOL-EXTENSION", FT_UINT32, BASE_DEC);
x2ap_proc_imsg_dissector_table = register_dissector_table("x2ap.proc.imsg", "X2AP-ELEMENTARY-PROCEDURE InitiatingMessage", FT_STRING, BASE_NONE);
x2ap_proc_sout_dissector_table = register_dissector_table("x2ap.proc.sout", "X2AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_STRING, BASE_NONE);
x2ap_proc_uout_dissector_table = register_dissector_table("x2ap.proc.uout", "X2AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_STRING, BASE_NONE);
}
/*--- proto_reg_handoff_x2ap ---------------------------------------*/
void
proto_reg_handoff_x2ap(void)
{
dissector_add("sctp.port", 0, x2ap_handle);
#include "packet-x2ap-dis-tab.c"
}

168
asn1/x2ap/x2ap.cnf Normal file
View File

@ -0,0 +1,168 @@
# x2ap.cnf
# x2ap conformation file
# Copyright 2007 Anders Broman
# $Id$
#.OPT
PER
ALIGNED
#.END
#.PDU
X2AP-PDU
#.MAKE_DEFINES
ProcedureCode
#.MAKE_ENUM
ProtocolIE-ID
#.TYPE_RENAME
ProtocolIE-Field/value ProtocolIE_Field_value
PrivateIE-Field/value PrivateIE_Field_value
InitiatingMessage/value InitiatingMessage_value
SuccessfulOutcome/value SuccessfulOutcome_value
UnsuccessfulOutcome/value UnsuccessfulOutcome_value
#.FIELD_RENAME
ProtocolExtensionField/id extension_id
PrivateIE-Field/id private_id
InitiatingMessage/value initiatingMessage_value
ProtocolIE-Field/value protocolIE_Field_value
SuccessfulOutcome/value successfulOutcome_value
PrivateIE-Field/value privateIE_Field_value
#.OMIT_ASSIGNMENT
Presence
ProtocolIE-FieldPair
ProtocolIE-ContainerList
ProtocolIE-ContainerPair
ProtocolIE-ContainerPairList
#.END
#.FN_PARS ProtocolIE-ID VAL_PTR = &ProtocolIE_ID
#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue
#.FN_PARS ProtocolExtensionField/extensionValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolExtensionFieldExtensionValue
#.FN_PARS ProcedureCode VAL_PTR = &ProcedureCode
#.FN_FTR ProcedureCode
if (check_col(actx->pinfo->cinfo, COL_INFO))
col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
val_to_str(ProcedureCode, x2ap_ProcedureCode_vals,
"unknown message"));
#.END
#.FN_HDR ProcedureCode
ProcedureCode = 0xFFFF;
#.END
#.FN_PARS InitiatingMessage/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_InitiatingMessageValue
#.FN_PARS SuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_SuccessfulOutcomeValue
#.FN_PARS UnsuccessfulOutcome/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_UnsuccessfulOutcomeValue
#.TYPE_ATTR
#.END
#.ASSIGN_VALUE_TO_TYPE # X2AP does not have constants assigned to types, they are pure INTEGER
# ProcedureCode
id-handoverPreparation ProcedureCode
id-handoverCancel ProcedureCode
id-loadIndication ProcedureCode
id-errorIndication ProcedureCode
id-snStatusTransfer ProcedureCode
id-releaseResource ProcedureCode
id-x2Setup ProcedureCode
id-reset ProcedureCode
# ProtocolIE-ID
id-Bearers-Admitted-Item ProtocolIE-ID
id-Bearers-Admitted-List ProtocolIE-ID
id-Bearers-NotAdmitted-Item ProtocolIE-ID
id-Bearers-NotAdmitted-List ProtocolIE-ID
id-Bearers-ToBeSetup-Item ProtocolIE-ID
id-Cause ProtocolIE-ID
id-CellInformation ProtocolIE-ID
id-CellInformation-Item ProtocolIE-ID
id-InterfacesToTrace-Item ProtocolIE-ID
id-New-eNB-UE-X2AP-ID ProtocolIE-ID
id-Old-eNB-UE-X2AP-ID ProtocolIE-ID
id-TargetCell-ID ProtocolIE-ID
id-TargeteNBtoSource-eNBTransparentContainer ProtocolIE-ID
id-TraceActivation ProtocolIE-ID
id-UE-ContextInformation ProtocolIE-ID
id-UE-HistoryInformation ProtocolIE-ID
id-UE-X2AP-ID ProtocolIE-ID
id-CriticalityDiagnostics ProtocolIE-ID
id-Bearers-SubjectToStatusTransfer-List ProtocolIE-ID
id-Bearers-SubjectToStatusTransfer-Item ProtocolIE-ID
id-ServedCells ProtocolIE-ID
id-ENB-ID ProtocolIE-ID
id-TimeToWait ProtocolIE-ID
#.REGISTER_NEW
#X2AP-PROTOCOL-IES
Bearers-Admitted-Item N x2ap.ies id-Bearers-Admitted-Item
Bearers-Admitted-List N x2ap.ies id-Bearers-Admitted-List
Bearers-NotAdmitted-Item N x2ap.ies id-Bearers-NotAdmitted-Item
Bearers-NotAdmitted-List N x2ap.ies id-Bearers-NotAdmitted-List
Bearers-ToBeSetup-Item N x2ap.ies id-Bearers-ToBeSetup-Item
Cause N x2ap.ies id-Cause
CellInformation-List N x2ap.ies id-CellInformation
CellInformation-Item N x2ap.ies id-CellInformation-Item
InterfacesToTrace-Item N x2ap.ies id-InterfacesToTrace-Item
UE-X2AP-ID N x2ap.ies id-New-eNB-UE-X2AP-ID
UE-X2AP-ID N x2ap.ies id-Old-eNB-UE-X2AP-ID
CGI N x2ap.ies id-TargetCell-ID
TargeteNBtoSource-eNBTransparentContainer N x2ap.ies id-TargeteNBtoSource-eNBTransparentContainer
TraceActivation N x2ap.ies id-TraceActivation
UE-ContextInformation N x2ap.ies id-UE-ContextInformation
UE-HistoryInformation N x2ap.ies id-UE-HistoryInformation
UE-X2AP-ID N x2ap.ies id-UE-X2AP-ID
CriticalityDiagnostics N x2ap.ies id-CriticalityDiagnostics
Bearers-SubjectToStatusTransfer-List N x2ap.ies id-Bearers-SubjectToStatusTransfer-List
Bearers-SubjectToStatusTransfer-Item N x2ap.ies id-Bearers-SubjectToStatusTransfer-Item
ServedCells N x2ap.ies id-ServedCells
ENB-ID N x2ap.ies id-ENB-ID
TimeToWait N x2ap.ies id-TimeToWait
#X2AP-PROTOCOL-EXTENSION
# this is from rnsap MessageStructure N x2ap.extension id-MessageStructure
# X2AP-PDU-Descriptions.asn Interface Elementary Procedures
#X2AP-ELEMENTARY-PROCEDURE
HandoverRequest S x2ap.proc.imsg "id-handoverPreparation"
HandoverRequestAcknowledge S x2ap.proc.sout "id-handoverPreparation"
HandoverPreparationFailure S x2ap.proc.uout "id-handoverPreparation"
SNStatusTransfer S x2ap.proc.imsg "id-snStatusTransfer"
ReleaseResource S x2ap.proc.imsg "id-releaseResource"
HandoverCancel S x2ap.proc.imsg "id-handoverCancel"
ErrorIndication S x2ap.proc.imsg "id-errorIndication"
ResetRequest S x2ap.proc.imsg "id-reset"
ResetResponse S x2ap.proc.imsg "id-reset"
X2SetupRequest S x2ap.proc.imsg "id-x2Setup"
X2SetupResponse S x2ap.proc.sout "id-x2Setup"
X2SetupFailure S x2ap.proc.uout "id-x2Setup"
LoadInformation S x2ap.proc.imsg "LoadInformation"
#.END