190 lines
5.8 KiB
Plaintext
190 lines
5.8 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// Copyright Test Competence Center (TCC) ETH 2016 //
|
|
// //
|
|
// 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: GTPU_Types.ttcn
|
|
// Rev: R1B
|
|
// Prodnr: CNL 113 843
|
|
// Contact: http://ttcn.ericsson.se
|
|
// Reference: 3GPP TS 29.060 v13.5.0, 3GPP TS 29.281 v13.2.0
|
|
//
|
|
// This module contains the GTP-U (General Packet Radio Servive Protocol
|
|
// Tunnelling Protocol - User Plane)
|
|
|
|
module GTPU_Types {
|
|
|
|
import from General_Types all;
|
|
|
|
// external encoding/decoding functions
|
|
external function enc_PDU_GTPU(in PDU_GTPU gtpu_pdu) return octetstring
|
|
with { extension "prototype(convert)"
|
|
extension "encode(RAW)"
|
|
}
|
|
|
|
external function dec_PDU_GTPU(in octetstring udp_pdu) return PDU_GTPU
|
|
|
|
external function dec_PDU_GTPU_ext(in octetstring udp_pdu) return PDU_GTPU_ext
|
|
with { extension "prototype(convert)"
|
|
extension "decode(RAW)"
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////
|
|
// IE definition
|
|
//////////////////////////
|
|
//Private Extension - 7.7.46
|
|
type record of PrivateExtension_gtpu PrivateExtension_gtpu_List;
|
|
|
|
type record PrivateExtension_gtpu {
|
|
OCT1 type_gtpu,
|
|
LIN2_BO_LAST lengthf,
|
|
OCT2 extensionID,
|
|
octetstring extensionValue
|
|
} with { variant "PRESENCE( type_gtpu = 'FF'O)";
|
|
variant (lengthf) "LENGTHTO(extensionID, extensionValue)";};
|
|
|
|
//Recovery - 7.7.11
|
|
type record Recovery_gtpu {
|
|
OCT1 type_gtpu,
|
|
OCT1 restartCounter
|
|
};
|
|
|
|
//Extension Header Type List - 7.7.40
|
|
type record ExtensionHeaderTypeList_gtpu {
|
|
OCT1 type_gtpu,
|
|
integer lengthf,
|
|
octetstring extensionTypesList
|
|
} with { variant (lengthf) "LENGTHTO(extensionTypesList)"; }
|
|
|
|
//Tunnel Endpoint Identifier Data I - 7.7.13
|
|
type record TeidDataI_gtpu {
|
|
OCT1 type_gtpu,
|
|
OCT4 teidDataI
|
|
};
|
|
|
|
//GSN Address - 7.7.32
|
|
type record GSNAddress_gtpu
|
|
{
|
|
OCT1 type_gtpu,
|
|
LIN2_BO_LAST lengthf,
|
|
octetstring gSNAddressValue
|
|
} with {variant (lengthf) "LENGTHTO(gSNAddressValue)";};
|
|
|
|
//////////////////////////
|
|
// Message definition
|
|
//////////////////////////
|
|
// Echo Request - 7.2.1
|
|
type record EchoRequest_IEs {
|
|
PrivateExtension_gtpu_List private_extension_gtpu optional
|
|
}
|
|
|
|
// Echo Response - 7.2.2
|
|
type record EchoResponse_IEs {
|
|
Recovery_gtpu recovery_gtpu,
|
|
PrivateExtension_gtpu_List private_extension_gtpu optional
|
|
}
|
|
|
|
//Error Indication - 3GPP TS 29.281 v13.2.0 - 7.3.1
|
|
type record ErrorIndication_IEs {
|
|
TeidDataI_gtpu teidDataI_gtpu,
|
|
GSNAddress_gtpu gSNAddress_gtpu,
|
|
PrivateExtension_gtpu_List private_extension_gtpu optional
|
|
}
|
|
|
|
//Supported Extension Headers Notification - 7.2.4
|
|
type record SupportedExtensionHeadersNotification_IEs {
|
|
ExtensionHeaderTypeList_gtpu extensionHeaderTypeList_gtpu
|
|
};
|
|
|
|
// 3GPP TS 29.281 v9.3.0 - 7.3.2
|
|
type record EndMarker_IEs{
|
|
PrivateExtension_gtpu_List private_extension_gtpu optional
|
|
}
|
|
|
|
//G PDU - 9.3.1
|
|
type record G_PDU_IEs {
|
|
octetstring data
|
|
};
|
|
|
|
|
|
type union GTPU_IEs {
|
|
EchoRequest_IEs echoRequest_IEs,
|
|
EchoResponse_IEs echoResponse_IEs,
|
|
ErrorIndication_IEs errorIndication_IEs,
|
|
SupportedExtensionHeadersNotification_IEs suppExtHeadersNotif_IEs,
|
|
EndMarker_IEs endMarker_IEs,
|
|
G_PDU_IEs g_PDU_IEs
|
|
};
|
|
|
|
|
|
//////////////////////////
|
|
// Extension Header definition
|
|
//////////////////////////
|
|
type record GTPU_ExtensionHeader {
|
|
integer lengthfield,
|
|
octetstring content,
|
|
OCT1 nextExtHeader
|
|
} with {
|
|
variant (lengthfield) "LENGTHTO(lengthfield,content,nextExtHeader)";
|
|
variant (lengthfield) "UNIT(32)";
|
|
}
|
|
|
|
type record of GTPU_ExtensionHeader GTPU_ExtensionHeader_List;
|
|
|
|
type record GTPU_Header_optional_part {
|
|
OCT2 sequenceNumber,
|
|
OCT1 npduNumber,
|
|
OCT1 nextExtHeader,
|
|
GTPU_ExtensionHeader_List gTPU_extensionHeader_List optional
|
|
}
|
|
|
|
|
|
//////////////////////////
|
|
// PDU definition
|
|
//////////////////////////
|
|
type record PDU_GTPU {
|
|
BIT1 pn_bit,
|
|
BIT1 s_bit,
|
|
BIT1 e_bit,
|
|
BIT1 spare,
|
|
BIT1 pt,
|
|
BIT3 version,
|
|
OCT1 messageType,
|
|
LIN2_BO_LAST lengthf,
|
|
OCT4 teid,
|
|
GTPU_Header_optional_part opt_part optional,
|
|
GTPU_IEs gtpu_IEs
|
|
} with {
|
|
variant (lengthf) "LENGTHTO(opt_part, gtpu_IEs)";
|
|
variant (opt_part) "PRESENCE({pn_bit = '1'B, s_bit = '1'B, e_bit = '1'B})";
|
|
variant (gtpu_IEs) "CROSSTAG( echoRequest_IEs, messageType = '01'O;
|
|
echoResponse_IEs, messageType = '02'O;
|
|
errorIndication_IEs, messageType = '1A'O;
|
|
suppExtHeadersNotif_IEs, messageType = '1F'O;
|
|
endMarker_IEs, messageType = 'FE'O;
|
|
g_PDU_IEs, messageType = 'FF'O)";
|
|
};
|
|
|
|
|
|
type record PDU_GTPU_ext {
|
|
PDU_GTPU gtpu_pdu,
|
|
octetstring extraOctets
|
|
} with {
|
|
variant "" ;
|
|
};
|
|
|
|
}//end of module
|
|
with {
|
|
extension "version R1B"
|
|
encode "RAW"
|
|
}
|
|
|