osmo-ttcn3-hacks/NS_v7.3.0_CNL113578_LATEST/src/NS_Types.ttcn

466 lines
15 KiB
Plaintext

///////////////////////////////////////////////////////////////////////////////
// //
// Copyright Test Competence Center (TCC) ETH 2008 //
// //
// The copyright to the computer program(s) herein is the property of TCC. //
// The program(s) may be used and/or copied only with the written permission //
// of TCC or in accordance with the terms and conditions stipulated in the //
// agreement/contract under which the program(s) has been supplied. //
// //
///////////////////////////////////////////////////////////////////////////////
//
// File: NS_Types.ttcn
// Rev: R1A01
// Prodnr: CNL 113 578
// Updated: 2008-01-22
// Contact: http://ttcn.ericsson.se
// Reference: 3GPP TS 48.016 7.3.0
module NS_Types
{ // beginning of module
// This module contains the Base Station System (BSS) Serving GPRS Support
// Node (SGSN) interface Network Sevice protocol
// 48.016 v7.3.0 with attributes for RAW encoding/decoding.
//
// History:
// ********
import from General_Types all;
external function enc_PDU_NS(in PDU_NS pdu) return octetstring
with { extension "prototype(convert)"
extension "encode(RAW)"
}
external function dec_PDU_NS(in octetstring stream) return PDU_NS
with { extension "prototype(convert)"
extension "decode(RAW)"
}
type record CauseNS
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
OCT1 cause
} with {
variant (lengthIndicator) "LENGTHTO (cause)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record NS_VCI
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
OCT2 nS_VCI
} with {
variant (lengthIndicator) "LENGTHTO (nS_VCI)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record NS_PDU
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
octetstring ns_PDU
} with {
variant (lengthIndicator) "LENGTHTO (ns_PDU)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record BVCI_NS
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
OCT2 bVCI
} with {
variant (lengthIndicator) "LENGTHTO (bVCI)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record ListofIP4Elements
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
IP4_Elements iP4_Elements
} with {
variant (lengthIndicator) "LENGTHTO (iP4_Elements)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record IP4_Element
{
OCT4 ipAddress,
OCT2 uDP_Port,
OCT1 signallingWeight,
OCT1 dataWeight
}
type record of IP4_Element IP4_Elements;
type record ListofIP6Elements
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
IP6_Elements iP6_Elements
} with {
variant (lengthIndicator) "LENGTHTO (iP6_Elements)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record IP6_Element
{
OCT16 ipAddress,
OCT2 uDP_Port,
OCT1 signallingWeight,
OCT1 dataWeight
}
type record of IP6_Element IP6_Elements;
type record IP_Address_NS
{
OCT1 iEI,
OCT1 addressType,
IPAddress ipAddress
}with {
variant (ipAddress) "CROSSTAG
(
ip4Address, addressType = '01'O;
ip6Address, addressType = '02'O;
)"
};
type union IPAddress
{
OCT4 ip4Address,
OCT16 ip6Address
}
type record EndFlag
{
BIT1 eBIT,
BIT7 spare
}
type record ResetFlag
{
OCT1 iEI,
BIT1 resetBIT,
BIT7 spare
}
type record MaxNumberOfNSVCs
{
OCT1 iEI,
OCT2 maxNumberOfNSVCs
}
type record NumberOfIP_Endpoints
{
OCT1 iEI,
OCT2 numberOfIP_Endpoints
}
type record NSEI_NS
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
OCT2 nSEI
} with {
variant (lengthIndicator) "LENGTHTO (nSEI)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record NS_SDU_ControlBits
{
BIT1 rBit,
BIT1 cBit,
BIT6 spare
}
//same type def as LIN2_2a in BSSGP but named differently
type union LIN1_2
{
integer length1,
integer length2
} with {
variant (length1) "FIELDLENGTH(7)";
variant (length2) "FIELDLENGTH(15)";
variant (length2) "BYTEORDER(last)";
variant (length1,length2) "FIELDORDER(msb)"
}
// PDUs ************************************************************
type record PDU_NS_Alive
{
OCT1 nsPduType
}
type record PDU_NS_Alive_Ack
{
OCT1 nsPduType
}
type record PDU_NS_Block
{
OCT1 nsPduType,
CauseNS causeNS, //TLV
NS_VCI nS_VCI //TLV
}
type record PDU_NS_Block_Ack
{
OCT1 nsPduType,
NS_VCI nS_VCI //TLV
}
type record PDU_NS_Reset
{
OCT1 nsPduType,
CauseNS causeNS, //TLV
NS_VCI nS_VCI, //TLV
NSEI_NS nSEI_NS //TLV
}
type record PDU_NS_Reset_Ack
{
OCT1 nsPduType,
NS_VCI nS_VCI, //TLV
NSEI_NS nSEI_NS //TLV
}
type record PDU_NS_Status
{
OCT1 nsPduType,
CauseNS causeNS, //TLV
NS_VCI nS_VCI optional, //TLV
NS_PDU nS_PDU optional, //TLV
BVCI_NS bVCI_NS optional, //TLV
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant "TAG (
nS_VCI, iEI = '01'O;
nS_PDU, iEI = '02'O;
bVCI_NS, iEI = '03'O;
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_NS_Unblock
{
OCT1 nsPduType
}
type record PDU_NS_Unblock_Ack
{
OCT1 nsPduType
}
type record PDU_NS_Unitdata
{
OCT1 nsPduType,
NS_SDU_ControlBits nS_SDU_ControlBits, //V
OCT2 bVCI, //V
octetstring nS_SDU //V
// decoder interprets all octets after the
// first 4 octets as NS SDU
}
type record PDU_SNS_Ack
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
integer transactionID, //V
CauseNS causeNS optional, //TLV
IP_Address_NS iP_Address_NS optional, //TV
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant (transactionID) "FIELDLENGTH(8)";
variant "TAG (
causeNS, iEI = '00'O;
iP_Address_NS, iEI = '0B'O;
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_SNS_Add
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
integer transactionID, //V
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant (transactionID) "FIELDLENGTH(8)";
variant "TAG (
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_SNS_ChangeWeight
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
integer transactionID, //V
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant (transactionID) "FIELDLENGTH(8)";
variant "TAG (
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_SNS_Config
{
OCT1 nsPduType,
EndFlag endFlag, //V
NSEI_NS nSEI_NS, //TLV
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant "TAG (
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_SNS_Config_Ack
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
CauseNS causeNS optional //TLV
} with {
variant "TAG (causeNS, iEI = '00'O;)"
}
type record PDU_SNS_Delete
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
integer transactionID, //V
IP_Address_NS iP_Address_NS optional, //TV
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant (transactionID) "FIELDLENGTH(8)";
variant "TAG (
iP_Address_NS, iEI = '0B'O;
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_SNS_Size
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
ResetFlag resetFlag, //TV
MaxNumberOfNSVCs maxNumberOfNSVCs, //TV
NumberOfIP_Endpoints numberOfIP4_Endpoints optional, //TV
NumberOfIP_Endpoints numberOfIP6_Endpoints optional //TV
} with {
variant "TAG (
numberOfIP4_Endpoints, iEI = '08'O;
numberOfIP6_Endpoints, iEI = '09'O;
)"
}
type record PDU_SNS_Size_Ack
{
OCT1 nsPduType,
NSEI_NS nSEI_NS,
CauseNS causeNS optional //TLV
} with {
variant "TAG (causeNS, iEI = '00'O;)"
}
type union PDU_NS
{
PDU_NS_Alive pDU_NS_Alive,
PDU_NS_Alive_Ack pDU_NS_Alive_Ack,
PDU_NS_Block pDU_NS_Block,
PDU_NS_Block_Ack pDU_NS_Block_Ack,
PDU_NS_Reset pDU_NS_Reset,
PDU_NS_Reset_Ack pDU_NS_Reset_Ack,
PDU_NS_Status pDU_NS_Status,
PDU_NS_Unblock pDU_NS_Unblock,
PDU_NS_Unblock_Ack pDU_NS_Unblock_Ack,
PDU_NS_Unitdata pDU_NS_Unitdata,
PDU_SNS_Ack pDU_SNS_Ack,
PDU_SNS_Add pDU_SNS_Add,
PDU_SNS_ChangeWeight pDU_SNS_ChangeWeight,
PDU_SNS_Config pDU_SNS_Config,
PDU_SNS_Config_Ack pDU_SNS_Config_Ack,
PDU_SNS_Delete pDU_SNS_Delete,
PDU_SNS_Size pDU_SNS_Size,
PDU_SNS_Size_Ack pDU_SNS_Size_Ack
} with { variant "TAG (
pDU_NS_Alive, nsPduType ='0A'O;
pDU_NS_Alive_Ack, nsPduType ='0B'O;
pDU_NS_Block, nsPduType ='04'O;
pDU_NS_Block_Ack, nsPduType ='05'O;
pDU_NS_Reset, nsPduType ='02'O;
pDU_NS_Reset_Ack, nsPduType ='03'O;
pDU_NS_Status, nsPduType ='08'O;
pDU_NS_Unblock, nsPduType ='06'O;
pDU_NS_Unblock_Ack, nsPduType ='07'O;
pDU_NS_Unitdata, nsPduType ='00'O;
pDU_SNS_Ack, nsPduType ='0C'O;
pDU_SNS_Add, nsPduType ='0D'O;
pDU_SNS_ChangeWeight, nsPduType ='0E'O;
pDU_SNS_Config, nsPduType ='0F'O;
pDU_SNS_Config_Ack, nsPduType ='10'O;
pDU_SNS_Delete, nsPduType ='11'O;
pDU_SNS_Size, nsPduType ='12'O;
pDU_SNS_Size_Ack, nsPduType ='13'O
)"
}
}with{ encode "RAW"} // end of module