Initial work on a E-UTRAN) S1 Application Protocol (S1AP) packet dissector.

svn path=/trunk/; revision=23884
This commit is contained in:
Anders Broman 2007-12-16 13:34:33 +00:00
parent 0238daecf6
commit 53f5c9aaf5
11 changed files with 3170 additions and 0 deletions

26
asn1/s1ap/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/s1ap/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 = s1ap
DISSECTOR_FILES = \
packet-$(PROTOCOL_NAME).c
NEED_PACKET_PROTO_H = 0
EXT_ASN_FILE_LIST =
ASN_FILE_LIST = \
S1AP-CommonDataTypes.asn \
S1AP-Constants.asn \
S1AP-Containers.asn \
S1AP-IEs.asn \
S1AP-PDU-Contents.asn \
S1AP-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/s1ap/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,34 @@
-- $Id$
-- 9.3.5 Common Definitions
-- **************************************************************
--
-- Common definitions
--
-- **************************************************************
S1AP-CommonDataTypes {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (20) modules (3) s1ap (1) version1 (1) s1ap-CommonDataTypes (3) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
Criticality ::= ENUMERATED { reject, ignore, notify }
Presence ::= ENUMERATED { optional, conditional, mandatory }
PrivateIE-ID ::= CHOICE {
local INTEGER (0..65535),
global OBJECT IDENTIFIER
}
ProcedureCode ::= INTEGER (0..255)
ProtocolExtensionID ::= INTEGER (0..65535)
ProtocolIE-ID ::= INTEGER (0..65535)
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome }
END

View File

@ -0,0 +1,153 @@
-- $Id$
-- 9.3.6 Constant Definitions
-- **************************************************************
--
-- Constant definitions
--
-- **************************************************************
S1AP-Constants {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (20) modules (3) s1ap (1) version1 (1) s1ap-Constants (4) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- Elementary Procedures
--
-- **************************************************************
id-HandoverPreparation INTEGER ::= 0
id-HandoverResourceAllocation INTEGER ::= 1
id-HandoverNotification INTEGER ::= 2
id-PathSwitchRequest INTEGER ::= 3
id-HandoverCancel INTEGER ::= 4
id-SAEBearerSetup INTEGER ::= 5
id-SAEBearerModify INTEGER ::= 6
id-SAEBearerRelease INTEGER ::= 7
id-SAEBearerReleaseRequest INTEGER ::= 8
id-InitialContextSetup INTEGER ::= 9
id-Paging INTEGER ::= 10
id-downlinkNASTransport INTEGER ::= 11
id-initialUEMessage INTEGER ::= 12
id-uplinkNASTransport INTEGER ::= 13
id-Reset INTEGER ::= 14
id-ErrorIndication INTEGER ::= 15
id-NASNonDeliveryIndication INTEGER ::= 16
id-S1Setup INTEGER ::= 17
id-UEContextReleaseRequest INTEGER ::= 18
-- **************************************************************
--
-- Extension constants
--
-- **************************************************************
maxPrivateIEs INTEGER ::= 65535
maxProtocolExtensions INTEGER ::= 65535
maxProtocolIEs INTEGER ::= 65535
-- **************************************************************
--
-- Lists
--
-- **************************************************************
maxNrOfSAEBs INTEGER ::= 256
maxNrOfInterfaces INTEGER ::= 3 --FFS
maxnoofTAI INTEGER ::= 256 --FFS
maxNrOfErrors INTEGER ::= 256
maxnoofBPLMNs INTEGER ::= 6
maxnoofNRIs INTEGER ::= 512 -- FFS
maxnoofPLMNsPerMME INTEGER ::= 32 -- FFS
maxnoofTAIs INTEGER ::= 256 -- FFS
maxnoofEPLMNs INTEGER ::= 15
maxnoofEPLMNsPlusOne INTEGER ::= 16
maxnoofForbLACs INTEGER ::= 256 -- FFS Value to be checked
maxnoofForbTAIs INTEGER ::= 256 -- FFS Value to be checked
-- **************************************************************
--
-- IEs
--
-- **************************************************************
id-MME-UE-S1AP-ID INTEGER ::= 0
id-HandoverType INTEGER ::= 1
id-Cause INTEGER ::= 2
id-SourceID INTEGER ::= 3
id-TargetID INTEGER ::= 4
id-Intra-LTEHOInformationReq INTEGER ::= 5
id-LTEtoUTRANHOInformationReq INTEGER ::= 6
id-LTEtoGERANHOInformationReq INTEGER ::= 7
id-eNB-UE-S1AP-ID INTEGER ::= 8
id-Intra-LTEHOInformationRes INTEGER ::= 9
id-LTEtoUTRANHOInformationRes INTEGER ::= 10
id-LTEtoGERANHOInformationRes INTEGER ::= 11
id-SAEBearerSubjecttoDataForwardingList INTEGER ::= 12
id-SAEBearertoReleaseListHOCmd INTEGER ::= 13
id-SAEBearerDataForwardingItem INTEGER ::= 14
id-SAEBearerReleaseItemBearerRelComp INTEGER ::= 15
id-SAEBearerToBeSetupListBearerSUReq INTEGER ::= 16
id-SAEBearerToBeSetupItemBearerSUReq INTEGER ::= 17
id-SAEBearerAdmittedList INTEGER ::= 18
id-SAEBearerFailedToSetupListHOReqAck INTEGER ::= 19
id-SAEBearerAdmittedItem INTEGER ::= 20
id-SAEBearerFailedtoSetupItemHOReqAck INTEGER ::= 21
id-SAEBearerToBeSwitchedDLList INTEGER ::= 22
id-SAEBearerToBeSwitchedDLItem INTEGER ::= 23
id-SAEBearerToBeSetupListCtxtSUReq INTEGER::= 24
id-TraceActivation INTEGER::= 25
id-NAS-PDU INTEGER ::= 26
id-SAEBearerToBeSetupItemHOReq INTEGER ::= 27
id-SAEBearerSetupListBearerSURes INTEGER ::= 28
id-SAEBearerFailedToSetupListBearerSURes INTEGER ::= 29
id-SAEBearerToBeModifiedListBearerModReq INTEGER ::= 30
id-SAEBearerModifyListBearerModRes INTEGER ::= 31
id-SAEBearerFailedToModifyList INTEGER ::= 32
id-SAEBearerToBeReleasedList INTEGER ::= 33
id-SAEBearerReleaseListBearerRelComp INTEGER ::= 33
id-SAEBearerFailedToReleaseList INTEGER ::= 34
id-SAEBearerItem INTEGER ::= 35
id-SAEBearerToBeModifiedItemBearerModReq INTEGER ::= 36
id-SAEBearerModifyItemBearerModRes INTEGER ::= 37
id-SAEBearerReleaseItem INTEGER ::= 38
id-SAEBearerSetupItemBearerSURes INTEGER ::= 39
id-Security-Information INTEGER ::= 40
id-HandoverRestrictionList INTEGER ::= 41
id-s-TMSI INTEGER ::= 43
id-pagingDRX INTEGER ::= 44
id-pagingCause INTEGER ::= 45
id-TAIdList INTEGER ::= 46
id-TAIdItem INTEGER ::= 47
id-SAEBearerFailedToSetupListCtxtSURes INTEGER ::= 48
id-SAEBearerReleaseItemHOCmd INTEGER ::= 49
id-SAEBearerSetupItemCtxtSURes INTEGER ::= 50
id-SAEBearerSetupListCtxtSURes INTEGER ::= 51
id-SAEBearerToBeSetupItemCtxtSUReq INTEGER ::= 52
id-SAEBearerToBeSetupListHOReq INTEGER ::= 53
id-GERANtoLTEHOInformationReq INTEGER ::= 54
id-GERANtoLTEHOInformationRes INTEGER ::= 55
id-UTRANtoLTEHOInformationReq INTEGER ::= 56
id-UTRANtoLTEHOInformationRes INTEGER ::= 57
id-CriticalityDiagnostics INTEGER ::= 58
id-ENB-ID INTEGER ::= 59
id-eNBname INTEGER ::= 60
id-MMEname INTEGER ::= 61
id-NRIs INTEGER ::= 62
id-ServedPLMNs INTEGER ::= 63
id-SupportedTAIs INTEGER ::= 64
id-TimeToWait INTEGER ::= 65
id-aggregateMaximumBitrate INTEGER ::= 66
id-TAId INTEGER ::= 67
id-ServingPLMN INTEGER ::= 68
END

View File

@ -0,0 +1,200 @@
-- $Id$
-- 9.3.7 Container Definitions
-- **************************************************************
--
-- Container definitions
--
-- **************************************************************
S1AP-Containers {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (20) modules (3) s1ap (1) version1 (1) s1ap-Containers (5) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
Presence,
PrivateIE-ID,
ProtocolExtensionID,
ProtocolIE-ID
FROM S1AP-CommonDataTypes
maxPrivateIEs,
maxProtocolExtensions,
maxProtocolIEs
FROM S1AP-Constants;
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
S1AP-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
--
-- **************************************************************
S1AP-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
--
-- **************************************************************
S1AP-PROTOCOL-EXTENSION ::= CLASS {
&id ProtocolExtensionID UNIQUE,
&criticality Criticality,
&Extension,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
EXTENSION &Extension
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Private IEs
--
-- **************************************************************
S1AP-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 {S1AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-SingleContainer {S1AP-PROTOCOL-IES : IEsSetParam} ::=
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Field {S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
id S1AP-PROTOCOL-IES.&id ({IEsSetParam}),
criticality S1AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
value S1AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container for Protocol IE Pairs
--
-- **************************************************************
ProtocolIE-ContainerPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-FieldPair {{IEsSetParam}}
ProtocolIE-FieldPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
id S1AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
firstCriticality S1AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
firstValue S1AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
secondCriticality S1AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
secondValue S1AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container Lists for Protocol IE Containers
--
-- **************************************************************
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-SingleContainer {{IEsSetParam}}
ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-ContainerPair {{IEsSetParam}}
-- **************************************************************
--
-- Container for Protocol Extensions
--
-- **************************************************************
ProtocolExtensionContainer {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
ProtocolExtensionField {{ExtensionSetParam}}
ProtocolExtensionField {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
id S1AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
criticality S1AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
extensionValue S1AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
}
-- **************************************************************
--
-- Container for Private IEs
--
-- **************************************************************
PrivateIE-Container {S1AP-PRIVATE-IES : IEsSetParam } ::=
SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
PrivateIE-Field {{IEsSetParam}}
PrivateIE-Field {S1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
id S1AP-PRIVATE-IES.&id ({IEsSetParam}),
criticality S1AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
value S1AP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
}
END

486
asn1/s1ap/S1AP-IEs.asn Normal file
View File

@ -0,0 +1,486 @@
-- $Id$
-- 9.3.4 Information Element Definitions
-- **************************************************************
--
-- Information Element Definitions
--
-- **************************************************************
S1AP-IEs {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (20) modules (3) s1ap (1) version1 (1) s1ap-IEs (2) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
id-SAEBearerItem,
maxNrOfSAEBs,
maxNrOfInterfaces,
maxNrOfErrors,
maxnoofBPLMNs,
maxnoofNRIs,
maxnoofPLMNsPerMME,
maxnoofTAIs,
maxnoofEPLMNs,
maxnoofEPLMNsPlusOne,
maxnoofForbLACs,
maxnoofForbTAIs
FROM S1AP-Constants
Criticality,
ProcedureCode,
ProtocolIE-ID,
TriggeringMessage
FROM S1AP-CommonDataTypes
ProtocolExtensionContainer{},
S1AP-PROTOCOL-EXTENSION,
ProtocolIE-SingleContainer{},
S1AP-PROTOCOL-IES
FROM S1AP-Containers;
-- A
AllocationRetentionPriority ::= SEQUENCE {
priorityLevel PriorityLevel,
iE-Extensions ProtocolExtensionContainer { {AllocationRetentionPriority-ExtIEs} } OPTIONAL,
...
}
AllocationRetentionPriority-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
AggregateMaximumBitrate ::= SEQUENCE {
aggregateMaximumBitRateDL SAE-Bearer-BitRate,
aggregateMaximumBitRateUL SAE-Bearer-BitRate,
iE-Extensions ProtocolExtensionContainer { {Aggregate-MaximumBitrates-ExtIEs} } OPTIONAL,
...
}
Aggregate-MaximumBitrates-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
-- B
BPLMNs ::= SEQUENCE (SIZE(1.. maxnoofBPLMNs)) OF PLMNidentity
-- C
Cause ::= CHOICE {
radioNetwork CauseRadioNetwork,
transport CauseTransport,
protocol CauseProtocol,
misc CauseMisc,
...
}
CauseMisc ::= ENUMERATED {
control-processing-overload,
not-enough-user-plane-processing-resources,
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,
...
}
CauseRadioNetwork ::= ENUMERATED {
unspecified,
handover-triggered,
tx2relocoverall-expiry,
...
}
CauseTransport ::= ENUMERATED {
transport-resource-unavailable,
unspecified,
...
}
CGI ::= SEQUENCE {
pLMNidentity PLMNidentity,
lAC LAC,
cI CI
}
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 S1AP-PROTOCOL-EXTENSION ::= {
...
}
CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF
SEQUENCE {
iECriticality Criticality,
iE-ID ProtocolIE-ID,
typeOfError TypeOfError OPTIONAL,
iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-IE-List-ExtIEs}} OPTIONAL,
...
}
CriticalityDiagnostics-IE-List-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
-- D
-- E
ENB-UE-S1AP-ID ::= TBCD-STRING (SIZE (3))
ENB-ID ::= INTEGER (0..65535)
ENBname ::= OCTET STRING
EPLMNs ::= SEQUENCE (SIZE(1..maxnoofEPLMNs)) OF PLMNidentity
ExtendedRNC-ID ::= INTEGER (4096..65535)
-- F
ForbiddenInterRATs ::= ENUMERATED {
all,
geran,
utran,
...
}
ForbiddenTAs ::= SEQUENCE (SIZE(1.. maxnoofEPLMNsPlusOne)) OF ForbiddenTAs-Item
ForbiddenTAs-Item ::= SEQUENCE {
pLMN-Identity PLMNidentity,
forbiddenTAIs ForbiddenTAIs
}
ForbiddenTAIs ::= SEQUENCE (SIZE(1..maxnoofForbTAIs)) OF TAI
ForbiddenLAs ::= SEQUENCE (SIZE(1..maxnoofEPLMNsPlusOne)) OF ForbiddenLAs-Item
ForbiddenLAs-Item ::= SEQUENCE {
pLMN-Identity PLMNidentity,
forbiddenLACs ForbiddenLACs
}
ForbiddenLACs ::= SEQUENCE (SIZE(1..maxnoofForbLACs)) OF LAC
-- G
GTP-TEID ::= 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 S1AP-PROTOCOL-EXTENSION ::= {
...
}
HandoverType ::= ENUMERATED {
intralte,
ltetoutran,
ltetogeran,
utrantolte,
gerantolte,
...
}
-- I
InterfacesToTraceList ::= SEQUENCE (SIZE (1..maxNrOfInterfaces)) OF InterfacesToTraceItem
InterfacesToTraceItem ::= SEQUENCE {
interfaceType InterfaceType,
traceDepth TraceDepth,
iE-Extensions ProtocolExtensionContainer { {InterfacesToTraceItem-ExtIEs} } OPTIONAL,
...
}
InterfacesToTraceItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
InterfaceType ::= ENUMERATED {
s1,
x2,
uu,
...
}
-- J
-- K
-- L
Label ::= INTEGER (1..256)
LAC ::= OCTET STRING (SIZE (2))
LAI ::= SEQUENCE {
pLMNidentity PLMNidentity,
lAC LAC,
iE-Extensions ProtocolExtensionContainer { {LAI-ExtIEs} } OPTIONAL
}
LAI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
-- M
MMEname ::= OCTET STRING
MME-UE-S1AP-ID ::= TBCD-STRING (SIZE (3))
-- N
NAS-PDU ::= OCTET STRING
NRIs ::= SEQUENCE (SIZE(1..maxnoofNRIs)) OF NRI
NRI ::= OCTET STRING
-- O
-- P
PagingDRX ::= INTEGER (0..4095)
PagingCause ::= ENUMERATED {
terminating-conversational-call,
terminating-streaming-call,
terminating-interactive-call,
terminating-background-call,
terminating-low-priority-signalling,
...,
terminating-high-priority-signalling
}
PLMNidentity ::= TBCD-STRING (SIZE (3))
PriorityLevel ::= INTEGER (0..15)
-- Q
-- R
RAC ::= OCTET STRING (SIZE (1))
RNC-ID ::= INTEGER (0..4095)
-- S
SAE-Bearer-ID ::= OCTET STRING
SAEBearerList ::= SEQUENCE (SIZE(0.. maxNrOfSAEBs)) OF ProtocolIE-SingleContainer { {SAEBearerItemIEs} }
SAEBearerItemIEs S1AP-PROTOCOL-IES ::= {
{ ID id-SAEBearerItem CRITICALITY reject TYPE SAEBearerItem PRESENCE mandatory },
...
}
SAEBearerItem ::= SEQUENCE {
sAE-Bearer-ID SAE-Bearer-ID,
cause Cause,
iE-Extensions ProtocolExtensionContainer { {SAEBearerItem-ExtIEs} } OPTIONAL,
...
}
SAEBearerItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
SAE-Bearer-BitRate ::= INTEGER (0..10000000)
SAE-BearerLevelQoSParameters ::= SEQUENCE {
label Label,
allocationRetentionPriority AllocationRetentionPriority OPTIONAL,
sAE-BearerType SAE-Bearer-Type,
iE-Extensions ProtocolExtensionContainer { {SAE-Bearer-QoSParameters-ExtIEs} } OPTIONAL,
...
}
SAE-Bearer-QoSParameters-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
SAE-Bearer-Type ::= 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 ::= {
...
}
SecurityInformation ::= SEQUENCE {
securityPlaceHolder ENUMERATED {whatever},
iE-Extensions ProtocolExtensionContainer { { SecurityInformation-ExtIEs} } OPTIONAL
}
SecurityInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
SourceBSS-ToTargetBSS-TransparentContainer ::= OCTET STRING
SourceID ::= SEQUENCE {
sourceeNB-ID SourceeNB-ID,
...
}
SourceeNB-ID ::= SEQUENCE {
pLMNidentity PLMNidentity,
eNB-ID ENB-ID
}
SourceeNodeB-ToTargeteNodeB-TransparentContainer ::= OCTET STRING
SourceRNC-ToTargetRNC-TransparentContainer ::= OCTET STRING
ServedPLMNs ::= SEQUENCE (SIZE(1.. maxnoofPLMNsPerMME)) OF PLMNidentity
SupportedTAIs ::= SEQUENCE (SIZE(1.. maxnoofTAIs)) OF SupportedTAs-Item
SupportedTAs-Item ::= SEQUENCE {
tAI TAId,
broadcastPLMNs BPLMNs,
...
}
S-TMSI ::= OCTET STRING
-- T
TAI ::= OCTET STRING
TAId ::= OCTET STRING
TBCD-STRING ::= OCTET STRING
TargetID ::= CHOICE {
targeteNB-ID TargeteNB-ID,
targetRNC-ID TargetRNC-ID,
cGI CGI,
...
}
TargeteNB-ID ::= SEQUENCE {
pLMNidentity PLMNidentity,
eNB-ID ENB-ID
}
TargetRNC-ID ::= SEQUENCE {
lAI LAI,
rAC RAC OPTIONAL,
rNC-ID RNC-ID
}
TargeteNodeB-ToSourceeNodeB-TransparentContainer ::= OCTET STRING
TargetRNC-ToSourceRNC-TransparentContainer ::= OCTET STRING
TargetBSS-ToSourceBSS-TransparentContainer ::= OCTET STRING
TimeToWait ::= OCTET STRING
TransportLayerAddress ::= OCTET STRING
TraceActivation ::= SEQUENCE {
traceReference TraceReference,
interfacesToTraceList InterfacesToTraceList,
iE-Extensions ProtocolExtensionContainer { { TraceActivation-ExtIEs} } OPTIONAL
}
TraceActivation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= {
...
}
TraceDepth ::= ENUMERATED {
minimum,
medium,
maximum,
...
}
TraceReference ::= OCTET STRING (SIZE (3))
TypeOfError ::= ENUMERATED {
not-understood,
missing,
...
}
-- U
UserDataType ::= INTEGER
-- Editors note: FFS (ENUMERATED?)
-- V
-- W
-- X
-- Y
-- Z
END

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,313 @@
-- $Id$
-- 9.3.2 Elementary Procedure Definitions
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
S1AP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (20) modules (3) s1ap (1) version1 (1) s1ap-PDU-Descriptions (0)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
ProcedureCode
FROM S1AP-CommonDataTypes
HandoverRequired,
HandoverCommand,
HandoverPreparationFailure,
HandoverRequest,
HandoverRequestAcknowledge,
HandoverFailure,
HandoverNotify,
PathSwitchRequest,
PathSwitchRequestAcknowledge,
PathSwitchRequestFailure,
SAEBearerSetupRequest,
SAEBearerSetupResponse,
SAEBearerModifyRequest,
SAEBearerModifyResponse,
SAEBearerReleaseCommand,
SAEBearerReleaseComplete,
SAEBearerReleaseRequest,
InitialContextSetupRequest,
InitialContextSetupResponse,
InitialContextSetupFailure,
Paging,
DownlinkNASTransport,
InitialUEMessage,
UplinkNASTransport,
HandoverCancel,
HandoverCancelAcknowledge,
Reset,
ResetAcknowledge,
ErrorIndication,
NASNonDeliveryIndication,
S1SetupRequest,
S1SetupResponse,
S1SetupFailure,
UEContextReleaseRequest
FROM S1AP-PDU-Contents
id-HandoverPreparation,
id-HandoverResourceAllocation,
id-HandoverNotification,
id-PathSwitchRequest,
id-SAEBearerSetup,
id-SAEBearerModify,
id-SAEBearerRelease,
id-SAEBearerReleaseRequest,
id-InitialContextSetup,
id-Paging,
id-downlinkNASTransport,
id-initialUEMessage,
id-uplinkNASTransport,
id-HandoverCancel,
id-Reset,
id-ErrorIndication,
id-NASNonDeliveryIndication,
id-S1Setup,
id-UEContextReleaseRequest
FROM S1AP-Constants;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
S1AP-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
--
-- **************************************************************
S1AP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}),
criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value S1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}),
criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value S1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}),
criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value S1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
S1AP-ELEMENTARY-PROCEDURES S1AP-ELEMENTARY-PROCEDURE ::= {
S1AP-ELEMENTARY-PROCEDURES-CLASS-1 |
S1AP-ELEMENTARY-PROCEDURES-CLASS-2,
...
}
S1AP-ELEMENTARY-PROCEDURES-CLASS-1 S1AP-ELEMENTARY-PROCEDURE ::= {
handoverPreparation |
handoverResourceAllocation |
pathSwitchRequest |
sAEbearerSetup |
sAEbearerModify |
sAEbearerRelease |
initialContextSetup |
handoverCancel |
reset |
s1Setup,
...
}
S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= {
handoverNotification |
sAEbearerReleaseRequest |
paging |
downlinkNASTransport |
initialUEMessage |
uplinkNASTransport |
errorIndication |
nASNonDeliveryIndication |
uEContextReleaseRequest ,
...
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
handoverPreparation S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverRequired
SUCCESSFUL OUTCOME HandoverCommand
UNSUCCESSFUL OUTCOME HandoverPreparationFailure
PROCEDURE CODE id-HandoverPreparation
CRITICALITY reject
}
handoverResourceAllocation S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverRequest
SUCCESSFUL OUTCOME HandoverRequestAcknowledge
UNSUCCESSFUL OUTCOME HandoverFailure
PROCEDURE CODE id-HandoverResourceAllocation
CRITICALITY reject
}
handoverNotification S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverNotify
PROCEDURE CODE id-HandoverNotification
CRITICALITY reject
}
pathSwitchRequest S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PathSwitchRequest
SUCCESSFUL OUTCOME PathSwitchRequestAcknowledge
UNSUCCESSFUL OUTCOME PathSwitchRequestFailure
PROCEDURE CODE id-PathSwitchRequest
CRITICALITY reject
}
sAEbearerSetup S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SAEBearerSetupRequest
SUCCESSFUL OUTCOME SAEBearerSetupResponse
PROCEDURE CODE id-SAEBearerSetup
CRITICALITY reject
}
sAEbearerModify S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SAEBearerModifyRequest
SUCCESSFUL OUTCOME SAEBearerModifyResponse
PROCEDURE CODE id-SAEBearerModify
CRITICALITY reject
}
sAEbearerRelease S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SAEBearerReleaseCommand
SUCCESSFUL OUTCOME SAEBearerReleaseComplete
PROCEDURE CODE id-SAEBearerRelease
CRITICALITY reject
}
sAEbearerReleaseRequest S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SAEBearerReleaseRequest
PROCEDURE CODE id-SAEBearerReleaseRequest
CRITICALITY ignore
}
initialContextSetup S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE InitialContextSetupRequest
SUCCESSFUL OUTCOME InitialContextSetupResponse
UNSUCCESSFUL OUTCOME InitialContextSetupFailure
PROCEDURE CODE id-InitialContextSetup
CRITICALITY reject
}
uEContextReleaseRequest S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextReleaseRequest
PROCEDURE CODE id-UEContextReleaseRequest
CRITICALITY ignore
}
paging S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Paging
PROCEDURE CODE id-Paging
CRITICALITY ignore
}
downlinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DownlinkNASTransport
PROCEDURE CODE id-downlinkNASTransport
CRITICALITY ignore
}
initialUEMessage S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE InitialUEMessage
PROCEDURE CODE id-initialUEMessage
CRITICALITY ignore
}
uplinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UplinkNASTransport
PROCEDURE CODE id-uplinkNASTransport
CRITICALITY ignore
}
nASNonDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE NASNonDeliveryIndication
PROCEDURE CODE id-NASNonDeliveryIndication
CRITICALITY ignore
}
handoverCancel S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverCancel
SUCCESSFUL OUTCOME HandoverCancelAcknowledge
PROCEDURE CODE id-HandoverCancel
CRITICALITY reject
}
reset S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Reset
SUCCESSFUL OUTCOME ResetAcknowledge
PROCEDURE CODE id-Reset
CRITICALITY reject
}
errorIndication S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-ErrorIndication
CRITICALITY ignore
}
s1Setup S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE S1SetupRequest
SUCCESSFUL OUTCOME S1SetupResponse
UNSUCCESSFUL OUTCOME S1SetupFailure
PROCEDURE CODE id-S1Setup
CRITICALITY reject
}
END

View File

@ -0,0 +1,208 @@
/* packet-s1ap.c
* Routines for E-UTRAN) S1 Application Protocol (S1AP) packet dissection
* Copyright 2007, Anders Broman <anders.broman@ericsson.com>
*
* $Id: packet-s1ap-template.c 22778 2007-09-03 16:40:51Z etxrab $
*
* 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.
*
* Based on the RANAP dissector
*
* References: 3GPP TS 25.413 version 6.6.0 Release
*/
#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/emem.h>
#include <epan/strutil.h>
#include <epan/asn1.h>
#include "packet-ber.h"
#include "packet-per.h"
#include "packet-gsm_map.h"
#include "packet-s1ap.h"
#include "packet-e212.h"
#include "packet-sccp.h"
#ifdef _MSC_VER
/* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
#pragma warning(disable:4146)
#endif
#define PNAME "S1 Application Protocol "
#define PSNAME "S1AP"
#define PFNAME "s1ap"
#include "packet-s1ap-val.h"
static dissector_handle_t s1ap_handle = NULL;
/* Initialize the protocol and registered fields */
static int proto_s1ap = -1;
#include "packet-s1ap-hf.c"
/* Initialize the subtree pointers */
static int ett_s1ap = -1;
#include "packet-s1ap-ett.c"
/* Global variables */
static guint32 ProcedureCode;
static guint32 ProtocolIE_ID;
static guint32 ProtocolExtensionID;
/* Dissector tables */
static dissector_table_t s1ap_ies_dissector_table;
static dissector_table_t s1ap_ies_p1_dissector_table;
static dissector_table_t s1ap_ies_p2_dissector_table;
static dissector_table_t s1ap_extension_dissector_table;
static dissector_table_t s1ap_proc_imsg_dissector_table;
static dissector_table_t s1ap_proc_sout_dissector_table;
static dissector_table_t s1ap_proc_uout_dissector_table;
static dissector_table_t s1ap_proc_out_dissector_table;
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
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_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);
static int dissect_OutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
#include "packet-s1ap-fn.c"
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
return (dissector_try_port(s1ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
return (dissector_try_port(s1ap_ies_p1_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
return (dissector_try_port(s1ap_ies_p2_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(s1ap_extension_dissector_table, ProtocolExtensionID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
return (dissector_try_port(s1ap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
return (dissector_try_port(s1ap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
return (dissector_try_port(s1ap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static int dissect_OutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
return (dissector_try_port(s1ap_proc_out_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
}
static void
dissect_s1ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *s1ap_item = NULL;
proto_tree *s1ap_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, "S1AP");
/* create the s1ap protocol tree */
s1ap_item = proto_tree_add_item(tree, proto_s1ap, tvb, 0, -1, FALSE);
s1ap_tree = proto_item_add_subtree(s1ap_item, ett_s1ap);
dissect_S1AP_PDU_PDU(tvb, pinfo, s1ap_tree);
}
/*--- proto_register_s1ap -------------------------------------------*/
void proto_register_s1ap(void) {
/* List of fields */
static hf_register_info hf[] = {
#include "packet-s1ap-hfarr.c"
};
/* List of subtrees */
static gint *ett[] = {
&ett_s1ap,
#include "packet-s1ap-ettarr.c"
};
/* Register protocol */
proto_s1ap = proto_register_protocol(PNAME, PSNAME, PFNAME);
/* Register fields and subtrees */
proto_register_field_array(proto_s1ap, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
/* Register dissector */
register_dissector("s1ap", dissect_s1ap, proto_s1ap);
s1ap_handle = find_dissector("s1ap");
/* Register dissector tables */
s1ap_ies_dissector_table = register_dissector_table("s1ap.ies", "S1AP-PROTOCOL-IES", FT_UINT32, BASE_DEC);
s1ap_ies_p1_dissector_table = register_dissector_table("s1ap.ies.pair.first", "S1AP-PROTOCOL-IES-PAIR FirstValue", FT_UINT32, BASE_DEC);
s1ap_ies_p2_dissector_table = register_dissector_table("s1ap.ies.pair.second", "S1AP-PROTOCOL-IES-PAIR SecondValue", FT_UINT32, BASE_DEC);
s1ap_extension_dissector_table = register_dissector_table("s1ap.extension", "S1AP-PROTOCOL-EXTENSION", FT_UINT32, BASE_DEC);
s1ap_proc_imsg_dissector_table = register_dissector_table("s1ap.proc.imsg", "S1AP-ELEMENTARY-PROCEDURE InitiatingMessage", FT_UINT32, BASE_DEC);
s1ap_proc_sout_dissector_table = register_dissector_table("s1ap.proc.sout", "S1AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_UINT32, BASE_DEC);
s1ap_proc_uout_dissector_table = register_dissector_table("s1ap.proc.uout", "S1AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_UINT32, BASE_DEC);
s1ap_proc_out_dissector_table = register_dissector_table("s1ap.proc.out", "S1AP-ELEMENTARY-PROCEDURE Outcome", FT_UINT32, BASE_DEC);
}
/*--- proto_reg_handoff_s1ap ---------------------------------------*/
void
proto_reg_handoff_s1ap(void)
{
dissector_add("sctp.port", 0, s1ap_handle);
#include "packet-s1ap-dis-tab.c"
}

374
asn1/s1ap/s1ap.cnf Normal file
View File

@ -0,0 +1,374 @@
# s1ap.cnf
# s1ap conformation file
# $Id$
#.OPT
PER
ALIGNED
#.END
#.EXPORTS
#.PDU_NEW
S1AP-PDU
#.MAKE_ENUM
ProcedureCode
ProtocolIE-ID
#.NO_EMIT
#.TYPE_RENAME
InitiatingMessage/value InitiatingMessage_value
SuccessfulOutcome/value SuccessfulOutcome_value
UnsuccessfulOutcome/value UnsuccessfulOutcome_value
#.FIELD_RENAME
InitiatingMessage/value initiatingMessagevalue
UnsuccessfulOutcome/value unsuccessfulOutcome_value
SuccessfulOutcome/value successfulOutcome_value
PrivateIE-Field/id private_id
ProtocolExtensionField/id ext_id
PrivateIE-Field/value private_value
ProtocolIE-Field/value ie_field_value
#.FN_PARS ProtocolIE-ID VAL_PTR=&ProtocolIE_ID
#.FN_FTR ProtocolIE-ID
if (tree) {
proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(s1ap_ProtocolIE_ID_vals), "unknown (%d)"));
}
#.END
#.FN_PARS ProtocolIE-Field/value FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldValue
#.FN_PARS ProtocolIE-FieldPair/firstValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairFirstValue
#.FN_PARS ProtocolIE-FieldPair/secondValue FN_VARIANT=_pdu_new TYPE_REF_FN=dissect_ProtocolIEFieldPairSecondValue
#.FN_PARS ProtocolExtensionID VAL_PTR=&ProtocolExtensionID
#.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, s1ap_ProcedureCode_vals,
"unknown message"));
#.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
#--- Parameterization is not supported in asn2wrs ---
#ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES : IEsSetParam} ::=
# SEQUENCE (SIZE (lowerBound..upperBound)) OF
# ProtocolIE-Container {{IEsSetParam}}
#.FN_PARS ProtocolIE-ContainerList
MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound")
MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
#.FN_HDR ProtocolIE-ContainerList
static const asn1_par_def_t ProtocolIE_ContainerList_pars[] = {
{ "lowerBound", ASN1_PAR_INTEGER },
{ "upperBound", ASN1_PAR_INTEGER },
{ NULL, 0 }
};
asn1_stack_frame_check(actx, "ProtocolIE-ContainerList", ProtocolIE_ContainerList_pars);
#.END
#ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
# SEQUENCE (SIZE (lowerBound..upperBound)) OF
# ProtocolIE-ContainerPair {{IEsSetParam}}
#.FN_PARS ProtocolIE-ContainerPairList
MIN_VAL = asn1_param_get_integer(%(ACTX)s,"lowerBound")
MAX_VAL = asn1_param_get_integer(%(ACTX)s,"upperBound")
#.FN_HDR ProtocolIE-ContainerPairList
static const asn1_par_def_t ProtocolIE_ContainerPairList_pars[] = {
{ "lowerBound", ASN1_PAR_INTEGER },
{ "upperBound", ASN1_PAR_INTEGER },
{ NULL, 0 }
};
asn1_stack_frame_check(actx, "ProtocolIE-ContainerPairList", ProtocolIE_ContainerPairList_pars);
#.END
#RAB-IE-ContainerList { S1AP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxNrOfRABs, {IEsSetParam} }
#ProtocolError-IE-ContainerList { S1AP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxNrOfRABs, {IEsSetParam} }
#.FN_BODY ProtocolError-IE-ContainerList
asn1_stack_frame_push(%(ACTX)s, "ProtocolIE-ContainerList");
asn1_param_push_integer(%(ACTX)s, 1);
asn1_param_push_integer(%(ACTX)s, maxNrOfRABs);
%(DEFAULT_BODY)s
asn1_stack_frame_pop(%(ACTX)s, "ProtocolIE-ContainerList");
#.END
#.END
#.FN_BODY NAS-PDU VAL_PTR = &nas_pdu_tvb
tvbuff_t *nas_pdu_tvb=NULL;
%(DEFAULT_BODY)s
if (nas_pdu_tvb)
dissector_try_port(nas_pdu_dissector_table, 0x1, nas_pdu_tvb, %(ACTX)s->pinfo, proto_tree_get_root(tree));
#.END
# following construction is not supported by asn2wrs
# PLMNidentity ::= TBCD-STRING (SIZE (3))
# TBCD-STRING ::= OCTET STRING
#.FN_BODY PLMNidentity VAL_PTR =
tvbuff_t *parameter_tvb=NULL;
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
3, 3, FALSE, &parameter_tvb);
if (!parameter_tvb)
return offset;
dissect_e212_mcc_mnc(parameter_tvb, tree, 0);
#.END
#.TYPE_ATTR
ProtocolExtensionID TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(s1ap_ProtocolIE_ID_vals)
#.ASSIGN_VALUE_TO_TYPE # S1AP does not have constants assigned to types, they are pure INTEGER
# ProcedureCode
id-HandoverPreparation ProcedureCode
id-HandoverResourceAllocation ProcedureCode
id-HandoverNotification ProcedureCode
id-PathSwitchRequest ProcedureCode
id-HandoverCancel ProcedureCode
id-SAEBearerSetup ProcedureCode
id-SAEBearerModify ProcedureCode
id-SAEBearerRelease ProcedureCode
id-SAEBearerReleaseRequest ProcedureCode
id-InitialContextSetup ProcedureCode
id-Paging ProcedureCode
id-downlinkNASTransport ProcedureCode
id-initialUEMessage ProcedureCode
id-uplinkNASTransport ProcedureCode
id-Reset ProcedureCode
id-ErrorIndication ProcedureCode
id-NASNonDeliveryIndication ProcedureCode
id-S1Setup ProcedureCode
id-UEContextReleaseRequest ProcedureCode
# ProtocolIE-ID
id-MME-UE-S1AP-ID ProtocolIE-ID
id-HandoverType ProtocolIE-ID
id-Cause ProtocolIE-ID
id-SourceID ProtocolIE-ID
id-TargetID ProtocolIE-ID
id-Intra-LTEHOInformationReq ProtocolIE-ID
id-LTEtoUTRANHOInformationReq ProtocolIE-ID
id-LTEtoGERANHOInformationReq ProtocolIE-ID
id-eNB-UE-S1AP-ID ProtocolIE-ID
id-Intra-LTEHOInformationRes ProtocolIE-ID
id-LTEtoUTRANHOInformationRes ProtocolIE-ID
id-LTEtoGERANHOInformationRes ProtocolIE-ID
id-SAEBearerSubjecttoDataForwardingList ProtocolIE-ID
id-SAEBearertoReleaseListHOCmd ProtocolIE-ID
id-SAEBearerDataForwardingItem ProtocolIE-ID
id-SAEBearerReleaseItemBearerRelComp ProtocolIE-ID
id-SAEBearerToBeSetupListBearerSUReq ProtocolIE-ID
id-SAEBearerToBeSetupItemBearerSUReq ProtocolIE-ID
id-SAEBearerAdmittedList ProtocolIE-ID
id-SAEBearerFailedToSetupListHOReqAck ProtocolIE-ID
id-SAEBearerAdmittedItem ProtocolIE-ID
id-SAEBearerFailedtoSetupItemHOReqAck ProtocolIE-ID
id-SAEBearerToBeSwitchedDLList ProtocolIE-ID
id-SAEBearerToBeSwitchedDLItem ProtocolIE-ID
id-SAEBearerToBeSetupListCtxtSUReq ProtocolIE-ID
id-TraceActivation ProtocolIE-ID
id-NAS-PDU ProtocolIE-ID
id-SAEBearerToBeSetupItemHOReq ProtocolIE-ID
id-SAEBearerSetupListBearerSURes ProtocolIE-ID
id-SAEBearerFailedToSetupListBearerSURes ProtocolIE-ID
id-SAEBearerToBeModifiedListBearerModReq ProtocolIE-ID
id-SAEBearerModifyListBearerModRes ProtocolIE-ID
#id-SAEBearerFailedToModifyList ProtocolIE-ID
id-SAEBearerToBeReleasedList ProtocolIE-ID
id-SAEBearerReleaseListBearerRelComp ProtocolIE-ID
id-SAEBearerFailedToReleaseList ProtocolIE-ID
id-SAEBearerItem ProtocolIE-ID
id-SAEBearerToBeModifiedItemBearerModReq ProtocolIE-ID
id-SAEBearerModifyItemBearerModRes ProtocolIE-ID
id-SAEBearerReleaseItem ProtocolIE-ID
id-SAEBearerSetupItemBearerSURes ProtocolIE-ID
id-Security-Information ProtocolIE-ID
id-HandoverRestrictionList ProtocolIE-ID
id-s-TMSI ProtocolIE-ID
id-pagingDRX ProtocolIE-ID
id-pagingCause ProtocolIE-ID
id-TAIdList ProtocolIE-ID
id-TAIdItem ProtocolIE-ID
id-SAEBearerFailedToSetupListCtxtSURes ProtocolIE-ID
id-SAEBearerReleaseItemHOCmd ProtocolIE-ID
id-SAEBearerSetupItemCtxtSURes ProtocolIE-ID
id-SAEBearerSetupListCtxtSURes ProtocolIE-ID
id-SAEBearerToBeSetupItemCtxtSUReq ProtocolIE-ID
id-SAEBearerToBeSetupListHOReq ProtocolIE-ID
id-GERANtoLTEHOInformationReq ProtocolIE-ID
id-GERANtoLTEHOInformationRes ProtocolIE-ID
id-UTRANtoLTEHOInformationReq ProtocolIE-ID
id-UTRANtoLTEHOInformationRes ProtocolIE-ID
id-CriticalityDiagnostics ProtocolIE-ID
id-ENB-ID ProtocolIE-ID
id-eNBname ProtocolIE-ID
id-MMEname ProtocolIE-ID
id-NRIs ProtocolIE-ID
id-ServedPLMNs ProtocolIE-ID
id-SupportedTAIs ProtocolIE-ID
id-TimeToWait ProtocolIE-ID
id-aggregateMaximumBitrate ProtocolIE-ID
id-TAId ProtocolIE-ID
id-ServingPLMN ProtocolIE-ID
#.END
#.REGISTER_NEW
#S1AP-PROTOCOL-IES
MME-UE-S1AP-ID N s1ap.ies id-MME-UE-S1AP-ID
HandoverType N s1ap.ies id-HandoverType
Cause N s1ap.ies id-Cause
SourceID N s1ap.ies id-SourceID
TargetID N s1ap.ies id-TargetID
Intra-LTEHOInformationReq N s1ap.ies id-Intra-LTEHOInformationReq
LTEtoUTRANHOInformationReq N s1ap.ies id-LTEtoUTRANHOInformationReq
LTEtoGERANHOInformationReq N s1ap.ies id-LTEtoGERANHOInformationReq
ENB-UE-S1AP-ID N s1ap.ies id-eNB-UE-S1AP-ID
Intra-LTEHOInformationRes N s1ap.ies id-Intra-LTEHOInformationRes
LTEtoUTRANHOInformationRes N s1ap.ies id-LTEtoUTRANHOInformationRes
LTEtoGERANHOInformationRes N s1ap.ies id-LTEtoGERANHOInformationRes
SAEBearerSubjecttoDataForwardingList N s1ap.ies id-SAEBearerSubjecttoDataForwardingList
SAEBearertoReleaseListHOCmd N s1ap.ies id-SAEBearertoReleaseListHOCmd
SAEBearerDataForwardingItem N s1ap.ies id-SAEBearerDataForwardingItem
SAEBearerReleaseItemBearerRelComp N s1ap.ies id-SAEBearerReleaseItemBearerRelComp
SAEBearerToBeSetupListBearerSUReq N s1ap.ies id-SAEBearerToBeSetupListBearerSUReq
SAEBearerToBeSetupItemBearerSUReq N s1ap.ies id-SAEBearerToBeSetupItemBearerSUReq
SAEBearerAdmittedList N s1ap.ies id-SAEBearerAdmittedList
SAEBearerFailedtoSetupListHOReqAck N s1ap.ies id-SAEBearerFailedToSetupListHOReqAck
SAEBearerAdmittedItem N s1ap.ies id-SAEBearerAdmittedItem
SAEBearerFailedToSetupItemHOReqAck N s1ap.ies id-SAEBearerFailedtoSetupItemHOReqAck
SAEBearerToBeSwitchedDLList N s1ap.ies id-SAEBearerToBeSwitchedDLList
SAEBearerToBeSwitchedDLItem N s1ap.ies id-SAEBearerToBeSwitchedDLItem
SAEBearerToBeSetupListCtxtSUReq N s1ap.ies id-SAEBearerToBeSetupListCtxtSUReq
TraceActivation N s1ap.ies id-TraceActivation
NAS-PDU N s1ap.ies id-NAS-PDU
SAEBearerToBeSetupItemHOReq N s1ap.ies id-SAEBearerToBeSetupItemHOReq
SAEBearerSetupListBearerSURes N s1ap.ies id-SAEBearerSetupListBearerSURes
SAEBearerList N s1ap.ies id-SAEBearerFailedToSetupListBearerSURes
SAEBearerToBeModifiedListBearerModReq N s1ap.ies id-SAEBearerToBeModifiedListBearerModReq
SAEBearerModifyListBearerModRes N s1ap.ies id-SAEBearerModifyListBearerModRes
SAEBearerList N s1ap.ies id-SAEBearerFailedToModifyList
SAEBearerList N s1ap.ies id-SAEBearerToBeReleasedList
SAEBearerReleaseListBearerRelComp N s1ap.ies id-SAEBearerReleaseListBearerRelComp
SAEBearerList N s1ap.ies id-SAEBearerFailedToReleaseList
SAEBearerItem N s1ap.ies id-SAEBearerItem
SAEBearerToBeModifiedItemBearerModReq N s1ap.ies id-SAEBearerToBeModifiedItemBearerModReq
SAEBearerModifyItemBearerModRes N s1ap.ies id-SAEBearerModifyItemBearerModRes
#SAEBearerReleaseItem N s1ap.ies id-SAEBearerReleaseItem
SAEBearerSetupItemBearerSURes N s1ap.ies id-SAEBearerSetupItemBearerSURes
SecurityInformation N s1ap.ies id-Security-Information
HandoverRestrictionList N s1ap.ies id-HandoverRestrictionList
S-TMSI N s1ap.ies id-s-TMSI
PagingDRX N s1ap.ies id-pagingDRX
PagingCause N s1ap.ies id-pagingCause
TAIdList N s1ap.ies id-TAIdList
TAIdItem N s1ap.ies id-TAIdItem
SAEBearerList N s1ap.ies id-SAEBearerFailedToSetupListCtxtSURes
SAEBearerReleaseItemHOCmd N s1ap.ies id-SAEBearerReleaseItemHOCmd
SAEBearerSetupItemCtxtSURes N s1ap.ies id-SAEBearerSetupItemCtxtSURes
SAEBearerSetupListCtxtSURes N s1ap.ies id-SAEBearerSetupListCtxtSURes
SAEBearerToBeSetupItemCtxtSUReq N s1ap.ies id-SAEBearerToBeSetupItemCtxtSUReq
SAEBearerToBeSetupListHOReq N s1ap.ies id-SAEBearerToBeSetupListHOReq
GERANtoLTEHOInformationReq N s1ap.ies id-GERANtoLTEHOInformationReq
GERANtoLTEHOInformationRes N s1ap.ies id-GERANtoLTEHOInformationRes
UTRANtoLTEHOInformationReq N s1ap.ies id-UTRANtoLTEHOInformationReq
UTRANtoLTEHOInformationRes N s1ap.ies id-UTRANtoLTEHOInformationRes
CriticalityDiagnostics N s1ap.ies id-CriticalityDiagnostics
ENB-ID N s1ap.ies id-ENB-ID
ENBname N s1ap.ies id-eNBname
MMEname N s1ap.ies id-MMEname
NRIs N s1ap.ies id-NRIs
ServedPLMNs N s1ap.ies id-ServedPLMNs
SupportedTAIs N s1ap.ies id-SupportedTAIs
TimeToWait N s1ap.ies id-TimeToWait
AggregateMaximumBitrate N s1ap.ies id-aggregateMaximumBitrate
TAId N s1ap.ies id-TAId
PLMNidentity N s1ap.ies id-ServingPLMN
#S1AP-PROTOCOL-IES-PAIR
#RAB-SetupOrModifyItemFirst N s1ap.ies.pair.first id-RAB-SetupOrModifyItem
#RAB-SetupOrModifyItemSecond N s1ap.ies.pair.second id-RAB-SetupOrModifyItem
#NBAP-PROTOCOL-EXTENSION
#RAB-Parameters N s1ap.extension id-AlternativeRABConfiguration
#Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf N s1ap.extension id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf
#NBAP-ELEMENTARY-PROCEDURE
HandoverRequired N s1ap.proc.imsg id-HandoverPreparation
HandoverCommand N s1ap.proc.sout id-HandoverPreparation
HandoverPreparationFailure N s1ap.proc.uout id-HandoverPreparation
HandoverRequest N s1ap.proc.imsg id-HandoverResourceAllocation
HandoverRequestAcknowledge N s1ap.proc.sout id-HandoverResourceAllocation
HandoverFailure N s1ap.proc.uout id-HandoverResourceAllocation
HandoverNotify N s1ap.proc.imsg id-HandoverNotification
PathSwitchRequest N s1ap.proc.imsg id-PathSwitchRequest
PathSwitchRequestAcknowledge N s1ap.proc.sout id-PathSwitchRequest
PathSwitchRequestFailure N s1ap.proc.uout id-PathSwitchRequest
SAEBearerSetupRequest N s1ap.proc.imsg id-SAEBearerSetup
SAEBearerSetupResponse N s1ap.proc.sout id-SAEBearerSetup
SAEBearerModifyRequest N s1ap.proc.imsg id-SAEBearerModify
SAEBearerModifyResponse N s1ap.proc.sout id-SAEBearerModify
SAEBearerReleaseCommand N s1ap.proc.imsg id-SAEBearerRelease
SAEBearerReleaseComplete N s1ap.proc.sout id-SAEBearerRelease
SAEBearerReleaseRequest N s1ap.proc.imsg id-SAEBearerReleaseRequest
InitialContextSetupRequest N s1ap.proc.imsg id-InitialContextSetup
InitialContextSetupResponse N s1ap.proc.sout id-InitialContextSetup
InitialContextSetupFailure N s1ap.proc.uout id-InitialContextSetup
UEContextReleaseRequest N s1ap.proc.imsg id-UEContextReleaseRequest
Paging N s1ap.proc.imsg id-Paging
DownlinkNASTransport N s1ap.proc.imsg id-downlinkNASTransport
InitialUEMessage N s1ap.proc.imsg id-initialUEMessage
UplinkNASTransport N s1ap.proc.imsg id-uplinkNASTransport
NASNonDeliveryIndication N s1ap.proc.imsg id-NASNonDeliveryIndication
HandoverCancel N s1ap.proc.imsg id-HandoverCancel
HandoverCancelAcknowledge N s1ap.proc.sout id-HandoverCancel
Reset N s1ap.proc.imsg id-Reset
ResetAcknowledge N s1ap.proc.sout id-Reset
ErrorIndication N s1ap.proc.imsg id-ErrorIndication
S1SetupRequest N s1ap.proc.imsg id-S1Setup
S1SetupResponse N s1ap.proc.sout id-S1Setup
S1SetupFailure N s1ap.proc.uout id-S1Setup
#.END