/////////////////////////////////////////////////////////////////////////////// // // // 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" }