466 lines
15 KiB
Plaintext
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
|