HNBAP, RUA and RANAP protocol codecs

This patch introduces protocol codecs for the HNBAP, RUA and RANAP
protocols, which is mandatory for testing IuCS, IuPS or Iuh in
the future.

As Eclipse TITAN ASN.1 only supports the BER codec and the above
protocols all use APER, we need to use an external transcoder from
APER to BER and vice-versa.  This was implemented using a proprietary
ASN.1 compiler / trnaslator which sysmocom is packaging as
libfftranscode, which is made available as binary package
for Debian 9 at https://ftp.osmocom.org/binaries/libfftranscode/

Related: OS#2856, OS#2857, OS#2858
Change-Id: If4a72de9bc54d6e6a7daaca78a4d4aa5684203a5
This commit is contained in:
Harald Welte 2018-06-18 19:49:39 +02:00
parent 3e16b4d2f3
commit a013e68fc9
31 changed files with 12411 additions and 0 deletions

1
asn-test/ttcn3_asn1_rename.sh Executable file
View File

@ -0,0 +1 @@
for f in *.asn; do nf=`echo $f | sed -e 's/-/_/'g`; mv $f $nf; done

View File

@ -0,0 +1,55 @@
-- HNBAP-CommonDataTypes.asn
--
-- 3GPP TS 25.469 V10.1.0 (2011-06)
-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
--
-- 9.3.5 Common Definitions
--
-- **************************************************************
--
-- Common definitions
--
-- **************************************************************
HNBAP-CommonDataTypes {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-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..65535),
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 @@
-- HNBAP-Constants.asn
--
-- 3GPP TS 25.469 V10.1.0 (2011-06)
-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
--
-- 9.3.6 Constant Definitions
--
-- **************************************************************
--
-- Constant definitions
--
-- **************************************************************
HNBAP-Constants {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-Constants (4) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
ProcedureCode,
ProtocolIE-ID
FROM HNBAP-CommonDataTypes;
-- **************************************************************
--
-- Elementary Procedures
--
id-HNBRegister ProcedureCode ::= 1
id-HNBDe-Register ProcedureCode ::= 2
id-UERegister ProcedureCode ::= 3
id-UEDe-Register ProcedureCode ::= 4
id-ErrorIndication ProcedureCode ::= 5
id-privateMessage ProcedureCode ::= 6
id-CSGMembershipUpdate ProcedureCode ::= 7
id-TNLUpdate ProcedureCode ::= 9
id-HNBConfigTransfer ProcedureCode ::= 10
id-RelocationComplete ProcedureCode ::= 11
-- **************************************************************
--
-- Lists
--
-- **************************************************************
maxNrOfErrors INTEGER ::= 256
maxnoofRABs INTEGER ::= 256
maxnoofNeighbours INTEGER ::= 32
maxnoofIurhAddresses INTEGER ::= 3
-- **************************************************************
--
-- IEs
--
-- **************************************************************
id-Cause ProtocolIE-ID ::= 1
id-CriticalityDiagnostics ProtocolIE-ID ::= 2
id-HNB-Identity ProtocolIE-ID ::= 3
id-Context-ID ProtocolIE-ID ::= 4
id-UE-Identity ProtocolIE-ID ::= 5
id-LAC ProtocolIE-ID ::= 6
id-RAC ProtocolIE-ID ::= 7
id-HNB-Location-Information ProtocolIE-ID ::= 8
id-PLMNidentity ProtocolIE-ID ::= 9
id-SAC ProtocolIE-ID ::= 10
id-CellIdentity ProtocolIE-ID ::= 11
id-Registration-Cause ProtocolIE-ID ::= 12
id-UE-Capabilities ProtocolIE-ID ::= 13
id-RNC-ID ProtocolIE-ID ::= 14
id-CSG-ID ProtocolIE-ID ::= 15
id-BackoffTimer ProtocolIE-ID ::= 16
id-HNB-Internet-Information ProtocolIE-ID ::= 17
id-HNB-Cell-Access-Mode ProtocolIE-ID ::= 18
id-MuxPortNumber ProtocolIE-ID ::= 19
id-Service-Area-For-Broadcast ProtocolIE-ID ::= 20
id-CSGMembershipStatus ProtocolIE-ID ::= 21
id-RABList ProtocolIE-ID ::= 22
id-HNBConfigInfo ProtocolIE-ID ::= 23
id-AccessResult ProtocolIE-ID ::= 25
id-Update-cause ProtocolIE-ID ::= 26
id-NeighbourInfoList ProtocolIE-ID ::= 27
id-NeighbourInfoRequestList ProtocolIE-ID ::= 28
id-Iurh-Signalling-TNL-Address ProtocolIE-ID ::= 29
id-PSC ProtocolIE-ID ::= 30
id-HNB-Cell-Identifier ProtocolIE-ID ::= 31
END

View File

@ -0,0 +1,157 @@
-- HNBAP-Containers.asn
--
-- 3GPP TS 25.469 V10.1.0 (2011-06)
-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
--
-- 9.3.7 Container Definitions
--
-- **************************************************************
--
-- Container definitions
--
-- **************************************************************
HNBAP-Containers {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-Containers (5) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
Presence,
PrivateIE-ID,
ProtocolIE-ID,
maxPrivateIEs,
maxProtocolExtensions,
maxProtocolIEs
FROM HNBAP-CommonDataTypes;
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
HNBAP-PROTOCOL-IES ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&criticality Criticality,
&Value,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol Extensions
--
-- **************************************************************
HNBAP-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
--
-- **************************************************************
HNBAP-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 {HNBAP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Single-Container {HNBAP-PROTOCOL-IES : IEsSetParam} ::=
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Field {HNBAP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
id HNBAP-PROTOCOL-IES.&id ({IEsSetParam}),
criticality HNBAP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
value HNBAP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container Lists for Protocol IE Containers
--
-- **************************************************************
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, HNBAP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-Container {{IEsSetParam}}
-- **************************************************************
--
-- Container for Protocol Extensions
--
-- **************************************************************
ProtocolExtensionContainer {HNBAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
ProtocolExtensionField {{ExtensionSetParam}}
ProtocolExtensionField {HNBAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
id HNBAP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
criticality HNBAP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
extensionValue HNBAP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
}
-- **************************************************************
--
-- Container for Private IEs
--
-- **************************************************************
PrivateIE-Container {HNBAP-PRIVATE-IES : IEsSetParam } ::=
SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
PrivateIE-Field {{IEsSetParam}}
PrivateIE-Field {HNBAP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
id HNBAP-PRIVATE-IES.&id ({IEsSetParam}),
criticality HNBAP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
value HNBAP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
}
END

View File

@ -0,0 +1,64 @@
#include <string.h>
#include <stdarg.h>
#include "HNBAP_PDU_Descriptions.hh"
extern "C" {
#include <fftranscode/transcode.h>
}
namespace HNBAP__Types {
TTCN_Module HNBAP__EncDec("HNBAP_EncDec", __DATE__, __TIME__);
OCTETSTRING enc__HNBAP__PDU(const HNBAP__PDU__Descriptions::HNBAP__PDU &pdu)
{
uint8_t *aper_buf;
int aper_buf_len;
TTCN_Buffer TTCN_buf;
TTCN_buf.clear();
/* Encode from abstract data type into BER/DER */
pdu.encode(HNBAP__PDU__Descriptions::HNBAP__PDU_descr_, TTCN_buf,
TTCN_EncDec::CT_BER, BER_ENCODE_DER);
aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_HNBAP, &aper_buf, TTCN_buf.get_data(), TTCN_buf.get_len());
if (aper_buf_len < 0) {
TTCN_error("fftranscode failed.");
}
/* make octetstring from output buffer */
OCTETSTRING ret_val(aper_buf_len, aper_buf);
/* release dynamically-allocated output buffer */
fftranscode_free(aper_buf);
return ret_val;
}
HNBAP__PDU__Descriptions::HNBAP__PDU dec__HNBAP__PDU(const OCTETSTRING &stream)
{
uint8_t *ber_buf;
int ber_buf_len;
/* First, decode APER + re-encode as BER */
ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_HNBAP, &ber_buf, (const unsigned char *)stream, stream.lengthof());
if (ber_buf_len < 0) {
TTCN_error("fftranscode failed.");
}
/* Then, re-encode from BER to TITAN representation */
HNBAP__PDU__Descriptions::HNBAP__PDU ret_dcc;
TTCN_Buffer TTCN_buf;
TTCN_buf.clear();
TTCN_buf.put_s(ber_buf_len, ber_buf);
ret_dcc.decode(HNBAP__PDU__Descriptions::HNBAP__PDU_descr_, TTCN_buf,
TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
fftranscode_free(ber_buf);
return ret_dcc;
}
}

518
library/hnbap/HNBAP_IEs.asn Normal file
View File

@ -0,0 +1,518 @@
-- HNBAP-IEs.asn
--
-- 3GPP TS 25.469 V10.1.0 (2011-06)
-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
--
-- 9.3.4 Information Element Definitions
--
-- **************************************************************
--
-- Information Element Definitions
--
-- **************************************************************
HNBAP-IEs {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-IEs (2) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
maxNrOfErrors,
maxnoofRABs,
maxnoofNeighbours,
maxnoofIurhAddresses,
id-HNB-Internet-Information,
id-HNB-Cell-Identifier
FROM HNBAP-Constants
Criticality,
ProcedureCode,
ProtocolIE-ID,
TriggeringMessage
FROM HNBAP-CommonDataTypes
ProtocolExtensionContainer{},
HNBAP-PROTOCOL-EXTENSION
FROM HNBAP-Containers;
--A
Access-stratum-release-indicator ::= ENUMERATED {r99,
rel-4, rel-5, rel-6, rel-7, rel-8-and-beyond,
...}
AccessResult ::= ENUMERATED {allowed, notAllowed, ...}
AltitudeAndDirection ::= SEQUENCE {
directionOfAltitude ENUMERATED {height, depth},
altitude INTEGER (0..32767),
...
}
--B
BackoffTimer ::= INTEGER(0..3600)
BindingID ::= OCTET STRING(SIZE(1..4,...))
--C
Cause ::= CHOICE {
radioNetwork CauseRadioNetwork,
transport CauseTransport,
protocol CauseProtocol,
misc CauseMisc,
...
}
CauseRadioNetwork ::= ENUMERATED {
overload,
unauthorised-Location,
unauthorised-HNB,
hNB-parameter-mismatch,
invalid-UE-identity,
uE-not-allowed-on-this-HNB,
uE-unauthorised,
connection-with-UE-lost,
ue-RRC-telease,
hNB-not-registered,
unspecified,
normal,
uE-relocated,
ue-registered-in-another-HNB,
...
}
CauseTransport ::= ENUMERATED {
transport-resource-unavailable,
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,
...
}
CauseMisc ::= ENUMERATED {
processing-overload,
hardware-failure,
o-and-m-intervention,
unspecified,
...
}
CellIdentity ::= BIT STRING (SIZE (28))
Context-ID ::= BIT STRING (SIZE(24))
CriticalityDiagnostics ::= SEQUENCE {
procedureCode ProcedureCode OPTIONAL,
triggeringMessage TriggeringMessage OPTIONAL,
procedureCriticality Criticality OPTIONAL,
iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL,
...
}
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 HNBAP-PROTOCOL-EXTENSION ::= {
...
}
CriticalityDiagnostics-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
CSG-ID ::= BIT STRING (SIZE (27))
CSG-Capability ::= ENUMERATED {
csg-capable,
not-csg-capable,
...
}
CSGMembershipStatus ::= ENUMERATED {
member,
non-member,
...
}
CGI ::= SEQUENCE {
pLMNidentity PLMNidentity,
lAC LAC,
cI CI,
iE-Extensions ProtocolExtensionContainer { {CGI-ExtIEs} } OPTIONAL
}
CGI-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
CI ::= OCTET STRING (SIZE (2))
CN-DomainIndicator ::= ENUMERATED {
cs-domain,
ps-domain
}
--D
--E
ESN ::= BIT STRING (SIZE(32))
--F
--G
GeographicalLocation ::= SEQUENCE {
geographicalCoordinates GeographicalCoordinates,
altitudeAndDirection AltitudeAndDirection,
iE-Extensions ProtocolExtensionContainer { { GeographicLocation-ExtIEs} } OPTIONAL,
...
}
GeographicLocation-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
GeographicalCoordinates ::= SEQUENCE {
latitudeSign ENUMERATED {north, south},
latitude INTEGER (0..8388607),
longitude INTEGER (-8388608..8388607),
iE-Extensions ProtocolExtensionContainer { {GeographicalCoordinates-ExtIEs} } OPTIONAL,
...
}
GeographicalCoordinates-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
GTP-TEI ::= OCTET STRING (SIZE (4))
--H
HNB-Cell-Access-Mode::= ENUMERATED {
closed,
hybrid,
open,
...
}
HNB-Cell-Identifier ::= SEQUENCE {
pLMNidentity PLMNidentity,
cellIdentity CellIdentity,
iE-Extensions ProtocolExtensionContainer { { HNB-Cell-Identifier-ExtIEs } } OPTIONAL,
...
}
HNB-Cell-Identifier-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
HNB-RNL-Identity ::= CHOICE {
hNB-Identity-as-Cell-Identifier HNB-Cell-Identifier,
...
}
HNBConfigInfo ::= SEQUENCE {
hnb-RNL-Identity HNB-RNL-Identity,
configurationInformation ConfigurationInformation,
iE-Extensions ProtocolExtensionContainer { { HNBConfigInfo-ExtIEs } } OPTIONAL,
...
}
HNBConfigInfo-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
ConfigurationInformation ::= CHOICE {
provided HNBConfigurationInformationProvided,
missing HNBConfigurationInformationMissing,
...
}
HNBConfigurationInformationProvided ::= SEQUENCE {
psc PSC OPTIONAL,
cSG-ID CSG-ID OPTIONAL,
hNB-Cell-Access-Mode HNB-Cell-Access-Mode,
iurh-Signalling-TNL-AddressList Iurh-Signalling-TNL-AddressList,
iE-Extensions ProtocolExtensionContainer { { HNBConfigurationInformationProvided-ExtIEs } } OPTIONAL,
...
}
HNBConfigurationInformationProvided-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
HNBConfigurationInformationMissing ::= SEQUENCE {
cause Cause,
iE-Extensions ProtocolExtensionContainer { { HNBConfigurationInformationMissing-ExtIEs } } OPTIONAL,
...
}
HNBConfigurationInformationMissing-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
HNB-Location-Information ::= SEQUENCE {
macroCoverageInfo MacroCoverageInformation OPTIONAL,
geographicalCoordinates GeographicalLocation OPTIONAL,
iE-Extensions ProtocolExtensionContainer { { HNB-Location-Information-ExtIEs } } OPTIONAL,
...
}
HNB-Location-Information-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
-- Extension for release-8 to support IP address for location verification --
{ID id-HNB-Internet-Information CRITICALITY reject EXTENSION IP-Address PRESENCE optional },
...
}
HNB-Identity ::= SEQUENCE {
hNB-Identity-Info HNB-Identity-Info,
iE-Extensions ProtocolExtensionContainer { { HNB-Identity-ExtIEs } } OPTIONAL,
...
}
HNB-Identity-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
HNB-Identity-Info ::= OCTET STRING (SIZE (1..255))
--I
IMEI ::= BIT STRING (SIZE(60))
IMSI ::= OCTET STRING (SIZE (3..8))
-- Reference: 23.003
IMSIDS41 ::= OCTET STRING (SIZE (5..7))
IMSIESN ::= SEQUENCE {
iMSIDS41 IMSIDS41,
eSN ESN
}
IP-Address ::=SEQUENCE {
ipaddress CHOICE {
ipv4info Ipv4Address,
ipv6info Ipv6Address,
...
},
iE-Extensions ProtocolExtensionContainer { { IP-Address-ExtIEs } } OPTIONAL,
...
}
IP-Address-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
Ipv4Address ::= OCTET STRING (SIZE (4))
Ipv6Address ::= OCTET STRING (SIZE (16))
Iurh-Signalling-TNL-AddressList ::= SEQUENCE (SIZE(1..maxnoofIurhAddresses)) OF IP-Address
--J
--K
--L
LAC ::= OCTET STRING(SIZE(2))
LAI ::= SEQUENCE {
pLMNID PLMNidentity,
lAC LAC,
...
}
-- M
MacroCoverageInformation ::= SEQUENCE {
cellIdentity MacroCellID,
iE-Extensions ProtocolExtensionContainer { { MacroCoverageInformation-ExtIEs } } OPTIONAL,
...
}
MacroCoverageInformation-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
MacroCellID ::= CHOICE {
uTRANCellID UTRANCellID,
gERANCellID CGI,
...
}
MuxPortNumber ::= INTEGER (1024..65535)
--N
NeighbourInfoList ::= SEQUENCE (SIZE(1..maxnoofNeighbours)) OF HNBConfigInfo
NeighbourInfoRequestList ::= SEQUENCE (SIZE(1..maxnoofNeighbours)) OF NeighbourInfoRequestItem
NeighbourInfoRequestItem ::= SEQUENCE {
hnb-RNL-Identity HNB-RNL-Identity,
iE-Extensions ProtocolExtensionContainer { { NeighbourInfoRequestItem-ExtIEs } } OPTIONAL,
...
}
NeighbourInfoRequestItem-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
--O
--P
PLMNidentity ::= OCTET STRING (SIZE (3))
PSC ::= BIT STRING (SIZE(9))
PTMSI ::= BIT STRING (SIZE(32))
PTMSIRAI ::= SEQUENCE {
pTMSI PTMSI,
rAI RAI,
...
}
--Q
--R
RAB-ID ::= BIT STRING (SIZE (8))
RABList ::= SEQUENCE (SIZE(1..maxnoofRABs)) OF RABListItem
RABListItem ::= SEQUENCE {
rAB-ID RAB-ID,
old-transport-Info TransportInfo,
new-transport-Info TransportInfo,
cn-domain-indicator CN-DomainIndicator,
iE-Extensions ProtocolExtensionContainer { { RABListItem-ExtIEs } } OPTIONAL,
...
}
RABListItem-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
RAC ::= OCTET STRING(SIZE(1))
RAI ::= SEQUENCE {
lAI LAI,
rAC RAC,
...
}
Registration-Cause ::= ENUMERATED {
emergency-call,
normal,
...,
ue-relocation
}
RNC-ID ::= INTEGER(0..65535)
--S
SAC ::= OCTET STRING(SIZE(2))
--T
TMSILAI ::= SEQUENCE {
tMSI BIT STRING(SIZE (32)),
lAI LAI
}
TMSIDS41 ::= OCTET STRING (SIZE (2..17))
TransportInfo ::= SEQUENCE {
transportLayerAddress TransportLayerAddress,
transportAssociation CHOICE {
gtp-TEI GTP-TEI,
bindingID BindingID,
...
},
iE-Extensions ProtocolExtensionContainer { { TransportInfo-ExtIEs } } OPTIONAL,
...
}
TransportInfo-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
TransportLayerAddress ::= BIT STRING(SIZE(1..160,...))
TypeOfError ::= ENUMERATED {
not-understood,
missing,
...
}
--U
UE-Capabilities ::= SEQUENCE {
access-stratum-release-indicator Access-stratum-release-indicator,
csg-capability CSG-Capability,
iE-Extensions ProtocolExtensionContainer { { UE-Capabilities-ExtIEs } } OPTIONAL,
...
}
UE-Capabilities-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
UTRANCellID ::= SEQUENCE {
lAC LAC,
rAC RAC,
pLMNidentity PLMNidentity,
uTRANcellID CellIdentity,
iE-Extensions ProtocolExtensionContainer { {UTRANCellID-ExtIEs} } OPTIONAL
}
UTRANCellID-ExtIEs HNBAP-PROTOCOL-EXTENSION ::= {
...
}
UE-Identity ::= CHOICE {
iMSI IMSI,
tMSILAI TMSILAI,
pTMSIRAI PTMSIRAI,
iMEI IMEI,
eSN ESN,
iMSIDS41 IMSIDS41,
iMSIESN IMSIESN,
tMSIDS41 TMSIDS41,
...
}
Update-cause ::= ENUMERATED {
relocation-preparation,
...
}
--V
--W
--X
--Y
--Z
END

View File

@ -0,0 +1,490 @@
-- HNBAP-PDU-Contents.asn
--
-- 3GPP TS 25.469 V10.1.0 (2011-06)
-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
--
-- 9.3.3 PDU Definitions
--
HNBAP-PDU-Contents {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-PDU-Contents (1) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Cause,
CriticalityDiagnostics,
CSGMembershipStatus,
HNB-Location-Information,
HNB-Identity,
Context-ID,
UE-Identity,
LAC,
RAC,
SAC,
CN-DomainIndicator,
IP-Address,
Registration-Cause,
UE-Capabilities,
PLMNidentity,
CellIdentity,
RNC-ID,
CSG-ID,
HNB-Cell-Access-Mode,
BackoffTimer,
MuxPortNumber,
RABList,
HNBConfigInfo,
AccessResult,
Update-cause,
NeighbourInfoList,
NeighbourInfoRequestList,
PSC
FROM HNBAP-IEs
ProtocolExtensionContainer{},
ProtocolIE-ContainerList{},
ProtocolIE-Container{},
ProtocolIE-Single-Container{},
PrivateIE-Container{},
HNBAP-PRIVATE-IES,
HNBAP-PROTOCOL-EXTENSION,
HNBAP-PROTOCOL-IES
FROM HNBAP-Containers
id-Cause,
id-CriticalityDiagnostics,
id-CSGMembershipStatus,
id-HNB-Location-Information,
id-HNB-Identity,
id-Context-ID,
id-PLMNidentity,
id-UE-Identity,
id-LAC,
id-RAC,
id-SAC,
id-UE-Capabilities,
id-Registration-Cause,
id-CellIdentity,
id-RNC-ID,
id-CSG-ID,
id-HNB-Cell-Access-Mode,
id-BackoffTimer,
id-Service-Area-For-Broadcast,
id-MuxPortNumber,
id-RABList,
id-HNBConfigInfo,
id-AccessResult,
id-Update-cause,
id-NeighbourInfoList,
id-NeighbourInfoRequestList,
id-Iurh-Signalling-TNL-Address,
id-PSC
FROM HNBAP-Constants;
-- **************************************************************
--
-- HNB Register REQUEST
--
-- **************************************************************
HNBRegisterRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {HNBRegisterRequestIEs} },
protocolExtensions ProtocolExtensionContainer { {HNBRegisterRequestExtensions} } OPTIONAL,
...
}
HNBRegisterRequestIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-HNB-Identity CRITICALITY reject TYPE HNB-Identity PRESENCE mandatory } |
{ ID id-HNB-Location-Information CRITICALITY reject TYPE HNB-Location-Information PRESENCE mandatory } |
{ ID id-PLMNidentity CRITICALITY reject TYPE PLMNidentity PRESENCE mandatory } |
{ ID id-CellIdentity CRITICALITY reject TYPE CellIdentity PRESENCE mandatory } |
{ ID id-LAC CRITICALITY reject TYPE LAC PRESENCE mandatory } |
{ ID id-RAC CRITICALITY reject TYPE RAC PRESENCE mandatory } |
{ ID id-SAC CRITICALITY reject TYPE SAC PRESENCE mandatory } |
{ ID id-CSG-ID CRITICALITY reject TYPE CSG-ID PRESENCE optional } ,
...
}
HNBRegisterRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
{ ID id-Service-Area-For-Broadcast CRITICALITY ignore EXTENSION SAC PRESENCE optional }|
{ ID id-HNB-Cell-Access-Mode CRITICALITY reject EXTENSION HNB-Cell-Access-Mode PRESENCE optional }|
{ ID id-PSC CRITICALITY ignore EXTENSION PSC PRESENCE optional }|
{ ID id-Iurh-Signalling-TNL-Address CRITICALITY ignore EXTENSION IP-Address PRESENCE optional },
...
}
-- **************************************************************
--
-- HNB Register Accept
--
-- **************************************************************
HNBRegisterAccept ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {HNBRegisterResponseIEs} },
protocolExtensions ProtocolExtensionContainer { {HNBRegisterResponseExtensions} } OPTIONAL,
...
}
HNBRegisterResponseIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-RNC-ID CRITICALITY reject TYPE RNC-ID PRESENCE mandatory },
...
}
HNBRegisterResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 9 to support CS Multiplexing --
{ ID id-MuxPortNumber CRITICALITY ignore EXTENSION MuxPortNumber PRESENCE optional}|
{ ID id-Iurh-Signalling-TNL-Address CRITICALITY ignore EXTENSION IP-Address PRESENCE optional},
...
}
-- **************************************************************
--
-- HNB Register REJECT
--
-- **************************************************************
HNBRegisterReject ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {HNBRegisterRejectIEs} },
protocolExtensions ProtocolExtensionContainer { {HNBRegisterRejectExtensions} } OPTIONAL,
...
}
HNBRegisterRejectIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } |
{ ID id-BackoffTimer CRITICALITY reject TYPE BackoffTimer PRESENCE conditional },
-- This IE shall be present if the Cause IE is set to "Overload".
...
}
HNBRegisterRejectExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- HNB De- Register
--
-- **************************************************************
HNBDe-Register ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {HNBDe-RegisterIEs} },
protocolExtensions ProtocolExtensionContainer { {HNBDe-RegisterExtensions} } OPTIONAL,
...
}
HNBDe-RegisterIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
{ ID id-BackoffTimer CRITICALITY reject TYPE BackoffTimer PRESENCE conditional },
-- This IE shall be present if the Cause IE is set to "Overload".
...
}
HNBDe-RegisterExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- UE Register REQUEST
--
-- **************************************************************
UERegisterRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {UERegisterRequestIEs} },
protocolExtensions ProtocolExtensionContainer { {UERegisterRequestExtensions} } OPTIONAL,
...
}
UERegisterRequestIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-UE-Identity CRITICALITY reject TYPE UE-Identity PRESENCE mandatory } |
{ ID id-Registration-Cause CRITICALITY ignore TYPE Registration-Cause PRESENCE mandatory } |
{ ID id-UE-Capabilities CRITICALITY reject TYPE UE-Capabilities PRESENCE mandatory },
...
}
UERegisterRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- UE Register ACCEPT
--
-- **************************************************************
UERegisterAccept ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {UERegisterAcceptIEs} },
protocolExtensions ProtocolExtensionContainer { {UERegisterAcceptExtensions} } OPTIONAL,
...
}
UERegisterAcceptIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-UE-Identity CRITICALITY reject TYPE UE-Identity PRESENCE mandatory } |
{ ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory },
...
}
UERegisterAcceptExtensions HNBAP-PROTOCOL-EXTENSION ::= {
{ ID id-CSGMembershipStatus CRITICALITY reject EXTENSION CSGMembershipStatus PRESENCE optional },
...
}
-- **************************************************************
--
-- UE Register REJECT
--
-- **************************************************************
UERegisterReject ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {UERegisterRejectIEs} },
protocolExtensions ProtocolExtensionContainer { {UERegisterRejectExtensions} } OPTIONAL,
...
}
UERegisterRejectIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-UE-Identity CRITICALITY reject TYPE UE-Identity PRESENCE mandatory } |
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
UERegisterRejectExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- UE De-Register
--
-- **************************************************************
UEDe-Register ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {UEDe-RegisterIEs} },
protocolExtensions ProtocolExtensionContainer { {UEDe-RegisterExtensions} } OPTIONAL,
...
}
UEDe-RegisterIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } ,
...
}
UEDe-RegisterExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- CSG Membership Update
--
-- **************************************************************
CSGMembershipUpdate ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {CSGMembershipUpdateIEs} },
protocolExtensions ProtocolExtensionContainer { {CSGMembershipUpdateExtensions} } OPTIONAL,
...
}
CSGMembershipUpdateIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
{ ID id-CSGMembershipStatus CRITICALITY reject TYPE CSGMembershipStatus PRESENCE mandatory },
...
}
CSGMembershipUpdateExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- TNL Update Request
--
-- **************************************************************
TNLUpdateRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {TNLUpdateRequestIEs} },
protocolExtensions ProtocolExtensionContainer { {TNLUpdateExtensions} } OPTIONAL,
...
}
TNLUpdateRequestIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
{ ID id-RABList CRITICALITY reject TYPE RABList PRESENCE mandatory } |
{ ID id-Update-cause CRITICALITY reject TYPE Update-cause PRESENCE mandatory } ,
...
}
TNLUpdateExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- TNL UPDATE RESPONSE
--
-- **************************************************************
TNLUpdateResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container { { TNLUpdateResponseIEs} },
protocolExtensions ProtocolExtensionContainer { { TNLUpdateResponseExtensions} } OPTIONAL,
...
}
TNLUpdateResponseIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } ,
...
}
TNLUpdateResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- TNL UPDATE FAILURE
--
-- **************************************************************
TNLUpdateFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {TNLUpdateFailureIEs} },
protocolExtensions ProtocolExtensionContainer { {TNLUpdateFailureExtensions} } OPTIONAL,
...
}
TNLUpdateFailureIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional } ,
...
}
TNLUpdateFailureExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- HNB Configuration Transfer Request
--
-- **************************************************************
HNBConfigTransferRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {HNBConfigTransferRequestIEs} },
protocolExtensions ProtocolExtensionContainer { {HNBConfigTransferRequestExtensions} } OPTIONAL,
...
}
HNBConfigTransferRequestIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-NeighbourInfoRequestList CRITICALITY reject TYPE NeighbourInfoRequestList PRESENCE mandatory } ,
...
}
HNBConfigTransferRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- HNB Configuration Transfer Response
--
-- **************************************************************
HNBConfigTransferResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container { { HNBConfigTransferResponseIEs} },
protocolExtensions ProtocolExtensionContainer { { HNBConfigTransferResponseExtensions} } OPTIONAL,
...
}
HNBConfigTransferResponseIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-NeighbourInfoList CRITICALITY reject TYPE NeighbourInfoList PRESENCE mandatory } ,
...
}
HNBConfigTransferResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- RELOCATION COMPLETE
--
-- **************************************************************
RelocationComplete ::= SEQUENCE {
protocolIEs ProtocolIE-Container { { RelocationCompleteIEs} },
protocolExtensions ProtocolExtensionContainer { { RelocationCompleteExtensions} } OPTIONAL,
...
}
RelocationCompleteIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-Context-ID CRITICALITY ignore TYPE Context-ID PRESENCE mandatory } ,
...
}
RelocationCompleteExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- ERROR INDICATION
--
-- **************************************************************
ErrorIndication ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {ErrorIndicationIEs} },
protocolExtensions ProtocolExtensionContainer { {ErrorIndicationExtensions} } OPTIONAL,
...
}
ErrorIndicationIEs HNBAP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
ErrorIndicationExtensions HNBAP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- PRIVATE MESSAGE
--
-- **************************************************************
PrivateMessage ::= SEQUENCE {
privateIEs PrivateIE-Container {{PrivateMessage-IEs}},
...
}
PrivateMessage-IEs HNBAP-PRIVATE-IES ::= {
...
}
END

View File

@ -0,0 +1,231 @@
-- HNBAP-PDU-Descriptions.asn
--
-- 3GPP TS 25.469 V10.1.0 (2011-06)
-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
--
-- 9.3.2 Elementary Procedure definitions
--
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
-- **************************************************************
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
HNBAP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-PDU-Descriptions (0)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
ProcedureCode
FROM HNBAP-CommonDataTypes
HNBRegisterRequest,
HNBRegisterAccept,
HNBRegisterReject,
HNBDe-Register,
UERegisterRequest,
UERegisterAccept,
UERegisterReject,
UEDe-Register,
ErrorIndication,
PrivateMessage,
CSGMembershipUpdate,
TNLUpdateRequest,
TNLUpdateResponse,
TNLUpdateFailure,
HNBConfigTransferRequest,
HNBConfigTransferResponse,
RelocationComplete
FROM HNBAP-PDU-Contents
id-HNBRegister,
id-UERegister,
id-UEDe-Register,
id-HNBDe-Register,
id-ErrorIndication,
id-privateMessage,
id-CSGMembershipUpdate,
id-TNLUpdate,
id-HNBConfigTransfer,
id-RelocationComplete
FROM HNBAP-Constants;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
HNBAP-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 definitions
--
-- **************************************************************
HNBAP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode HNBAP-ELEMENTARY-PROCEDURE.&procedureCode ({HNBAP-ELEMENTARY-PROCEDURES}),
criticality HNBAP-ELEMENTARY-PROCEDURE.&criticality ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value HNBAP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode HNBAP-ELEMENTARY-PROCEDURE.&procedureCode ({HNBAP-ELEMENTARY-PROCEDURES}),
criticality HNBAP-ELEMENTARY-PROCEDURE.&criticality ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value HNBAP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode HNBAP-ELEMENTARY-PROCEDURE.&procedureCode ({HNBAP-ELEMENTARY-PROCEDURES}),
criticality HNBAP-ELEMENTARY-PROCEDURE.&criticality ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value HNBAP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({HNBAP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
HNBAP-ELEMENTARY-PROCEDURES HNBAP-ELEMENTARY-PROCEDURE ::= {
HNBAP-ELEMENTARY-PROCEDURES-CLASS-1 |
HNBAP-ELEMENTARY-PROCEDURES-CLASS-2 ,
...
}
HNBAP-ELEMENTARY-PROCEDURES-CLASS-1 HNBAP-ELEMENTARY-PROCEDURE ::= {
hNBRegister|
uERegister,
...,
tnlUpdate |
hNBConfigTransfer
}
HNBAP-ELEMENTARY-PROCEDURES-CLASS-2 HNBAP-ELEMENTARY-PROCEDURE ::= {
uEDe-Register |
hNBDe-Register |
errorIndication |
privateMessage,
...,
csg-membership-update|
relocationComplete
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
hNBRegister HNBAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HNBRegisterRequest
SUCCESSFUL OUTCOME HNBRegisterAccept
UNSUCCESSFUL OUTCOME HNBRegisterReject
PROCEDURE CODE id-HNBRegister
CRITICALITY reject
}
uERegister HNBAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UERegisterRequest
SUCCESSFUL OUTCOME UERegisterAccept
UNSUCCESSFUL OUTCOME UERegisterReject
PROCEDURE CODE id-UERegister
CRITICALITY reject
}
uEDe-Register HNBAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEDe-Register
PROCEDURE CODE id-UEDe-Register
CRITICALITY ignore
}
hNBDe-Register HNBAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HNBDe-Register
PROCEDURE CODE id-HNBDe-Register
CRITICALITY ignore
}
errorIndication HNBAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-ErrorIndication
CRITICALITY ignore
}
csg-membership-update HNBAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE CSGMembershipUpdate
PROCEDURE CODE id-CSGMembershipUpdate
CRITICALITY ignore
}
tnlUpdate HNBAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE TNLUpdateRequest
SUCCESSFUL OUTCOME TNLUpdateResponse
UNSUCCESSFUL OUTCOME TNLUpdateFailure
PROCEDURE CODE id-TNLUpdate
CRITICALITY reject
}
hNBConfigTransfer HNBAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HNBConfigTransferRequest
SUCCESSFUL OUTCOME HNBConfigTransferResponse
PROCEDURE CODE id-HNBConfigTransfer
CRITICALITY reject
}
relocationComplete HNBAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RelocationComplete
PROCEDURE CODE id-RelocationComplete
CRITICALITY ignore
}
privateMessage HNBAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PrivateMessage
PROCEDURE CODE id-privateMessage
CRITICALITY ignore
}
END

View File

@ -0,0 +1,7 @@
module HNBAP_Types {
import from HNBAP_PDU_Descriptions language "ASN.1:1997" all;
external function enc_HNBAP_PDU(in HNBAP_PDU pdu) return octetstring;
external function dec_HNBAP_PDU(in octetstring stream) return HNBAP_PDU;
}

View File

@ -0,0 +1,9 @@
#!/bin/sh
FILES="*.asn *.ttcn HNBAP_EncDec.cc"
../../regen-makefile.sh $FILES
sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile
sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile

View File

@ -0,0 +1,410 @@
module RANAP_CodecPort {
/* Simple RANAP Codec Port, translating between raw SCCP primitives with
* octetstring payload towards the SCCP provider, and RANAP-SCCP primitives
* which carry the decoded RANAP data types as payload.
*
* (C) 2017-2018 by Harald Welte <laforge@gnumonks.org>
* All rights reserved.
*
* Released under the terms of GNU General Public License, Version 2 or
* (at your option) any later version.
*/
import from General_Types all;
import from Osmocom_Types all;
import from SCCPasp_Types all;
import from SCCP_Types all;
import from RANAP_PDU_Descriptions all;
import from RANAP_Types all;
type record RANAP_N_CONNECT_req
{
SCCP_PAR_Address calledAddress,
SCCP_PAR_Address callingAddress optional,
SCCP_PAR_Expedited_Data_Sel expeditedDataSel optional,
SCCP_PAR_Quality_Of_Service qualityOfService optional,
RANAP_PDU userData optional,
SCCP_PAR_Connection_Id connectionId optional,
SCCP_PAR_Importance importance optional
}
template RANAP_N_CONNECT_req ts_RANAP_CONNECT_req(SCCP_PAR_Address called,
SCCP_PAR_Address calling,
SCCP_PAR_Connection_Id conn_id,
template RANAP_PDU ranap := omit) := {
calledAddress := called,
callingAddress := calling,
expeditedDataSel := omit,
qualityOfService := omit,
userData := ranap,
connectionId := conn_id,
importance := omit
}
type record RANAP_N_CONNECT_ind
{
SCCP_PAR_Address calledAddress,
SCCP_PAR_Address callingAddress optional,
SCCP_PAR_Quality_Of_Service qualityOfService optional,
RANAP_PDU userData optional,
SCCP_PAR_Connection_Id connectionId optional,
SCCP_PAR_Importance importance optional
}
template RANAP_N_CONNECT_ind tr_RANAP_CONNECT_ind(template SCCP_PAR_Address called,
template SCCP_PAR_Address calling,
template RANAP_PDU payload := *) := {
calledAddress := called,
callingAddress := calling,
qualityOfService := *,
userData := payload,
connectionId := *,
importance := *
}
type record RANAP_N_CONNECT_res
{
SCCP_PAR_Address respondingAddress optional,
SCCP_PAR_Expedited_Data_Sel expeditedDataSel optional,
SCCP_PAR_Quality_Of_Service qualityOfService optional,
RANAP_PDU userData optional,
SCCP_PAR_Connection_Id connectionId optional,
SCCP_PAR_Importance importance optional
}
template RANAP_N_CONNECT_res ts_RANAP_CONNECT_res(SCCP_PAR_Connection_Id conn_id,
template RANAP_PDU ranap := omit) := {
respondingAddress := omit,
expeditedDataSel := omit,
qualityOfService := omit,
userData := ranap,
connectionId := conn_id,
importance := omit
}
type record RANAP_N_CONNECT_cfm
{
SCCP_PAR_Address respondingAddress optional,
SCCP_PAR_Quality_Of_Service qualityOfService optional,
RANAP_PDU userData optional,
SCCP_PAR_Connection_Id connectionId optional,
SCCP_PAR_Importance importance optional
}
template RANAP_N_CONNECT_cfm tr_RANAP_CONNECT_cfm(template SCCP_PAR_Connection_Id conn_id,
template RANAP_PDU ranap := *) := {
respondingAddress := *,
qualityOfService := *,
userData := ranap,
connectionId := conn_id,
importance := *
}
type record RANAP_N_DATA_req
{
RANAP_PDU userData ,
SCCP_PAR_Connection_Id connectionId optional ,
SCCP_PAR_Importance importance optional
}
template RANAP_N_DATA_req ts_RANAP_DATA_req(SCCP_PAR_Connection_Id conn_id,
template RANAP_PDU ranap) := {
userData := ranap,
connectionId := conn_id,
importance := omit
}
type record RANAP_N_DATA_ind
{
RANAP_PDU userData ,
SCCP_PAR_Connection_Id connectionId optional ,
SCCP_PAR_Importance importance optional
}
template RANAP_N_DATA_ind tr_RANAP_DATA_ind(SCCP_PAR_Connection_Id conn_id,
template RANAP_PDU ranap := *) := {
userData := ranap,
connectionId := conn_id,
importance := *
}
type record RANAP_N_DISCONNECT_req
{
SCCP_PAR_Address respondingAddress optional,
SCCP_PAR_Reason reason ,
RANAP_PDU userData optional ,
SCCP_PAR_Connection_Id connectionId optional ,
SCCP_PAR_Importance importance optional
}
template RANAP_N_DISCONNECT_req ts_RANAP_DISC_req(SCCP_PAR_Connection_Id conn_id,
template SCCP_PAR_Reason reason,
template RANAP_PDU ranap := omit) := {
respondingAddress := omit,
reason := reason,
userData := ranap,
connectionId := conn_id,
importance := omit
}
type record RANAP_N_DISCONNECT_ind
{
SCCP_PAR_Originator originator ,
SCCP_PAR_Address respondingAddress optional ,
SCCP_PAR_Reason reason ,
RANAP_PDU userData optional ,
SCCP_PAR_Connection_Id connectionId optional ,
SCCP_PAR_Importance importance optional
}
template RANAP_N_DISCONNECT_ind tr_RANAP_DISC_ind(template SCCP_PAR_Connection_Id conn_id,
template SCCP_PAR_Originator originator,
template SCCP_PAR_Reason reason,
template RANAP_PDU ranap := *) := {
originator := originator,
respondingAddress:= *,
reason := reason,
userData := ranap,
connectionId := conn_id,
importance := *
}
type record RANAP_N_UNITDATA_req
{
SCCP_PAR_Address calledAddress ,
SCCP_PAR_Address callingAddress ,
SCCP_PAR_Sequence_Control sequenceControl optional ,
SCCP_PAR_Return_Option returnOption optional ,
RANAP_PDU userData ,
SCCP_PAR_Importance importance optional
}
template RANAP_N_UNITDATA_req ts_RANAP_UNITDATA_req(SCCP_PAR_Address called, SCCP_PAR_Address calling, template RANAP_PDU payload) := {
calledAddress := called,
callingAddress := calling,
sequenceControl := omit,
returnOption := omit,
userData := payload,
importance := omit
}
type record RANAP_N_UNITDATA_ind
{
SCCP_PAR_Address calledAddress ,
SCCP_PAR_Address callingAddress ,
SCCP_PAR_Sequence_Control sequenceControl optional ,
SCCP_PAR_Return_Option returnOption optional ,
RANAP_PDU userData ,
SCCP_PAR_Importance importance optional
}
template RANAP_N_UNITDATA_ind tr_RANAP_UNITDATA_ind(template SCCP_PAR_Address called, template SCCP_PAR_Address calling, template RANAP_PDU payload) := {
calledAddress := called,
callingAddress := calling,
sequenceControl := *,
returnOption := *,
userData := payload,
importance := *
}
type record RANAP_N_NOTICE_ind
{
SCCP_PAR_Address calledAddress ,
SCCP_PAR_Address callingAddress ,
SCCP_PAR_Reason_For_Return reasonForReturn ,
RANAP_PDU userData ,
SCCP_PAR_Importance importance optional
}
private function f_dec_ConnectInd(in ASP_SCCP_N_CONNECT_ind pin, out RANAP_N_CONNECT_ind pout) {
pout.calledAddress := pin.calledAddress;
pout.callingAddress := pin.callingAddress;
pout.qualityOfService := pin.qualityOfService;
if (ispresent(pin.userData)) {
pout.userData := dec_RANAP_PDU(pin.userData);
} else {
pout.userData := omit;
}
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
private function f_dec_ConnectCfm(in ASP_SCCP_N_CONNECT_cfm pin, out RANAP_N_CONNECT_cfm pout) {
pout.respondingAddress := pin.respondingAddress;
pout.qualityOfService := pin.qualityOfService;
if (ispresent(pin.userData)) {
pout.userData := dec_RANAP_PDU(pin.userData);
} else {
pout.userData := omit;
}
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
private function f_dec_DataInd(in ASP_SCCP_N_DATA_ind pin, out RANAP_N_DATA_ind pout) {
pout.userData := dec_RANAP_PDU(pin.userData);
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
private function f_dec_DisconnectInd(in ASP_SCCP_N_DISCONNECT_ind pin, out RANAP_N_DISCONNECT_ind pout) {
pout.originator := pin.originator;
pout.respondingAddress := pin.respondingAddress;
pout.reason := pin.reason;
if (ispresent(pin.userData)) {
pout.userData := dec_RANAP_PDU(pin.userData);
} else {
pout.userData := omit;
}
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
private function f_dec_UnitdataInd(in ASP_SCCP_N_UNITDATA_ind pin, out RANAP_N_UNITDATA_ind pout) {
pout.calledAddress := pin.calledAddress;
pout.callingAddress := pin.callingAddress;
pout.sequenceControl := pin.sequenceControl;
pout.returnOption := pin.returnOption;
pout.userData := dec_RANAP_PDU(pin.userData);
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
private function f_dec_NoticeInd(in ASP_SCCP_N_NOTICE_ind pin, out RANAP_N_NOTICE_ind pout) {
pout.calledAddress := pin.calledAddress;
pout.callingAddress := pin.callingAddress;
pout.reasonForReturn := pin.reasonForReturn;
pout.userData := dec_RANAP_PDU(pin.userData);
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
private function f_enc_ConnectReq(in RANAP_N_CONNECT_req pin, out ASP_SCCP_N_CONNECT_req pout) {
pout.calledAddress := pin.calledAddress;
pout.callingAddress := pin.callingAddress;
pout.expeditedDataSel := pin.expeditedDataSel;
pout.qualityOfService := pin.qualityOfService;
if (ispresent(pin.userData)) {
pout.userData := enc_RANAP_PDU(pin.userData);
} else {
pout.userData := omit;
}
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
private function f_enc_ConnectRes(in RANAP_N_CONNECT_res pin, out ASP_SCCP_N_CONNECT_res pout) {
pout.respondingAddress := pin.respondingAddress;
pout.expeditedDataSel := pin.expeditedDataSel;
pout.qualityOfService := pin.qualityOfService;
if (ispresent(pin.userData)) {
pout.userData := enc_RANAP_PDU(pin.userData);
} else {
pout.userData := omit;
}
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
private function f_enc_DataReq(in RANAP_N_DATA_req pin, out ASP_SCCP_N_DATA_req pout) {
pout.userData := enc_RANAP_PDU(pin.userData);
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
private function f_enc_DisconnectReq(in RANAP_N_DISCONNECT_req pin, out ASP_SCCP_N_DISCONNECT_req pout) {
pout.respondingAddress := pin.respondingAddress;
pout.reason := pin.reason;
if (ispresent(pin.userData)) {
pout.userData := enc_RANAP_PDU(pin.userData);
} else {
pout.userData := omit;
}
pout.connectionId := pin.connectionId;
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
private function f_enc_UnitdataReq(in RANAP_N_UNITDATA_req pin, out ASP_SCCP_N_UNITDATA_req pout) {
pout.calledAddress := pin.calledAddress;
pout.callingAddress := pin.callingAddress;
pout.userData := enc_RANAP_PDU(pin.userData);
pout.sequenceControl := pin.sequenceControl;
pout.returnOption := pin.returnOption;
pout.importance := pin.importance;
//port.setstate(0);
} with {extension "prototype(fast)" }
/*
type port RANAP_CODEC_PT message map to SCCPasp_PT {
out RANAP_N_CONNECT_req to ASP_SCCP_N_CONNECT_req with f_enc_ConnectReq(),
RANAP_N_CONNECT_res to ASP_SCCP_N_CONNECT_res with f_enc_ConnectRes(),
RANAP_N_DATA_req to ASP_SCCP_N_DATA_req with f_enc_DataReq(),
RANAP_N_DISCONNECT_req to ASP_SCCP_N_DISCONNECT_req with f_enc_DisconnectReq(),
RANAP_N_UNITDATA_req to ASP_SCCP_N_UNITDATA_req with f_enc_UnitdataReq(),
ASP_SCCP_N_RESET_req, ASP_SCCP_N_RESET_resp;
in RANAP_N_CONNECT_ind from ASP_SCCP_N_CONNECT_ind with f_dec_ConnectInd(),
RANAP_N_CONNECT_cfm from ASP_SCCP_N_CONNECT_cfm with f_dec_ConnectCfm(),
RANAP_N_DATA_ind from ASP_SCCP_N_DATA_ind with f_dec_DataInd(),
RANAP_N_DISCONNECT_ind from ASP_SCCP_N_DISCONNECT_ind with f_dec_DisconnectInd(),
RANAP_N_UNITDATA_ind from ASP_SCCP_N_UNITDATA_ind with f_dec_UnitdataInd(),
RANAP_N_NOTICE_ind from ASP_SCCP_N_NOTICE_ind with f_dec_NoticeInd(),
ASP_SCCP_N_STATE_ind, ASP_SCCP_N_RESET_ind, ASP_SCCP_N_RESET_cfm;
} with {extension "internal"}
*/
type port RANAP_CODEC_PT message {
out RANAP_N_CONNECT_req,
RANAP_N_CONNECT_res,
RANAP_N_DATA_req,
RANAP_N_DISCONNECT_req,
RANAP_N_UNITDATA_req,
ASP_SCCP_N_RESET_req;
in RANAP_N_CONNECT_ind,
RANAP_N_CONNECT_cfm,
RANAP_N_DATA_ind,
RANAP_N_DISCONNECT_ind,
RANAP_N_UNITDATA_ind,
RANAP_N_NOTICE_ind,
ASP_SCCP_N_RESET_ind,
ASP_SCCP_N_RESET_cfm,
ASP_SCCP_N_STATE_ind;
} with { extension "internal user SCCPasp_PT
out(RANAP_N_CONNECT_req -> ASP_SCCP_N_CONNECT_req: function(f_enc_ConnectReq);
RANAP_N_CONNECT_res -> ASP_SCCP_N_CONNECT_res: function(f_enc_ConnectRes);
RANAP_N_DATA_req -> ASP_SCCP_N_DATA_req: function(f_enc_DataReq);
RANAP_N_DISCONNECT_req -> ASP_SCCP_N_DISCONNECT_req: function(f_enc_DisconnectReq);
RANAP_N_UNITDATA_req -> ASP_SCCP_N_UNITDATA_req: function(f_enc_UnitdataReq);
ASP_SCCP_N_RESET_req -> ASP_SCCP_N_RESET_req: simple)
in(ASP_SCCP_N_CONNECT_ind -> RANAP_N_CONNECT_ind: function(f_dec_ConnectInd);
ASP_SCCP_N_CONNECT_cfm -> RANAP_N_CONNECT_cfm: function(f_dec_ConnectCfm);
ASP_SCCP_N_DATA_ind -> RANAP_N_DATA_ind: function(f_dec_DataInd);
ASP_SCCP_N_DISCONNECT_ind -> RANAP_N_DISCONNECT_ind: function(f_dec_DisconnectInd);
ASP_SCCP_N_UNITDATA_ind -> RANAP_N_UNITDATA_ind: function(f_dec_UnitdataInd);
ASP_SCCP_N_NOTICE_ind -> RANAP_N_NOTICE_ind: function(f_dec_NoticeInd);
ASP_SCCP_N_RESET_ind -> ASP_SCCP_N_RESET_ind: simple;
ASP_SCCP_N_RESET_cfm -> ASP_SCCP_N_RESET_cfm: simple;
ASP_SCCP_N_STATE_ind -> ASP_SCCP_N_STATE_ind: simple)"
}
}

View File

@ -0,0 +1,40 @@
-- RANAP-CommonDataTypes.asn
--
-- 3GPP TS 25.413 V14.0.0 (2017-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25413.htm
--
-- 9.3.5 Common Definitions
--
-- **************************************************************
--
-- Common definitions
--
-- **************************************************************
RANAP-CommonDataTypes {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) ranap (0) version1 (1) ranap-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, outcome }
END

View File

@ -0,0 +1,436 @@
-- RANAP-Constants.asn
--
-- 3GPP TS 25.413 V14.0.0 (2017-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25413.htm
--
-- 9.3.6 Constant Definitions
--
-- **************************************************************
--
-- Constant definitions
--
-- **************************************************************
RANAP-Constants {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) ranap (0) version1 (1) ranap-Constants (4) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- Elementary Procedures
--
-- **************************************************************
id-RAB-Assignment INTEGER ::= 0
id-Iu-Release INTEGER ::= 1
id-RelocationPreparation INTEGER ::= 2
id-RelocationResourceAllocation INTEGER ::= 3
id-RelocationCancel INTEGER ::= 4
id-SRNS-ContextTransfer INTEGER ::= 5
id-SecurityModeControl INTEGER ::= 6
id-DataVolumeReport INTEGER ::= 7
--WS Extension
id-Not-Used-8 INTEGER ::= 8
id-Reset INTEGER ::= 9
id-RAB-ReleaseRequest INTEGER ::= 10
id-Iu-ReleaseRequest INTEGER ::= 11
id-RelocationDetect INTEGER ::= 12
id-RelocationComplete INTEGER ::= 13
id-Paging INTEGER ::= 14
id-CommonID INTEGER ::= 15
id-CN-InvokeTrace INTEGER ::= 16
id-LocationReportingControl INTEGER ::= 17
id-LocationReport INTEGER ::= 18
id-InitialUE-Message INTEGER ::= 19
id-DirectTransfer INTEGER ::= 20
id-OverloadControl INTEGER ::= 21
id-ErrorIndication INTEGER ::= 22
id-SRNS-DataForward INTEGER ::= 23
id-ForwardSRNS-Context INTEGER ::= 24
id-privateMessage INTEGER ::= 25
id-CN-DeactivateTrace INTEGER ::= 26
id-ResetResource INTEGER ::= 27
id-RANAP-Relocation INTEGER ::= 28
id-RAB-ModifyRequest INTEGER ::= 29
id-LocationRelatedData INTEGER ::= 30
id-InformationTransfer INTEGER ::= 31
id-UESpecificInformation INTEGER ::= 32
id-UplinkInformationExchange INTEGER ::= 33
id-DirectInformationTransfer INTEGER ::= 34
id-MBMSSessionStart INTEGER ::= 35
id-MBMSSessionUpdate INTEGER ::= 36
id-MBMSSessionStop INTEGER ::= 37
id-MBMSUELinking INTEGER ::= 38
id-MBMSRegistration INTEGER ::= 39
id-MBMSCNDe-Registration-Procedure INTEGER ::= 40
id-MBMSRABEstablishmentIndication INTEGER ::= 41
id-MBMSRABRelease INTEGER ::= 42
id-enhancedRelocationComplete INTEGER ::= 43
id-enhancedRelocationCompleteConfirm INTEGER ::= 44
id-RANAPenhancedRelocation INTEGER ::= 45
id-SRVCCPreparation INTEGER ::= 46
id-UeRadioCapabilityMatch INTEGER ::= 47
id-UeRegistrationQuery INTEGER ::= 48
id-RerouteNASRequest INTEGER ::= 49
-- **************************************************************
--
-- Extension constants
--
-- **************************************************************
maxPrivateIEs INTEGER ::= 65535
maxProtocolExtensions INTEGER ::= 65535
maxProtocolIEs INTEGER ::= 65535
-- **************************************************************
--
-- Lists
--
-- **************************************************************
maxNrOfDTs INTEGER ::= 15
maxNrOfErrors INTEGER ::= 256
maxNrOfIuSigConIds INTEGER ::= 250
maxNrOfPDPDirections INTEGER ::= 2
maxNrOfPoints INTEGER ::= 15
maxNrOfRABs INTEGER ::= 256
maxNrOfSeparateTrafficDirections INTEGER ::= 2
maxNrOfSRBs INTEGER ::= 8
maxNrOfVol INTEGER ::= 2
maxNrOfLevels INTEGER ::= 256
maxNrOfAltValues INTEGER ::= 16
maxNrOfPLMNsSN INTEGER ::= 32
maxNrOfLAs INTEGER ::= 65536
maxNrOfSNAs INTEGER ::= 65536
maxNrOfUEsToBeTraced INTEGER ::= 64
maxNrOfInterfaces INTEGER ::= 16
maxRAB-Subflows INTEGER ::= 7
maxRAB-SubflowCombination INTEGER ::= 64
maxSet INTEGER ::= 9
maxNrOfHSDSCHMACdFlows-1 INTEGER ::= 7
maxnoofMulticastServicesPerUE INTEGER ::= 128
maxnoofMulticastServicesPerRNC INTEGER ::= 512
maxMBMSSA INTEGER ::= 256
maxMBMSRA INTEGER ::= 65536
maxNrOfEDCHMACdFlows-1 INTEGER ::= 7
maxGANSSSet INTEGER ::= 9
maxNrOfCSGs INTEGER ::= 256
maxNrOfEUTRAFreqs INTEGER ::= 8
maxNrOfCellIds INTEGER ::= 32
maxNrOfRAIs INTEGER ::= 8
maxNrOfLAIs INTEGER ::= 8
maxSizeOfIMSInfo INTEGER ::= 32
maxnoofMDTPLMNs INTEGER ::= 16
maxAddPosSet INTEGER ::= 8
maxnoofPLMNs INTEGER ::= 16
-- **************************************************************
--
-- IEs
--
-- **************************************************************
id-AreaIdentity INTEGER ::= 0
-- WS Extension
id-Not-Used-1 INTEGER ::= 1
id-Not-Used-2 INTEGER ::= 2
id-CN-DomainIndicator INTEGER ::= 3
id-Cause INTEGER ::= 4
id-ChosenEncryptionAlgorithm INTEGER ::= 5
id-ChosenIntegrityProtectionAlgorithm INTEGER ::= 6
id-ClassmarkInformation2 INTEGER ::= 7
id-ClassmarkInformation3 INTEGER ::= 8
id-CriticalityDiagnostics INTEGER ::= 9
id-DL-GTP-PDU-SequenceNumber INTEGER ::= 10
id-EncryptionInformation INTEGER ::= 11
id-IntegrityProtectionInformation INTEGER ::= 12
id-IuTransportAssociation INTEGER ::= 13
id-L3-Information INTEGER ::= 14
id-LAI INTEGER ::= 15
id-NAS-PDU INTEGER ::= 16
id-NonSearchingIndication INTEGER ::= 17
id-NumberOfSteps INTEGER ::= 18
id-OMC-ID INTEGER ::= 19
id-OldBSS-ToNewBSS-Information INTEGER ::= 20
id-PagingAreaID INTEGER ::= 21
id-PagingCause INTEGER ::= 22
id-PermanentNAS-UE-ID INTEGER ::= 23
id-RAB-ContextItem INTEGER ::= 24
id-RAB-ContextList INTEGER ::= 25
id-RAB-DataForwardingItem INTEGER ::= 26
id-RAB-DataForwardingItem-SRNS-CtxReq INTEGER ::= 27
id-RAB-DataForwardingList INTEGER ::= 28
id-RAB-DataForwardingList-SRNS-CtxReq INTEGER ::= 29
id-RAB-DataVolumeReportItem INTEGER ::= 30
id-RAB-DataVolumeReportList INTEGER ::= 31
id-RAB-DataVolumeReportRequestItem INTEGER ::= 32
id-RAB-DataVolumeReportRequestList INTEGER ::= 33
id-RAB-FailedItem INTEGER ::= 34
id-RAB-FailedList INTEGER ::= 35
id-RAB-ID INTEGER ::= 36
id-RAB-QueuedItem INTEGER ::= 37
id-RAB-QueuedList INTEGER ::= 38
id-RAB-ReleaseFailedList INTEGER ::= 39
id-RAB-ReleaseItem INTEGER ::= 40
id-RAB-ReleaseList INTEGER ::= 41
id-RAB-ReleasedItem INTEGER ::= 42
id-RAB-ReleasedList INTEGER ::= 43
id-RAB-ReleasedList-IuRelComp INTEGER ::= 44
id-RAB-RelocationReleaseItem INTEGER ::= 45
id-RAB-RelocationReleaseList INTEGER ::= 46
id-RAB-SetupItem-RelocReq INTEGER ::= 47
id-RAB-SetupItem-RelocReqAck INTEGER ::= 48
id-RAB-SetupList-RelocReq INTEGER ::= 49
id-RAB-SetupList-RelocReqAck INTEGER ::= 50
id-RAB-SetupOrModifiedItem INTEGER ::= 51
id-RAB-SetupOrModifiedList INTEGER ::= 52
id-RAB-SetupOrModifyItem INTEGER ::= 53
id-RAB-SetupOrModifyList INTEGER ::= 54
id-RAC INTEGER ::= 55
id-RelocationType INTEGER ::= 56
id-RequestType INTEGER ::= 57
id-SAI INTEGER ::= 58
id-SAPI INTEGER ::= 59
id-SourceID INTEGER ::= 60
id-Source-ToTarget-TransparentContainer INTEGER ::= 61
id-TargetID INTEGER ::= 62
id-Target-ToSource-TransparentContainer INTEGER ::= 63
id-TemporaryUE-ID INTEGER ::= 64
id-TraceReference INTEGER ::= 65
id-TraceType INTEGER ::= 66
id-TransportLayerAddress INTEGER ::= 67
id-TriggerID INTEGER ::= 68
id-UE-ID INTEGER ::= 69
id-UL-GTP-PDU-SequenceNumber INTEGER ::= 70
id-RAB-FailedtoReportItem INTEGER ::= 71
id-RAB-FailedtoReportList INTEGER ::= 72
-- WS Extension
id-Not-Used-73 INTEGER ::= 73
id-Not-Used-74 INTEGER ::= 74
id-KeyStatus INTEGER ::= 75
id-DRX-CycleLengthCoefficient INTEGER ::= 76
id-IuSigConIdList INTEGER ::= 77
id-IuSigConIdItem INTEGER ::= 78
id-IuSigConId INTEGER ::= 79
id-DirectTransferInformationItem-RANAP-RelocInf INTEGER ::= 80
id-DirectTransferInformationList-RANAP-RelocInf INTEGER ::= 81
id-RAB-ContextItem-RANAP-RelocInf INTEGER ::= 82
id-RAB-ContextList-RANAP-RelocInf INTEGER ::= 83
id-RAB-ContextFailedtoTransferItem INTEGER ::= 84
id-RAB-ContextFailedtoTransferList INTEGER ::= 85
id-GlobalRNC-ID INTEGER ::= 86
id-RAB-ReleasedItem-IuRelComp INTEGER ::= 87
id-MessageStructure INTEGER ::= 88
id-Alt-RAB-Parameters INTEGER ::= 89
id-Ass-RAB-Parameters INTEGER ::= 90
id-RAB-ModifyList INTEGER ::= 91
id-RAB-ModifyItem INTEGER ::= 92
id-TypeOfError INTEGER ::= 93
id-BroadcastAssistanceDataDecipheringKeys INTEGER ::= 94
id-LocationRelatedDataRequestType INTEGER ::= 95
id-GlobalCN-ID INTEGER ::= 96
id-LastKnownServiceArea INTEGER ::= 97
id-SRB-TrCH-Mapping INTEGER ::= 98
id-InterSystemInformation-TransparentContainer INTEGER ::= 99
id-NewBSS-To-OldBSS-Information INTEGER ::= 100
-- WS extension
id-Not-Used-101 INTEGER ::= 101
id-Not-Used-102 INTEGER ::= 102
id-SourceRNC-PDCP-context-info INTEGER ::= 103
id-InformationTransferID INTEGER ::= 104
id-SNA-Access-Information INTEGER ::= 105
id-ProvidedData INTEGER ::= 106
id-GERAN-BSC-Container INTEGER ::= 107
id-GERAN-Classmark INTEGER ::= 108
id-GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item INTEGER ::= 109
id-GERAN-Iumode-RAB-FailedList-RABAssgntResponse INTEGER ::= 110
id-VerticalAccuracyCode INTEGER ::= 111
id-ResponseTime INTEGER ::= 112
id-PositioningPriority INTEGER ::= 113
id-ClientType INTEGER ::= 114
id-LocationRelatedDataRequestTypeSpecificToGERANIuMode INTEGER ::= 115
id-SignallingIndication INTEGER ::= 116
id-hS-DSCH-MAC-d-Flow-ID INTEGER ::= 117
id-UESBI-Iu INTEGER ::= 118
id-PositionData INTEGER ::= 119
id-PositionDataSpecificToGERANIuMode INTEGER ::= 120
id-CellLoadInformationGroup INTEGER ::= 121
id-AccuracyFulfilmentIndicator INTEGER ::= 122
id-InformationTransferType INTEGER ::= 123
id-TraceRecordingSessionInformation INTEGER ::= 124
id-TracePropagationParameters INTEGER ::= 125
id-InterSystemInformationTransferType INTEGER ::= 126
id-SelectedPLMN-ID INTEGER ::= 127
id-RedirectionCompleted INTEGER ::= 128
id-RedirectionIndication INTEGER ::= 129
id-NAS-SequenceNumber INTEGER ::= 130
id-RejectCauseValue INTEGER ::= 131
id-APN INTEGER ::= 132
id-CNMBMSLinkingInformation INTEGER ::= 133
id-DeltaRAListofIdleModeUEs INTEGER ::= 134
id-FrequenceLayerConvergenceFlag INTEGER ::= 135
id-InformationExchangeID INTEGER ::= 136
id-InformationExchangeType INTEGER ::= 137
id-InformationRequested INTEGER ::= 138
id-InformationRequestType INTEGER ::= 139
id-IPMulticastAddress INTEGER ::= 140
id-JoinedMBMSBearerServicesList INTEGER ::= 141
id-LeftMBMSBearerServicesList INTEGER ::= 142
id-MBMSBearerServiceType INTEGER ::= 143
id-MBMSCNDe-Registration INTEGER ::= 144
id-MBMSServiceArea INTEGER ::= 145
id-MBMSSessionDuration INTEGER ::= 146
id-MBMSSessionIdentity INTEGER ::= 147
id-PDP-TypeInformation INTEGER ::= 148
id-RAB-Parameters INTEGER ::= 149
id-RAListofIdleModeUEs INTEGER ::= 150
id-MBMSRegistrationRequestType INTEGER ::= 151
id-SessionUpdateID INTEGER ::= 152
id-TMGI INTEGER ::= 153
id-TransportLayerInformation INTEGER ::= 154
id-UnsuccessfulLinkingList INTEGER ::= 155
id-MBMSLinkingInformation INTEGER ::= 156
id-MBMSSessionRepetitionNumber INTEGER ::= 157
id-AlternativeRABConfiguration INTEGER ::= 158
id-AlternativeRABConfigurationRequest INTEGER ::= 159
id-E-DCH-MAC-d-Flow-ID INTEGER ::= 160
id-SourceBSS-ToTargetBSS-TransparentContainer INTEGER ::= 161
id-TargetBSS-ToSourceBSS-TransparentContainer INTEGER ::= 162
id-TimeToMBMSDataTransfer INTEGER ::= 163
id-IncludeVelocity INTEGER ::= 164
id-VelocityEstimate INTEGER ::= 165
id-RedirectAttemptFlag INTEGER ::= 166
id-RAT-Type INTEGER ::= 167
id-PeriodicLocationInfo INTEGER ::= 168
id-MBMSCountingInformation INTEGER ::= 169
id-170-not-to-be-used-for-IE-ids INTEGER ::= 170
id-ExtendedRNC-ID INTEGER ::= 171
id-Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf INTEGER ::= 172
id-Alt-RAB-Parameter-ExtendedMaxBitrateInf INTEGER ::= 173
id-Ass-RAB-Parameter-ExtendedGuaranteedBitrateList INTEGER ::= 174
id-Ass-RAB-Parameter-ExtendedMaxBitrateList INTEGER ::= 175
id-RAB-Parameter-ExtendedGuaranteedBitrateList INTEGER ::= 176
id-RAB-Parameter-ExtendedMaxBitrateList INTEGER ::= 177
id-Requested-RAB-Parameter-ExtendedMaxBitrateList INTEGER ::= 178
id-Requested-RAB-Parameter-ExtendedGuaranteedBitrateList INTEGER ::= 179
id-LAofIdleModeUEs INTEGER ::= 180
id-newLAListofIdleModeUEs INTEGER ::= 181
id-LAListwithNoIdleModeUEsAnyMore INTEGER ::= 182
id-183-not-to-be-used-for-IE-ids INTEGER ::= 183
id-GANSS-PositioningDataSet INTEGER ::= 184
id-RequestedGANSSAssistanceData INTEGER ::= 185
id-BroadcastGANSSAssistanceDataDecipheringKeys INTEGER ::= 186
id-d-RNTI-for-NoIuCSUP INTEGER ::= 187
id-RAB-SetupList-EnhancedRelocCompleteReq INTEGER ::= 188
id-RAB-SetupItem-EnhancedRelocCompleteReq INTEGER ::= 189
id-RAB-SetupList-EnhancedRelocCompleteRes INTEGER ::= 190
id-RAB-SetupItem-EnhancedRelocCompleteRes INTEGER ::= 191
id-RAB-SetupList-EnhRelocInfoReq INTEGER ::= 192
id-RAB-SetupItem-EnhRelocInfoReq INTEGER ::= 193
id-RAB-SetupList-EnhRelocInfoRes INTEGER ::= 194
id-RAB-SetupItem-EnhRelocInfoRes INTEGER ::= 195
id-OldIuSigConId INTEGER ::= 196
id-RAB-FailedList-EnhRelocInfoRes INTEGER ::= 197
id-RAB-FailedItem-EnhRelocInfoRes INTEGER ::= 198
id-Global-ENB-ID INTEGER ::= 199
id-UE-History-Information INTEGER ::= 200
id-MBMSSynchronisationInformation INTEGER ::= 201
id-SubscriberProfileIDforRFP INTEGER ::= 202
id-CSG-Id INTEGER ::= 203
id-OldIuSigConIdCS INTEGER ::= 204
id-OldIuSigConIdPS INTEGER ::= 205
id-GlobalCN-IDCS INTEGER ::= 206
id-GlobalCN-IDPS INTEGER ::= 207
id-SourceExtendedRNC-ID INTEGER ::= 208
id-RAB-ToBeReleasedItem-EnhancedRelocCompleteRes INTEGER ::= 209
id-RAB-ToBeReleasedList-EnhancedRelocCompleteRes INTEGER ::= 210
id-SourceRNC-ID INTEGER ::= 211
id-Relocation-TargetRNC-ID INTEGER ::= 212
id-Relocation-TargetExtendedRNC-ID INTEGER ::= 213
id-Alt-RAB-Parameter-SupportedGuaranteedBitrateInf INTEGER ::= 214
id-Alt-RAB-Parameter-SupportedMaxBitrateInf INTEGER ::= 215
id-Ass-RAB-Parameter-SupportedGuaranteedBitrateList INTEGER ::= 216
id-Ass-RAB-Parameter-SupportedMaxBitrateList INTEGER ::= 217
id-RAB-Parameter-SupportedGuaranteedBitrateList INTEGER ::= 218
id-RAB-Parameter-SupportedMaxBitrateList INTEGER ::= 219
id-Requested-RAB-Parameter-SupportedMaxBitrateList INTEGER ::= 220
id-Requested-RAB-Parameter-SupportedGuaranteedBitrateList INTEGER ::= 221
id-Relocation-SourceRNC-ID INTEGER ::= 222
id-Relocation-SourceExtendedRNC-ID INTEGER ::= 223
id-EncryptionKey INTEGER ::= 224
id-IntegrityProtectionKey INTEGER ::= 225
id-SRVCC-HO-Indication INTEGER ::= 226
id-SRVCC-Information INTEGER ::= 227
id-SRVCC-Operation-Possible INTEGER ::= 228
id-CSG-Id-List INTEGER ::= 229
id-PSRABtobeReplaced INTEGER ::= 230
id-E-UTRAN-Service-Handover INTEGER ::= 231
-- WS Extension
id-Not-Used-232 INTEGER ::= 232
id-UE-AggregateMaximumBitRate INTEGER ::= 233
id-CSG-Membership-Status INTEGER ::= 234
id-Cell-Access-Mode INTEGER ::= 235
id-IP-Source-Address INTEGER ::= 236
id-CSFB-Information INTEGER ::= 237
id-PDP-TypeInformation-extension INTEGER ::= 238
id-MSISDN INTEGER ::= 239
id-Offload-RAB-Parameters INTEGER ::= 240
id-LGW-TransportLayerAddress INTEGER ::= 241
id-Correlation-ID INTEGER ::= 242
id-IRAT-Measurement-Configuration INTEGER ::= 243
id-MDT-Configuration INTEGER ::= 244
id-Priority-Class-Indicator INTEGER ::= 245
id-RNSAPRelocationParameters INTEGER ::= 247
id-RABParametersList INTEGER ::= 248
id-Management-Based-MDT-Allowed INTEGER ::= 249
id-HigherBitratesThan16MbpsFlag INTEGER ::= 250
id-Trace-Collection-Entity-IP-Addess INTEGER ::= 251
id-End-Of-CSFB INTEGER ::= 252
id-Time-UE-StayedInCell-EnhancedGranularity INTEGER ::= 253
id-Out-Of-UTRAN INTEGER ::= 254
id-TraceRecordingSessionReference INTEGER ::= 255
id-IMSI INTEGER ::= 256
id-HO-Cause INTEGER ::= 257
id-VoiceSupportMatchIndicator INTEGER ::= 258
id-RSRVCC-HO-Indication INTEGER ::= 259
id-RSRVCC-Information INTEGER ::= 260
id-AnchorPLMN-ID INTEGER ::= 261
id-Tunnel-Information-for-BBF INTEGER ::= 262
id-Management-Based-MDT-PLMN-List INTEGER ::= 263
id-SignallingBasedMDTPLMNList INTEGER ::= 264
id-M4Report INTEGER ::= 265
id-M5Report INTEGER ::= 266
id-M6Report INTEGER ::= 267
id-M7Report INTEGER ::= 268
id-TimingDifferenceULDL INTEGER ::= 269
id-Serving-Cell-Identifier INTEGER ::= 270
id-EARFCN-Extended INTEGER ::= 271
id-RSRVCC-Operation-Possible INTEGER ::= 272
id-SIPTO-LGW-TransportLayerAddress INTEGER ::= 273
id-SIPTO-Correlation-ID INTEGER ::= 274
id-LHN-ID INTEGER ::= 275
id-Session-Re-establishment-Indicator INTEGER ::= 276
id-LastE-UTRANPLMNIdentity INTEGER ::= 277
id-RSRQ-Type INTEGER ::= 278
id-RSRQ-Extension INTEGER ::= 279
id-Additional-CSPS-coordination-information INTEGER ::= 280
id-UERegistrationQueryResult INTEGER ::= 281
id-IuSigConIdRangeEnd INTEGER ::= 282
id-BarometricPressure INTEGER ::= 283
id-Additional-PositioningDataSet INTEGER ::= 284
id-CivicAddress INTEGER ::= 285
id-SGSN-Group-Identity INTEGER ::= 286
id-P-TMSI INTEGER ::= 287
id-RANAP-Message INTEGER ::= 288
id-PowerSavingIndicator INTEGER ::= 289
id-UE-Usage-Type INTEGER ::= 290
id-DCN-ID INTEGER ::= 291
id-UE-Application-Layer-Measurement-Configuration INTEGER ::= 292
id-UE-Application-Layer-Measurement-Configuration-For-Relocation INTEGER ::= 293
END

View File

@ -0,0 +1,202 @@
-- RANAP-Containers.asn
--
-- 3GPP TS 25.413 V14.0.0 (2017-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25413.htm
--
-- 9.3.7 Container Definitions
--
-- **************************************************************
--
-- Container definitions
--
-- **************************************************************
RANAP-Containers {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) ranap (0) version1 (1) ranap-Containers (5) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
Presence,
PrivateIE-ID,
ProtocolExtensionID,
ProtocolIE-ID
FROM RANAP-CommonDataTypes
maxPrivateIEs,
maxProtocolExtensions,
maxProtocolIEs
FROM RANAP-Constants;
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
RANAP-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
--
-- **************************************************************
RANAP-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
--
-- **************************************************************
RANAP-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
--
-- **************************************************************
RANAP-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 {RANAP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Field {RANAP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
id RANAP-PROTOCOL-IES.&id ({IEsSetParam}),
criticality RANAP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
value RANAP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container for Protocol IE Pairs
--
-- **************************************************************
ProtocolIE-ContainerPair {RANAP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-FieldPair {{IEsSetParam}}
ProtocolIE-FieldPair {RANAP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
id RANAP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
firstCriticality RANAP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
firstValue RANAP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
secondCriticality RANAP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
secondValue RANAP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container Lists for Protocol IE Containers
--
-- **************************************************************
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, RANAP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-Container {{IEsSetParam}}
ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, RANAP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-ContainerPair {{IEsSetParam}}
-- **************************************************************
--
-- Container for Protocol Extensions
--
-- **************************************************************
ProtocolExtensionContainer {RANAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
ProtocolExtensionField {{ExtensionSetParam}}
ProtocolExtensionField {RANAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
id RANAP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
criticality RANAP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
extensionValue RANAP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
}
-- **************************************************************
--
-- Container for Private IEs
--
-- **************************************************************
PrivateIE-Container {RANAP-PRIVATE-IES : IEsSetParam } ::=
SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
PrivateIE-Field {{IEsSetParam}}
PrivateIE-Field {RANAP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
id RANAP-PRIVATE-IES.&id ({IEsSetParam}),
criticality RANAP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
value RANAP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
}
END

View File

@ -0,0 +1,66 @@
#include <string.h>
#include <stdarg.h>
#include "RANAP_PDU_Descriptions.hh"
extern "C" {
#include <fftranscode/transcode.h>
}
namespace RANAP__Types {
TTCN_Module RANAP__EncDec("RANAP_EncDec", __DATE__, __TIME__);
OCTETSTRING enc__RANAP__PDU(const RANAP__PDU__Descriptions::RANAP__PDU &pdu)
{
uint8_t *aper_buf;
int aper_buf_len;
TTCN_Buffer TTCN_buf;
TTCN_buf.clear();
/* Encode from abstract data type into BER/DER */
pdu.encode(RANAP__PDU__Descriptions::RANAP__PDU_descr_, TTCN_buf,
TTCN_EncDec::CT_BER, BER_ENCODE_DER);
aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_RANAP, &aper_buf, TTCN_buf.get_data(), TTCN_buf.get_len());
if (aper_buf_len < 0) {
TTCN_Logger::begin_event_log2str();
TTCN_buf.log();
TTCN_error("fftranscode_ber2aper failed: %s", (const char *) TTCN_Logger::end_event_log2str());
}
/* make octetstring from output buffer */
OCTETSTRING ret_val(aper_buf_len, aper_buf);
/* release dynamically-allocated output buffer */
fftranscode_free(aper_buf);
return ret_val;
}
RANAP__PDU__Descriptions::RANAP__PDU dec__RANAP__PDU(const OCTETSTRING &stream)
{
uint8_t *ber_buf;
int ber_buf_len;
/* First, decode APER + re-encode as BER */
ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_RANAP, &ber_buf, (const unsigned char *)stream, stream.lengthof());
if (ber_buf_len < 0) {
TTCN_error("fftranscode_aper2ber failed.");
}
/* Then, re-encode from BER to TITAN representation */
RANAP__PDU__Descriptions::RANAP__PDU ret_dcc;
TTCN_Buffer TTCN_buf;
TTCN_buf.clear();
TTCN_buf.put_s(ber_buf_len, ber_buf);
ret_dcc.decode(RANAP__PDU__Descriptions::RANAP__PDU_descr_, TTCN_buf,
TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
fftranscode_free(ber_buf);
return ret_dcc;
}
}

2796
library/ranap/RANAP_IEs.asn Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,646 @@
-- RANAP-PDU-Descriptions.asn
--
-- 3GPP TS 25.413 V14.0.0 (2017-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25413.htm
--
-- 9.3.2 Elementary Procedure Definitions
--
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
RANAP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) ranap (0) version1 (1) ranap-PDU-Descriptions (0)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
ProcedureCode
FROM RANAP-CommonDataTypes
Iu-ReleaseCommand,
Iu-ReleaseComplete,
RelocationCommand,
RelocationPreparationFailure,
RelocationRequired,
RelocationRequest,
RelocationRequestAcknowledge,
RelocationFailure,
RelocationCancel,
RelocationCancelAcknowledge,
EnhancedRelocationCompleteRequest,
EnhancedRelocationCompleteResponse,
EnhancedRelocationCompleteFailure,
EnhancedRelocationCompleteConfirm,
SRNS-ContextRequest,
SRNS-ContextResponse,
SecurityModeCommand,
SecurityModeComplete,
SecurityModeReject,
DataVolumeReportRequest,
DataVolumeReport,
Reset,
ResetAcknowledge,
RAB-ReleaseRequest,
Iu-ReleaseRequest,
RelocationDetect,
RelocationComplete,
Paging,
CommonID,
CN-InvokeTrace,
CN-DeactivateTrace,
LocationReportingControl,
LocationReport,
InitialUE-Message,
DirectTransfer,
Overload,
ErrorIndication,
SRNS-DataForwardCommand,
ForwardSRNS-Context,
RAB-AssignmentRequest,
RAB-AssignmentResponse,
RAB-ModifyRequest,
PrivateMessage,
ResetResource,
ResetResourceAcknowledge,
RANAP-RelocationInformation,
RANAP-EnhancedRelocationInformationRequest,
RANAP-EnhancedRelocationInformationResponse,
LocationRelatedDataRequest,
LocationRelatedDataResponse,
LocationRelatedDataFailure,
InformationTransferIndication,
InformationTransferConfirmation,
InformationTransferFailure,
UESpecificInformationIndication,
DirectInformationTransfer,
UplinkInformationExchangeRequest,
UplinkInformationExchangeResponse,
UplinkInformationExchangeFailure,
MBMSSessionStart,
MBMSSessionStartResponse,
MBMSSessionStartFailure,
MBMSSessionUpdate,
MBMSSessionUpdateResponse,
MBMSSessionUpdateFailure,
MBMSSessionStop,
MBMSSessionStopResponse,
MBMSUELinkingRequest,
MBMSUELinkingResponse,
MBMSRegistrationRequest,
MBMSRegistrationResponse,
MBMSRegistrationFailure,
MBMSCNDe-RegistrationRequest,
MBMSCNDe-RegistrationResponse,
MBMSRABEstablishmentIndication,
MBMSRABReleaseRequest,
MBMSRABRelease,
MBMSRABReleaseFailure,
SRVCC-CSKeysRequest,
SRVCC-CSKeysResponse,
UeRadioCapabilityMatchRequest,
UeRadioCapabilityMatchResponse,
UeRegistrationQueryRequest,
UeRegistrationQueryResponse,
RerouteNASRequest
FROM RANAP-PDU-Contents
id-LocationRelatedData,
id-CN-DeactivateTrace,
id-CN-InvokeTrace,
id-CommonID,
id-DataVolumeReport,
id-DirectTransfer,
id-ErrorIndication,
id-ForwardSRNS-Context,
id-InformationTransfer,
id-InitialUE-Message,
id-Iu-Release,
id-Iu-ReleaseRequest,
id-LocationReport,
id-LocationReportingControl,
id-OverloadControl,
id-Paging,
id-privateMessage,
id-RAB-Assignment,
id-RAB-ReleaseRequest,
id-RAB-ModifyRequest,
id-RANAP-Relocation,
id-RANAPenhancedRelocation,
id-RelocationCancel,
id-RelocationComplete,
id-RelocationDetect,
id-RelocationPreparation,
id-RelocationResourceAllocation,
id-enhancedRelocationComplete,
id-enhancedRelocationCompleteConfirm,
id-Reset,
id-SRNS-ContextTransfer,
id-SRNS-DataForward,
id-SecurityModeControl,
id-ResetResource,
id-UESpecificInformation,
id-DirectInformationTransfer,
id-UplinkInformationExchange,
id-MBMSSessionStart,
id-MBMSSessionUpdate,
id-MBMSSessionStop,
id-MBMSUELinking,
id-MBMSRegistration,
id-MBMSCNDe-Registration-Procedure,
id-MBMSRABEstablishmentIndication,
id-MBMSRABRelease,
id-SRVCCPreparation,
id-UeRadioCapabilityMatch,
id-UeRegistrationQuery,
id-RerouteNASRequest
FROM RANAP-Constants;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
RANAP-ELEMENTARY-PROCEDURE ::= CLASS {
&InitiatingMessage ,
&SuccessfulOutcome OPTIONAL,
&UnsuccessfulOutcome OPTIONAL,
&Outcome OPTIONAL,
&procedureCode ProcedureCode UNIQUE,
&criticality Criticality DEFAULT ignore
}
WITH SYNTAX {
INITIATING MESSAGE &InitiatingMessage
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
[OUTCOME &Outcome]
PROCEDURE CODE &procedureCode
[CRITICALITY &criticality]
}
-- **************************************************************
--
-- Interface PDU Definition
--
-- **************************************************************
RANAP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
outcome Outcome,
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode RANAP-ELEMENTARY-PROCEDURE.&procedureCode ({RANAP-ELEMENTARY-PROCEDURES}),
criticality RANAP-ELEMENTARY-PROCEDURE.&criticality ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value RANAP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode RANAP-ELEMENTARY-PROCEDURE.&procedureCode ({RANAP-ELEMENTARY-PROCEDURES}),
criticality RANAP-ELEMENTARY-PROCEDURE.&criticality ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value RANAP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode RANAP-ELEMENTARY-PROCEDURE.&procedureCode ({RANAP-ELEMENTARY-PROCEDURES}),
criticality RANAP-ELEMENTARY-PROCEDURE.&criticality ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value RANAP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
Outcome ::= SEQUENCE {
procedureCode RANAP-ELEMENTARY-PROCEDURE.&procedureCode ({RANAP-ELEMENTARY-PROCEDURES}),
criticality RANAP-ELEMENTARY-PROCEDURE.&criticality ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value RANAP-ELEMENTARY-PROCEDURE.&Outcome ({RANAP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
RANAP-ELEMENTARY-PROCEDURES RANAP-ELEMENTARY-PROCEDURE ::= {
RANAP-ELEMENTARY-PROCEDURES-CLASS-1 |
RANAP-ELEMENTARY-PROCEDURES-CLASS-2 |
RANAP-ELEMENTARY-PROCEDURES-CLASS-3 ,
...
}
RANAP-ELEMENTARY-PROCEDURES-CLASS-1 RANAP-ELEMENTARY-PROCEDURE ::= {
iu-Release |
relocationPreparation |
relocationResourceAllocation |
relocationCancel |
sRNS-ContextTransfer |
securityModeControl |
dataVolumeReport |
reset |
resetResource ,
...,
locationRelatedData |
informationTransfer |
uplinkInformationExchange |
mBMSSessionStart |
mBMSSessionUpdate |
mBMSSessionStop |
mBMSUELinking |
mBMSRegistration |
mBMSCNDe-Registration |
mBMSRABRelease |
enhancedRelocationComplete |
rANAP-enhancedRelocation |
sRVCCPreparation |
ueRadioCapabilityMatch |
ueRegistrationQuery }
RANAP-ELEMENTARY-PROCEDURES-CLASS-2 RANAP-ELEMENTARY-PROCEDURE ::= {
rAB-ReleaseRequest |
iu-ReleaseRequest |
relocationDetect |
relocationComplete |
paging |
commonID |
cN-InvokeTrace |
cN-DeactivateTrace |
locationReportingControl |
locationReport |
initialUE-Message |
directTransfer |
overloadControl |
errorIndication |
sRNS-DataForward |
forwardSRNS-Context |
privateMessage |
rANAP-Relocation ,
...,
rAB-ModifyRequest |
uESpecificInformation |
directInformationTransfer |
mBMSRABEstablishmentIndication |
enhancedRelocationCompleteConfirm |
rerouteNASRequest
}
RANAP-ELEMENTARY-PROCEDURES-CLASS-3 RANAP-ELEMENTARY-PROCEDURE ::= {
rAB-Assignment ,
...
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
iu-Release RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Iu-ReleaseCommand
SUCCESSFUL OUTCOME Iu-ReleaseComplete
PROCEDURE CODE id-Iu-Release
CRITICALITY reject
}
relocationPreparation RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RelocationRequired
SUCCESSFUL OUTCOME RelocationCommand
UNSUCCESSFUL OUTCOME RelocationPreparationFailure
PROCEDURE CODE id-RelocationPreparation
CRITICALITY reject
}
relocationResourceAllocation RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RelocationRequest
SUCCESSFUL OUTCOME RelocationRequestAcknowledge
UNSUCCESSFUL OUTCOME RelocationFailure
PROCEDURE CODE id-RelocationResourceAllocation
CRITICALITY reject
}
relocationCancel RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RelocationCancel
SUCCESSFUL OUTCOME RelocationCancelAcknowledge
PROCEDURE CODE id-RelocationCancel
CRITICALITY reject
}
sRNS-ContextTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SRNS-ContextRequest
SUCCESSFUL OUTCOME SRNS-ContextResponse
PROCEDURE CODE id-SRNS-ContextTransfer
CRITICALITY reject
}
securityModeControl RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SecurityModeCommand
SUCCESSFUL OUTCOME SecurityModeComplete
UNSUCCESSFUL OUTCOME SecurityModeReject
PROCEDURE CODE id-SecurityModeControl
CRITICALITY reject
}
dataVolumeReport RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DataVolumeReportRequest
SUCCESSFUL OUTCOME DataVolumeReport
PROCEDURE CODE id-DataVolumeReport
CRITICALITY reject
}
reset RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Reset
SUCCESSFUL OUTCOME ResetAcknowledge
PROCEDURE CODE id-Reset
CRITICALITY reject
}
rAB-ReleaseRequest RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RAB-ReleaseRequest
PROCEDURE CODE id-RAB-ReleaseRequest
CRITICALITY ignore
}
iu-ReleaseRequest RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Iu-ReleaseRequest
PROCEDURE CODE id-Iu-ReleaseRequest
CRITICALITY ignore
}
relocationDetect RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RelocationDetect
PROCEDURE CODE id-RelocationDetect
CRITICALITY ignore
}
relocationComplete RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RelocationComplete
PROCEDURE CODE id-RelocationComplete
CRITICALITY ignore
}
paging RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Paging
PROCEDURE CODE id-Paging
CRITICALITY ignore
}
commonID RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE CommonID
PROCEDURE CODE id-CommonID
CRITICALITY ignore
}
cN-InvokeTrace RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE CN-InvokeTrace
PROCEDURE CODE id-CN-InvokeTrace
CRITICALITY ignore
}
cN-DeactivateTrace RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE CN-DeactivateTrace
PROCEDURE CODE id-CN-DeactivateTrace
CRITICALITY ignore
}
locationReportingControl RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE LocationReportingControl
PROCEDURE CODE id-LocationReportingControl
CRITICALITY ignore
}
locationReport RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE LocationReport
PROCEDURE CODE id-LocationReport
CRITICALITY ignore
}
initialUE-Message RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE InitialUE-Message
PROCEDURE CODE id-InitialUE-Message
CRITICALITY ignore
}
directTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DirectTransfer
PROCEDURE CODE id-DirectTransfer
CRITICALITY ignore
}
overloadControl RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Overload
PROCEDURE CODE id-OverloadControl
CRITICALITY ignore
}
errorIndication RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-ErrorIndication
CRITICALITY ignore
}
sRNS-DataForward RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SRNS-DataForwardCommand
PROCEDURE CODE id-SRNS-DataForward
CRITICALITY ignore
}
forwardSRNS-Context RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ForwardSRNS-Context
PROCEDURE CODE id-ForwardSRNS-Context
CRITICALITY ignore
}
rAB-Assignment RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RAB-AssignmentRequest
OUTCOME RAB-AssignmentResponse
PROCEDURE CODE id-RAB-Assignment
CRITICALITY reject
}
privateMessage RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PrivateMessage
PROCEDURE CODE id-privateMessage
CRITICALITY ignore
}
resetResource RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResetResource
SUCCESSFUL OUTCOME ResetResourceAcknowledge
PROCEDURE CODE id-ResetResource
CRITICALITY reject
}
rANAP-Relocation RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RANAP-RelocationInformation
PROCEDURE CODE id-RANAP-Relocation
CRITICALITY ignore
}
rAB-ModifyRequest RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RAB-ModifyRequest
PROCEDURE CODE id-RAB-ModifyRequest
CRITICALITY ignore
}
locationRelatedData RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE LocationRelatedDataRequest
SUCCESSFUL OUTCOME LocationRelatedDataResponse
UNSUCCESSFUL OUTCOME LocationRelatedDataFailure
PROCEDURE CODE id-LocationRelatedData
CRITICALITY reject
}
informationTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE InformationTransferIndication
SUCCESSFUL OUTCOME InformationTransferConfirmation
UNSUCCESSFUL OUTCOME InformationTransferFailure
PROCEDURE CODE id-InformationTransfer
CRITICALITY reject
}
uESpecificInformation RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UESpecificInformationIndication
PROCEDURE CODE id-UESpecificInformation
CRITICALITY ignore
}
directInformationTransfer RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DirectInformationTransfer
PROCEDURE CODE id-DirectInformationTransfer
CRITICALITY ignore
}
uplinkInformationExchange RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UplinkInformationExchangeRequest
SUCCESSFUL OUTCOME UplinkInformationExchangeResponse
UNSUCCESSFUL OUTCOME UplinkInformationExchangeFailure
PROCEDURE CODE id-UplinkInformationExchange
CRITICALITY reject
}
mBMSSessionStart RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MBMSSessionStart
SUCCESSFUL OUTCOME MBMSSessionStartResponse
UNSUCCESSFUL OUTCOME MBMSSessionStartFailure
PROCEDURE CODE id-MBMSSessionStart
CRITICALITY reject
}
mBMSSessionUpdate RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MBMSSessionUpdate
SUCCESSFUL OUTCOME MBMSSessionUpdateResponse
UNSUCCESSFUL OUTCOME MBMSSessionUpdateFailure
PROCEDURE CODE id-MBMSSessionUpdate
CRITICALITY reject
}
mBMSSessionStop RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MBMSSessionStop
SUCCESSFUL OUTCOME MBMSSessionStopResponse
PROCEDURE CODE id-MBMSSessionStop
CRITICALITY reject
}
mBMSUELinking RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MBMSUELinkingRequest
OUTCOME MBMSUELinkingResponse
PROCEDURE CODE id-MBMSUELinking
CRITICALITY reject
}
mBMSRegistration RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MBMSRegistrationRequest
SUCCESSFUL OUTCOME MBMSRegistrationResponse
UNSUCCESSFUL OUTCOME MBMSRegistrationFailure
PROCEDURE CODE id-MBMSRegistration
CRITICALITY reject
}
mBMSCNDe-Registration RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MBMSCNDe-RegistrationRequest
SUCCESSFUL OUTCOME MBMSCNDe-RegistrationResponse
PROCEDURE CODE id-MBMSCNDe-Registration-Procedure
CRITICALITY reject
}
mBMSRABEstablishmentIndication RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MBMSRABEstablishmentIndication
PROCEDURE CODE id-MBMSRABEstablishmentIndication
CRITICALITY ignore
}
mBMSRABRelease RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MBMSRABReleaseRequest
SUCCESSFUL OUTCOME MBMSRABRelease
UNSUCCESSFUL OUTCOME MBMSRABReleaseFailure
PROCEDURE CODE id-MBMSRABRelease
CRITICALITY reject
}
enhancedRelocationComplete RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE EnhancedRelocationCompleteRequest
SUCCESSFUL OUTCOME EnhancedRelocationCompleteResponse
UNSUCCESSFUL OUTCOME EnhancedRelocationCompleteFailure
PROCEDURE CODE id-enhancedRelocationComplete
CRITICALITY reject
}
enhancedRelocationCompleteConfirm RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE EnhancedRelocationCompleteConfirm
PROCEDURE CODE id-enhancedRelocationCompleteConfirm
CRITICALITY ignore
}
rANAP-enhancedRelocation RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RANAP-EnhancedRelocationInformationRequest
SUCCESSFUL OUTCOME RANAP-EnhancedRelocationInformationResponse
PROCEDURE CODE id-RANAPenhancedRelocation
CRITICALITY reject
}
sRVCCPreparation RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SRVCC-CSKeysRequest
OUTCOME SRVCC-CSKeysResponse
PROCEDURE CODE id-SRVCCPreparation
CRITICALITY reject
}
ueRadioCapabilityMatch RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UeRadioCapabilityMatchRequest
OUTCOME UeRadioCapabilityMatchResponse
PROCEDURE CODE id-UeRadioCapabilityMatch
CRITICALITY ignore
}
ueRegistrationQuery RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UeRegistrationQueryRequest
OUTCOME UeRegistrationQueryResponse
PROCEDURE CODE id-UeRegistrationQuery
CRITICALITY ignore
}
rerouteNASRequest RANAP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RerouteNASRequest
PROCEDURE CODE id-RerouteNASRequest
CRITICALITY reject
}
END

View File

@ -0,0 +1,76 @@
module RANAP_Selftests {
import from RANAP_CommonDataTypes all;
import from RANAP_Constants all;
import from RANAP_Containers all;
import from RANAP_IEs all;
import from RANAP_PDU_Contents all;
import from RANAP_PDU_Descriptions all;
import from RANAP_Types all;
type component test_CT {
};
const octetstring c_InitUE_CM_SRV_REQ := '001340400000060003400100000f40060046f3120064003a40080046f312006400000010400e0d052471034f188005f407000008004f40030000000056400546f312000f'O;
const octetstring c_CommonId := '000f4010000001001740095046239134707780f3'O;
const octetstring c_DT_CM_SRV_ACK := '0014400f000002003b40010000104003020521'O;
const octetstring c_DT_MO_SETUP := '00144019000001001040121103450404600200815e0381654215021101'O;
const octetstring c_DT_MT_CALL_PROC := '00144010000002003b4001000010400403830280'O;
const octetstring c_RAB_AssReq := '0000404700000100360040000001003500363802d0012fa7202fa80000f44c080a028000514000272028140067400000222814003c40000000503d0800101faf026ed64047d40000400100'O;
const octetstring c_RAB_AssResp := '6000001a000001003440130000010033400c60087c0a80242240e2040000'O;
const octetstring c_IuRelReq := '000b4009000001000440020340'O;
const octetstring c_ResetResource := '001b001c00000300030001000004400142004d400b000001004e000400000000'O;
const octetstring c_IuRelCmd := '00014009000001000400020340'O;
type record EnDecTestcase {
charstring name,
octetstring encoded
};
type record of EnDecTestcase EnDecTestcases;
const EnDecTestcases test_data := {
{
name := "InitialUE_CM_SRV_REQ",
encoded := c_InitUE_CM_SRV_REQ
}, {
name := "CommonID",
encoded := c_CommonId
}, {
name := "DirectTransfer CM SERVICE ACK",
encoded := c_DT_CM_SRV_ACK
}, {
name := "DirectTransfer MO CC SETUP",
encoded := c_DT_MO_SETUP
}, {
name := "DirectTransfer MT CC CALL PROCEEDING",
encoded := c_DT_MT_CALL_PROC
}, {
name := "RAB Assignment Request",
encoded := c_RAB_AssReq
}, {
name := "RAB Assignment Response",
encoded := c_RAB_AssResp
}, {
name := "Iu Release Request",
encoded := c_IuRelReq
}, {
name := "Reset Resource",
encoded := c_ResetResource
}, {
name := "Iu Release Command",
encoded := c_IuRelCmd
}
};
testcase TC_foo() runs on test_CT {
var integer i;
for (i := 0; i < lengthof(test_data); i := i+1) {
var EnDecTestcase tc := test_data[i];
var RANAP_PDU pdu := dec_RANAP_PDU(tc.encoded);
log(tc.name, " decoded: ", pdu);
}
setverdict(pass);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
module RANAP_Types {
import from RANAP_PDU_Descriptions language "ASN.1:1997" all;
external function enc_RANAP_PDU(in RANAP_PDU pdu) return octetstring;
external function dec_RANAP_PDU(in octetstring stream) return RANAP_PDU;
}

View File

@ -0,0 +1,9 @@
#!/bin/sh
FILES="*.asn *.ttcn RANAP_EncDec.cc"
../../regen-makefile.sh $FILES
sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile
sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile

View File

@ -0,0 +1,53 @@
-- RUA-CommonDataTypes.asn
--
-- 3GPP TS 25.468 V9.1.0 (2010-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25468.htm
--
-- 9.3.5 Common definitions
--
-- **************************************************************
--
-- Common definitions
--
-- **************************************************************
RUA-CommonDataTypes {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) rua(5) version1 (1) rUA-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 }
ProcedureCode ::= INTEGER (0..255)
PrivateIE-ID ::= CHOICE {
local INTEGER (0..65535),
global OBJECT IDENTIFIER
}
ProtocolIE-ID ::= INTEGER (0..maxProtocolIEs)
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome }
END

View File

@ -0,0 +1,63 @@
-- RUA-Constants.asn
--
-- 3GPP TS 25.468 V9.1.0 (2010-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25468.htm
--
-- 9.3.6 Constant definitions
--
-- **************************************************************
--
-- Constant definitions
--
-- **************************************************************
RUA-Constants {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) rua(5) version1 (1) rUA-Constants (4) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
ProcedureCode,
ProtocolIE-ID
FROM RUA-CommonDataTypes;
-- **************************************************************
--
-- Elementary Procedures
--
id-Connect ProcedureCode ::= 1
id-DirectTransfer ProcedureCode ::= 2
id-Disconnect ProcedureCode ::= 3
id-ConnectionlessTransfer ProcedureCode ::= 4
id-ErrorIndication ProcedureCode ::= 5
id-privateMessage ProcedureCode ::= 6
-- **************************************************************
--
-- Lists
--
-- **************************************************************
maxNrOfErrors INTEGER ::= 256
-- **************************************************************
--
-- IEs
--
-- **************************************************************
id-Cause ProtocolIE-ID ::= 1
id-CriticalityDiagnostics ProtocolIE-ID ::= 2
id-Context-ID ProtocolIE-ID ::= 3
id-RANAP-Message ProtocolIE-ID ::= 4
id-IntraDomainNasNodeSelector ProtocolIE-ID ::= 5
id-Establishment-Cause ProtocolIE-ID ::= 6
id-CN-DomainIndicator ProtocolIE-ID ::= 7
id-CSGMembershipStatus ProtocolIE-ID ::= 9
END

View File

@ -0,0 +1,161 @@
-- RUA-Containers.asn
--
-- 3GPP TS 25.468 V9.1.0 (2010-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25468.htm
--
-- 9.3.7 Container definitions
--
-- **************************************************************
--
-- Container definitions
--
-- **************************************************************
RUA-Containers {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) rua(5) version1 (1) rUA-Containers (5) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
Presence,
PrivateIE-ID,
ProtocolIE-ID,
maxPrivateIEs,
maxProtocolExtensions,
maxProtocolIEs
FROM RUA-CommonDataTypes;
-- **************************************************************
--
-- Class Definition for Private IEs
--
-- **************************************************************
RUA-PRIVATE-IES ::= CLASS {
&id PrivateIE-ID,
&criticality Criticality,
&Value,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
RUA-PROTOCOL-IES ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&criticality Criticality,
&Value,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol Extensions
--
-- **************************************************************
RUA-PROTOCOL-EXTENSION ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&criticality Criticality,
&Extension,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
EXTENSION &Extension
PRESENCE &presence
}
-- **************************************************************
--
-- Container for Protocol IEs
--
-- **************************************************************
ProtocolIE-Container {RUA-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Single-Container {RUA-PROTOCOL-IES : IEsSetParam} ::=
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Field {RUA-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
id RUA-PROTOCOL-IES.&id ({IEsSetParam}),
criticality RUA-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
value RUA-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container Lists for Protocol IE Containers
--
-- **************************************************************
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, RUA-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-Container {{IEsSetParam}}
-- **************************************************************
--
-- Container for Protocol Extensions
--
-- **************************************************************
ProtocolExtensionContainer {RUA-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
ProtocolExtensionField {{ExtensionSetParam}}
ProtocolExtensionField {RUA-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
id RUA-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
criticality RUA-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
extensionValue RUA-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
}
-- **************************************************************
--
-- Container for Private IEs
--
-- **************************************************************
PrivateIE-Container {RUA-PRIVATE-IES : IEsSetParam } ::=
SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
PrivateIE-Field {{IEsSetParam}}
PrivateIE-Field {RUA-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
id RUA-PRIVATE-IES.&id ({IEsSetParam}),
criticality RUA-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
value RUA-PRIVATE-IES.&Value ({IEsSetParam}{@id})
}
END

64
library/rua/RUA_EncDec.cc Normal file
View File

@ -0,0 +1,64 @@
#include <string.h>
#include <stdarg.h>
#include "RUA_PDU_Descriptions.hh"
extern "C" {
#include <fftranscode/transcode.h>
}
namespace RUA__Types {
TTCN_Module RUA__EncDec("RUA_EncDec", __DATE__, __TIME__);
OCTETSTRING enc__RUA__PDU(const RUA__PDU__Descriptions::RUA__PDU &pdu)
{
uint8_t *aper_buf;
int aper_buf_len;
TTCN_Buffer TTCN_buf;
TTCN_buf.clear();
/* Encode from abstract data type into BER/DER */
pdu.encode(RUA__PDU__Descriptions::RUA__PDU_descr_, TTCN_buf,
TTCN_EncDec::CT_BER, BER_ENCODE_DER);
aper_buf_len = fftranscode_ber2aper(FFTRANSC_T_RUA, &aper_buf, TTCN_buf.get_data(), TTCN_buf.get_len());
if (aper_buf_len < 0) {
TTCN_error("fftranscode failed.");
}
/* make octetstring from output buffer */
OCTETSTRING ret_val(aper_buf_len, aper_buf);
/* release dynamically-allocated output buffer */
fftranscode_free(aper_buf);
return ret_val;
}
RUA__PDU__Descriptions::RUA__PDU dec__RUA__PDU(const OCTETSTRING &stream)
{
uint8_t *ber_buf;
int ber_buf_len;
/* First, decode APER + re-encode as BER */
ber_buf_len = fftranscode_aper2ber(FFTRANSC_T_RUA, &ber_buf, (const unsigned char *)stream, stream.lengthof());
if (ber_buf_len < 0) {
TTCN_error("fftranscode failed.");
}
/* Then, re-encode from BER to TITAN representation */
RUA__PDU__Descriptions::RUA__PDU ret_dcc;
TTCN_Buffer TTCN_buf;
TTCN_buf.clear();
TTCN_buf.put_s(ber_buf_len, ber_buf);
ret_dcc.decode(RUA__PDU__Descriptions::RUA__PDU_descr_, TTCN_buf,
TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
fftranscode_free(ber_buf);
return ret_dcc;
}
}

199
library/rua/RUA_IEs.asn Normal file
View File

@ -0,0 +1,199 @@
-- RUA-IEs.asn
--
-- 3GPP TS 25.468 V9.1.0 (2010-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25468.htm
--
-- 9.3.4 Information Element definitions
--
-- **************************************************************
--
-- Information Element Definitions
--
-- **************************************************************
RUA-IEs {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) rua(5) version1 (1) rUA-IEs (2) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
maxNrOfErrors
FROM RUA-Constants
Criticality,
ProcedureCode,
ProtocolIE-ID,
TriggeringMessage
FROM RUA-CommonDataTypes
ProtocolExtensionContainer{},
RUA-PROTOCOL-EXTENSION
FROM RUA-Containers;
CN-DomainIndicator ::= ENUMERATED {
cs-domain,
ps-domain
}
CSGMembershipStatus ::= ENUMERATED {
member,
non-member,
...
}
Establishment-Cause ::= ENUMERATED {
emergency-call,
normal-call,
...
}
Context-ID ::= BIT STRING (SIZE(24))
IntraDomainNasNodeSelector ::= SEQUENCE {
version CHOICE {
release99 SEQUENCE {
cn-Type CHOICE {
gsm-Map-IDNNS Gsm-map-IDNNS,
ansi-41-IDNNS Ansi-41-IDNNS
}
},
later SEQUENCE {
futurecoding BIT STRING (SIZE (15))
}
}
}
Gsm-map-IDNNS ::= SEQUENCE {
routingbasis CHOICE {
localPTMSI SEQUENCE {
routingparameter RoutingParameter
},
tMSIofsamePLMN SEQUENCE {
routingparameter RoutingParameter
},
tMSIofdifferentPLMN SEQUENCE {
routingparameter RoutingParameter
},
iMSIresponsetopaging SEQUENCE {
routingparameter RoutingParameter
},
iMSIcauseUEinitiatedEvent SEQUENCE {
routingparameter RoutingParameter
},
iMEI SEQUENCE {
routingparameter RoutingParameter
},
spare2 SEQUENCE {
routingparameter RoutingParameter
},
spare1 SEQUENCE {
routingparameter RoutingParameter
}
},
-- dummy is not used in this version of the specification and
-- it should be ignored by the receiver.
dummy BOOLEAN
}
Ansi-41-IDNNS ::= BIT STRING (SIZE (14))
RANAP-Message ::= OCTET STRING
RoutingParameter ::= BIT STRING (SIZE (10))
-- **************************************************************
--
-- Cause IE
--
-- **************************************************************
Cause ::= CHOICE {
radioNetwork CauseRadioNetwork,
transport CauseTransport,
protocol CauseProtocol,
misc CauseMisc,
...
}
CauseRadioNetwork ::= ENUMERATED {
normal,
connect-failed,
network-release,
unspecified,
...
}
CauseTransport ::= ENUMERATED {
transport-resource-unavailable,
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,
...
}
CauseMisc ::= ENUMERATED {
processing-overload,
hardware-failure,
o-and-m-intervention,
unspecified,
...
}
-- **************************************************************
--
-- CriticalityDiagnostics
--
-- **************************************************************
CriticalityDiagnostics ::= SEQUENCE {
procedureCode ProcedureCode OPTIONAL,
triggeringMessage TriggeringMessage OPTIONAL,
procedureCriticality Criticality OPTIONAL,
iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL,
...
}
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 RUA-PROTOCOL-EXTENSION ::= {
...
}
CriticalityDiagnostics-ExtIEs RUA-PROTOCOL-EXTENSION ::= {
...
}
TypeOfError ::= ENUMERATED {
not-understood,
missing,
...
}
END

View File

@ -0,0 +1,204 @@
-- RUA-PDU-Contents.asn
--
-- 3GPP TS 25.468 V9.1.0 (2010-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25468.htm
--
-- 9.3.3 PDU definitions
--
-- **************************************************************
--
-- PDU definitions for RUA.
--
-- **************************************************************
RUA-PDU-Contents {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) rua(5) version1 (1) rUA-PDU-Contents (1) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Cause,
CriticalityDiagnostics,
Context-ID,
CN-DomainIndicator,
CSGMembershipStatus,
IntraDomainNasNodeSelector,
RANAP-Message,
Establishment-Cause
FROM RUA-IEs
ProtocolExtensionContainer{},
ProtocolIE-ContainerList{},
ProtocolIE-Container{},
ProtocolIE-Single-Container{},
PrivateIE-Container{},
RUA-PRIVATE-IES,
RUA-PROTOCOL-EXTENSION,
RUA-PROTOCOL-IES
FROM RUA-Containers
id-Cause,
id-CriticalityDiagnostics,
id-Context-ID,
id-CN-DomainIndicator,
id-CSGMembershipStatus,
id-RANAP-Message,
id-IntraDomainNasNodeSelector,
id-Establishment-Cause
FROM RUA-Constants;
-- **************************************************************
--
-- Connect
--
-- **************************************************************
Connect ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {ConnectIEs} },
protocolExtensions ProtocolExtensionContainer { {ConnectExtensions} } OPTIONAL,
...
}
ConnectIEs RUA-PROTOCOL-IES ::= {
{ ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
{ ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
{ ID id-IntraDomainNasNodeSelector CRITICALITY ignore TYPE IntraDomainNasNodeSelector PRESENCE optional } |
{ ID id-Establishment-Cause CRITICALITY reject TYPE Establishment-Cause PRESENCE mandatory } |
{ ID id-RANAP-Message CRITICALITY reject TYPE RANAP-Message PRESENCE mandatory },
...
}
ConnectExtensions RUA-PROTOCOL-EXTENSION ::= {
{ ID id-CSGMembershipStatus CRITICALITY ignore EXTENSION CSGMembershipStatus PRESENCE optional },
...
}
-- **************************************************************
--
-- Direct Transfer
--
-- **************************************************************
DirectTransfer ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {DirectTransferIEs} },
protocolExtensions ProtocolExtensionContainer { {DirectTransferExtensions} } OPTIONAL,
...
}
DirectTransferIEs RUA-PROTOCOL-IES ::= {
{ ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
{ ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
{ ID id-RANAP-Message CRITICALITY reject TYPE RANAP-Message PRESENCE mandatory },
...
}
DirectTransferExtensions RUA-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- Disconnect
--
-- **************************************************************
Disconnect ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {DisconnectIEs} },
protocolExtensions ProtocolExtensionContainer { {DisconnectExtensions} } OPTIONAL,
...
}
DisconnectIEs RUA-PROTOCOL-IES ::= {
{ ID id-CN-DomainIndicator CRITICALITY reject TYPE CN-DomainIndicator PRESENCE mandatory } |
{ ID id-Context-ID CRITICALITY reject TYPE Context-ID PRESENCE mandatory } |
{ ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory } |
{ ID id-RANAP-Message CRITICALITY reject TYPE RANAP-Message PRESENCE conditional },
-- RANAP message shall be included if Cause value is "normal"
...
}
DisconnectExtensions RUA-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- Connectionless Transfer
--
-- **************************************************************
ConnectionlessTransfer ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {ConnectionlessTransferIEs} },
protocolExtensions ProtocolExtensionContainer { {ConnectionlessTransferExtensions} } OPTIONAL,
...
}
ConnectionlessTransferIEs RUA-PROTOCOL-IES ::= {
{ ID id-RANAP-Message CRITICALITY reject TYPE RANAP-Message PRESENCE mandatory },
...
}
ConnectionlessTransferExtensions RUA-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- ERROR INDICATION
--
-- **************************************************************
ErrorIndication ::= SEQUENCE {
protocolIEs ProtocolIE-Container { {ErrorIndicationIEs} },
protocolExtensions ProtocolExtensionContainer { {ErrorIndicationExtensions} } OPTIONAL,
...
}
ErrorIndicationIEs RUA-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
ErrorIndicationExtensions RUA-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- PRIVATE MESSAGE
--
-- **************************************************************
PrivateMessage ::= SEQUENCE {
privateIEs PrivateIE-Container {{PrivateMessage-IEs}},
...
}
PrivateMessage-IEs RUA-PRIVATE-IES ::= {
...
}
END

View File

@ -0,0 +1,176 @@
-- RUA-PDU-Descriptions.asn
--
-- 3GPP TS 25.468 V9.1.0 (2010-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25468.htm
--
-- 9.3.2 Elementary Procedure definitions
--
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
RUA-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) rua(5) version1 (1) rUA-PDU-Descriptions (0)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
ProcedureCode
FROM RUA-CommonDataTypes
Connect,
DirectTransfer,
Disconnect,
ConnectionlessTransfer,
ErrorIndication,
PrivateMessage
FROM RUA-PDU-Contents
id-Connect,
id-DirectTransfer,
id-Disconnect,
id-ConnectionlessTransfer,
id-ErrorIndication,
id-privateMessage
FROM RUA-Constants;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
RUA-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 definitions
--
-- **************************************************************
RUA-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode RUA-ELEMENTARY-PROCEDURE.&procedureCode ({RUA-ELEMENTARY-PROCEDURES}),
criticality RUA-ELEMENTARY-PROCEDURE.&criticality ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
value RUA-ELEMENTARY-PROCEDURE.&InitiatingMessage ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode RUA-ELEMENTARY-PROCEDURE.&procedureCode ({RUA-ELEMENTARY-PROCEDURES}),
criticality RUA-ELEMENTARY-PROCEDURE.&criticality ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
value RUA-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode RUA-ELEMENTARY-PROCEDURE.&procedureCode ({RUA-ELEMENTARY-PROCEDURES}),
criticality RUA-ELEMENTARY-PROCEDURE.&criticality ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
value RUA-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
RUA-ELEMENTARY-PROCEDURES RUA-ELEMENTARY-PROCEDURE ::= {
RUA-ELEMENTARY-PROCEDURES-CLASS-1 |
RUA-ELEMENTARY-PROCEDURES-CLASS-2 ,
...
}
RUA-ELEMENTARY-PROCEDURES-CLASS-1 RUA-ELEMENTARY-PROCEDURE ::= {
...
}
RUA-ELEMENTARY-PROCEDURES-CLASS-2 RUA-ELEMENTARY-PROCEDURE ::= {
connectionRequest |
directTransfer |
disconnectRequest |
connectionlessTransfer |
errorIndication |
privateMessage,
...
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
connectionRequest RUA-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Connect
PROCEDURE CODE id-Connect
CRITICALITY ignore
}
directTransfer RUA-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DirectTransfer
PROCEDURE CODE id-DirectTransfer
CRITICALITY ignore
}
disconnectRequest RUA-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Disconnect
PROCEDURE CODE id-Disconnect
CRITICALITY ignore
}
connectionlessTransfer RUA-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ConnectionlessTransfer
PROCEDURE CODE id-ConnectionlessTransfer
CRITICALITY ignore
}
errorIndication RUA-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-ErrorIndication
CRITICALITY ignore
}
privateMessage RUA-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PrivateMessage
PROCEDURE CODE id-privateMessage
CRITICALITY ignore
}
END

View File

@ -0,0 +1,7 @@
module RUA_Types {
import from RUA_PDU_Descriptions language "ASN.1:1997" all;
external function enc_RUA_PDU(in RUA_PDU pdu) return octetstring;
external function dec_RUA_PDU(in octetstring stream) return RUA_PDU;
}

9
library/rua/regen_makefile.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh
FILES="*.asn *.ttcn RUA_EncDec.cc"
../../regen-makefile.sh $FILES
sed -i -e '/^CPPFLAGS/ s/$/ `pkg-config --cflags libfftranscode`/' Makefile
sed -i -e '/^LDFLAGS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile
sed -i -e '/^LINUX_LIBS/ s/$/ `pkg-config --libs libfftranscode`/' Makefile