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
changes/52/13652/9
Harald Welte 5 years ago
parent 3e16b4d2f3
commit a013e68fc9

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

@ -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

@ -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

@ -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

@ -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;
}
}

@ -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

@ -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

@ -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

@ -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;
}

@ -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

@ -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