Initial commit
diff --git a/GTP_v13.5.0_CNL113843.tpd b/GTP_v13.5.0_CNL113843.tpd
new file mode 100644
index 0000000..03ea332
--- /dev/null
+++ b/GTP_v13.5.0_CNL113843.tpd
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017 Ericsson
+
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+
+ File: GTP_v13.5.0_CNL113843.tpd
+ Description: tpd project file
+ Rev: R2A
+ Prodnr: CNL 113 843
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>GTP_v13.5.0_CNL113843</ProjectName>
+ <ReferencedProjects>
+ <ReferencedProject name="ProtocolModules_Common" projectLocationURI="../COMMON/ProtocolModules_Common.tpd"/>
+ </ReferencedProjects>
+ <Folders>
+ <FolderResource projectRelativePath="src" relativeURI="src"/>
+ </Folders>
+ <Files>
+ <FileResource projectRelativePath="src/GTPC_EncDec.cc" relativeURI="src/GTPC_EncDec.cc"/>
+ <FileResource projectRelativePath="src/GTPC_Types.ttcn" relativeURI="src/GTPC_Types.ttcn"/>
+ <FileResource projectRelativePath="src/GTPU_EncDec.cc" relativeURI="src/GTPU_EncDec.cc"/>
+ <FileResource projectRelativePath="src/GTPU_Types.ttcn" relativeURI="src/GTPU_Types.ttcn"/>
+ </Files>
+ <ActiveConfiguration>Default</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/GTP_v13.5.0_CNL113843</targetExecutable>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ </Configurations>
+</TITAN_Project_File_Information>
diff --git a/doc/GTP_v13.5.0_CNL113843_1551.pdf b/doc/GTP_v13.5.0_CNL113843_1551.pdf
new file mode 100644
index 0000000..034a41c
--- /dev/null
+++ b/doc/GTP_v13.5.0_CNL113843_1551.pdf
Binary files differ
diff --git a/doc/GTP_v13.5_PRI.pdf b/doc/GTP_v13.5_PRI.pdf
new file mode 100644
index 0000000..488c8ea
--- /dev/null
+++ b/doc/GTP_v13.5_PRI.pdf
Binary files differ
diff --git a/src/GTPC_EncDec.cc b/src/GTPC_EncDec.cc
new file mode 100644
index 0000000..453319d
--- /dev/null
+++ b/src/GTPC_EncDec.cc
@@ -0,0 +1,215 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: GTPC_EncDec.cc
+// Rev: R2A
+// Prodnr: CNL 113 843
+// Contact: http://ttcn.ericsson.se
+// Reference: 3GPP TS 29.060 v13.5.0
+
+#include "GTPC_Types.hh"
+
+namespace GTPC__Types {
+
+
+// find the length of the optional part and decode optional part into OPT_PART
+int find_optpart_length(const unsigned char * opt_part_ptr,GTPC__Header__optional__part& OPT_PART)// pointer to opt part start
+{
+ int opt_part_length = 4; // mandatory minimum length of opt_part
+ OPT_PART.sequenceNumber() = OCTETSTRING(2,opt_part_ptr);
+ OPT_PART.npduNumber() = OCTETSTRING(1,opt_part_ptr+2);
+ OPT_PART.nextExtHeader() = OCTETSTRING(1,opt_part_ptr+3);
+ OPT_PART.gTPC__extensionHeader__List() = OMIT_VALUE;
+
+ int i = 0;
+ bool opt_part_end = false;
+ while(!opt_part_end)
+ {
+ if (opt_part_ptr[opt_part_length-1] != 0x00) // 0x00 means end of optional part
+ {
+ unsigned char lengthfield = opt_part_ptr[opt_part_length];
+
+ OPT_PART.gTPC__extensionHeader__List()()[i].lengthfield() = lengthfield;
+ OPT_PART.gTPC__extensionHeader__List()()[i].content() =
+ OCTETSTRING(4*lengthfield-2,opt_part_ptr + opt_part_length +1);
+ OPT_PART.gTPC__extensionHeader__List()()[i].nextExtHeader() =
+ OCTETSTRING(1,opt_part_ptr + opt_part_length + 4*lengthfield - 1);
+
+ opt_part_length = opt_part_length + 4*lengthfield;
+ i++;
+ }
+ else
+ {opt_part_end = true;}
+ }
+
+ return opt_part_length;
+}
+
+
+void dec__PDU__GTPC_no_optional_part(const unsigned char * udp__pdu,const int pl_udp_pdu_length, const SystemUnderTest& pl__SystemUnderTest,PDU__GTPC& pdu)
+{
+ TTCN_Buffer buf;
+
+ if ((pl__SystemUnderTest == SystemUnderTest::GGSN) || (pl__SystemUnderTest == SystemUnderTest::CGW))
+ // testing GGSN or CGW (not default)
+ {
+ const unsigned char *gtpc_message = (const unsigned char *) udp__pdu;
+ if ((gtpc_message[1] == 0x12) || (gtpc_message[1] == 0x13))
+ // if updatePDPContextRequest or updatePDPContextResponse message is received from GGSN or C-GW
+ {
+ unsigned char pn = gtpc_message[0] & 0x01;
+ pdu.pn__bit() = BITSTRING(1,&pn);
+
+ unsigned char s = (gtpc_message[0] & 0x02) >> 1;
+ pdu.s__bit() = BITSTRING(1,&s);
+
+ unsigned char e = (gtpc_message[0] & 0x04) >> 2;
+ pdu.e__bit() = BITSTRING(1,&e);
+
+ unsigned char spare = (gtpc_message[0] & 0x08) >> 3;
+ pdu.spare() = BITSTRING(1,&spare );
+
+ unsigned char pt = (gtpc_message[0] & 0x10) >> 4;
+ pdu.pt() = BITSTRING(1,&pt );
+
+ unsigned char version = ((gtpc_message[0] & 0x80) >> 7) |
+ ((gtpc_message[0] & 0x40) >> 5) |
+ ((gtpc_message[0] & 0x20) >> 3) ;
+ pdu.version() = BITSTRING(3,&version);
+
+ pdu.messageType() = OCTETSTRING(1,gtpc_message+1);
+
+ pdu.lengthf() = (gtpc_message[2] << 8) + gtpc_message[3];
+
+ pdu.teid() = OCTETSTRING(4,gtpc_message+4);
+
+ pdu.opt__part() = OMIT_VALUE;
+
+ if (gtpc_message[1] == 0x12) //updatePDPContextRequest
+ {
+ if(pl__SystemUnderTest == SystemUnderTest::GGSN) // from GGSN
+ {
+ UpdatePDPContextRequestGGSN updatePDPContextRequestGGSN;
+ OCTETSTRING updatePDPContextRequestGGSN_string = OCTETSTRING(pl_udp_pdu_length-8,udp__pdu+8 );
+ buf.put_os(updatePDPContextRequestGGSN_string);
+ updatePDPContextRequestGGSN.decode(UpdatePDPContextRequestGGSN_descr_,buf,TTCN_EncDec::CT_RAW);
+ pdu.gtpc__pdu().updatePDPContextRequest().updatePDPContextRequestGGSN() = updatePDPContextRequestGGSN;
+ }
+ else // from CGW
+ {
+ UpdatePDPContextRequestCGW updatePDPContextRequestCGW;
+ OCTETSTRING updatePDPContextRequestCGW_string = OCTETSTRING(pl_udp_pdu_length-8,udp__pdu+8 );
+ buf.put_os(updatePDPContextRequestCGW_string);
+ updatePDPContextRequestCGW.decode(UpdatePDPContextRequestCGW_descr_,buf,TTCN_EncDec::CT_RAW);
+ pdu.gtpc__pdu().updatePDPContextRequest().updatePDPContextRequestCGW() = updatePDPContextRequestCGW;
+ }
+ }
+ else //updatePDPContextResponse
+ {
+ if(pl__SystemUnderTest == SystemUnderTest::GGSN) // from GGSN
+ {
+ UpdatePDPContextResponseGGSN updatePDPContextResponseGGSN;
+ OCTETSTRING updatePDPContextResponseGGSN_string = OCTETSTRING(pl_udp_pdu_length-8,udp__pdu+8 );
+ buf.put_os(updatePDPContextResponseGGSN_string);
+ updatePDPContextResponseGGSN.decode(UpdatePDPContextResponseGGSN_descr_,buf,TTCN_EncDec::CT_RAW);
+ pdu.gtpc__pdu().updatePDPContextResponse().updatePDPContextResponseGGSN() = updatePDPContextResponseGGSN;
+ }
+ else // from CGW
+ {
+ UpdatePDPContextResponseCGW updatePDPContextResponseCGW;
+ OCTETSTRING updatePDPContextResponseCGW_string = OCTETSTRING(pl_udp_pdu_length-8,udp__pdu+8 );
+ buf.put_os(updatePDPContextResponseCGW_string);
+ updatePDPContextResponseCGW.decode(UpdatePDPContextResponseCGW_descr_,buf,TTCN_EncDec::CT_RAW);
+ pdu.gtpc__pdu().updatePDPContextResponse().updatePDPContextResponseCGW() = updatePDPContextResponseCGW;
+ }
+ }
+
+ buf.clear();
+ return;
+ }
+ else // if message not equal to updatePDPContextRequest or updatePDPContextResponse is received from GGSN or C-GW
+ {
+ buf.put_s(pl_udp_pdu_length,udp__pdu);
+ pdu.decode(PDU__GTPC_descr_, buf, TTCN_EncDec::CT_RAW);
+ buf.clear();
+ return;
+ }
+ }
+ else //pl__SystemUnderTest is SGSN or MME (this is default)
+ {
+ buf.put_s(pl_udp_pdu_length,udp__pdu);
+ pdu.decode(PDU__GTPC_descr_, buf, TTCN_EncDec::CT_RAW);
+ buf.clear();
+ return;
+ }
+}
+
+//////////////////////////////////
+// Decoding function for GTPC__DialoguePDU
+//////////////////////////////////
+
+PDU__GTPC dec__PDU__GTPC(const OCTETSTRING& udp__pdu,const SystemUnderTest& pl__SystemUnderTest)
+{
+ PDU__GTPC pdu;
+
+ const unsigned char *gtpc_message = (const unsigned char *) udp__pdu;
+
+ int opt_part_length = 0;
+ if ( gtpc_message[0] & 0x07 ) // opt_part is present
+ {
+ GTPC__Header__optional__part OPT_PART;
+
+ // find the length of the optional part and decode optional part into OPT_PART
+ opt_part_length = find_optpart_length(gtpc_message+8,OPT_PART);
+ if( ((gtpc_message[2] << 8) + gtpc_message[3] - opt_part_length) < 0 )
+ {TTCN_error("Decoding error, lengthf field is shorter that decoded length of opt_part");}
+
+ // build PDU without optional part
+ unsigned int gtpc_IEs_length = (gtpc_message[2] << 8) + gtpc_message[3] - opt_part_length;
+ unsigned char gtpcBuf[8 + gtpc_IEs_length];
+ memcpy(gtpcBuf,gtpc_message,8);
+ memcpy(gtpcBuf+8,gtpc_message+8+opt_part_length,gtpc_IEs_length);
+
+ // substitute dummy bits (indicating there is no optional part)
+ gtpcBuf[0] = gtpcBuf[0] & 0xf8;
+
+ // substitute dummy length (not including optional part)
+ gtpcBuf[2] = (gtpc_IEs_length & 0xff00) >> 8;
+ gtpcBuf[3] = gtpc_IEs_length & 0xff;
+
+ // call decoding function
+ dec__PDU__GTPC_no_optional_part(gtpcBuf,udp__pdu.lengthof() - opt_part_length,pl__SystemUnderTest,pdu);
+
+ // put back the original values
+ unsigned char pn = gtpc_message[0] & 0x01;
+ pdu.pn__bit() = BITSTRING(1,&pn);
+
+ unsigned char s = (gtpc_message[0] & 0x02) >> 1;
+ pdu.s__bit() = BITSTRING(1,&s);
+
+ unsigned char e = (gtpc_message[0] & 0x04) >> 2;
+ pdu.e__bit() = BITSTRING(1,&e);
+
+ pdu.lengthf() = (gtpc_message[2] << 8) + gtpc_message[3];
+
+ pdu.opt__part() = OPT_PART;
+
+ return pdu;
+ }
+ else // opt_part is not present
+ {
+ dec__PDU__GTPC_no_optional_part(gtpc_message,udp__pdu.lengthof(),pl__SystemUnderTest,pdu);
+ return pdu;
+ }
+} // end of function
+
+
+
+}//namespace
diff --git a/src/GTPC_Types.ttcn b/src/GTPC_Types.ttcn
new file mode 100644
index 0000000..1575baa
--- /dev/null
+++ b/src/GTPC_Types.ttcn
@@ -0,0 +1,3957 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: GTPC_Types.ttcn
+// Rev: R2A
+// Prodnr: CNL 113 843
+// Contact: http://ttcn.ericsson.se
+// Reference: 3GPP TS 29.060 v13.5.0
+
+module GTPC_Types {
+
+import from General_Types all;
+
+// external encoding/decoding functions
+external function enc_PDU_GTPC(in PDU_GTPC gtpc_pdu) return octetstring
+with { extension "prototype(convert)"
+ extension "encode(RAW)"
+ }
+
+external function dec_PDU_GTPC(in octetstring udp_pdu, SystemUnderTest pl_SystemUnderTest := SGSN) return PDU_GTPC
+// for SGSN testing pl_SystemUnderTest is SGSN (default value)
+// for GGSN testing pl_SystemUnderTest is GGSN
+// for CGW testing pl_SystemUnderTest is CGW
+// for MME testing pl_SystemUnderTest is MME
+// in current implementation the decoder behavior is identical for
+// SGSN and MME
+
+// determines SUT, needed for decoding updatePDPContextRequest
+// and updatePDPContextResponse messages
+type enumerated SystemUnderTest{SGSN(0),GGSN(1),CGW(2),MME(3)};
+/////////////////////////////
+// Information Elements
+/////////////////////////////
+//Information Element with an IE Type Extension field - 7.7.0A
+//for future use
+type record IE_Type_Extension {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf, //16 bits
+ IE_Extension_UnionType iE_Type_Extension
+
+} with {
+ variant (lengthf) "LENGTHTO(iE_Type_Extension)";
+ variant "PRESENCE( type_gtpc = 'EE'O)";
+};
+
+type union IE_Extension_UnionType
+{
+ IE_Extension_Type iE_Type_Extension
+}
+
+type record IE_Extension_Type
+{
+ OCT2 elementIdentifier,
+ octetstring valueField
+}
+
+
+//Cause - 7.7.1
+type record Cause_gtpc {
+ OCT1 type_gtpc,
+ OCT1 causevalue
+} with { variant "PRESENCE( type_gtpc = '01'O)"; };
+
+//IMSI - 7.7.2
+type record IMSI_gtpc {
+ OCT1 type_gtpc,
+ hexstring digits length(15),
+ HEX1 padding
+} with { variant "PRESENCE( type_gtpc = '02'O)"; };
+
+//Routing Area ID - 7.7.3
+// Note : the order of MNC digits is
+// MNC digit 3, MNC digit 1, MNC digit 2
+type record RoutingAreaIdentity {
+ OCT1 type_gtpc,
+ hexstring mcc_digits length(3),
+ hexstring mnc_digits length(3),
+ OCT2 lac,
+ OCT1 rac
+} with { variant "PRESENCE( type_gtpc = '03'O)"; };
+
+//TLLI - 7.7.4
+type record TLLI {
+ OCT1 type_gtpc,
+ OCT4 tlli_element
+} with { variant "PRESENCE( type_gtpc = '04'O)"; };
+
+//Packet TMSI - 7.7.5
+type record PacketTMSI {
+ OCT1 type_gtpc,
+ OCT4 p_tmsi
+} with { variant "PRESENCE( type_gtpc = '05'O)"; };
+
+//Reordering Required - 7.7.6
+type record ReorderingRequired {
+ OCT1 type_gtpc,
+ BIT1 reordreq,
+ BIT7 spare
+} with { variant "PRESENCE( type_gtpc = '08'O)"; };
+
+//Authentication Triplet - 7.7.7
+type record AuthenticationTriplet_GTPC {
+ OCT1 type_gtpc,
+ OCT16 rand,
+ OCT4 sres,
+ OCT8 kc
+} with { variant "PRESENCE( type_gtpc = '09'O)"; };
+
+type set of AuthenticationTriplet_GTPC AuthenticationTriplet_GTPC_SetOf;
+
+//MAP Cause - 7.7.8
+type record MAP_Cause {
+ OCT1 type_gtpc,
+ OCT1 mapCauseValue
+} with { variant "PRESENCE( type_gtpc = '0B'O)"; };
+
+//PTMSI Signature - 7.7.9
+type record PTMSI_Signature {
+ OCT1 type_gtpc,
+ OCT3 ptmsi_Signature
+} with { variant "PRESENCE( type_gtpc = '0C'O)"; };
+
+//MS Validated - 7.7.10
+type record MS_Validated {
+ OCT1 type_gtpc,
+ BIT1 msValidated,
+ BIT7 spare
+} with { variant "PRESENCE( type_gtpc = '0D'O)"; };
+
+//Recovery - 7.7.11
+type record Recovery_gtpc {
+ OCT1 type_gtpc,
+ OCT1 restartCounter
+} with { variant "PRESENCE(type_gtpc = '0E'O)";};
+
+//Selection Mode - 7.7.12
+type record SelectionMode {
+ OCT1 type_gtpc,
+ BIT2 selectModeValue,
+ BIT6 spare
+} with { variant "PRESENCE(type_gtpc = '0F'O)"; };
+
+//TEI Data I - 7.7.13
+type record TeidDataI {
+ OCT1 type_gtpc,
+ OCT4 teidDataI
+} with { variant "PRESENCE(type_gtpc = '10'O)"; };
+
+//TEI Control Plane - 7.7.14
+type record TeidControlPlane {
+ OCT1 type_gtpc,
+ OCT4 teidControlPlane
+} with { variant "PRESENCE(type_gtpc = '11'O)"; };
+
+//TEI Data II - 7.7.15
+type record of TeidDataII TeidDataII_List
+
+type record TeidDataII {
+ OCT1 type_gtpc,
+ BIT4 nsapi,
+ BIT4 unused,
+ OCT4 teidDataII
+} with { variant "PRESENCE(type_gtpc = '12'O)"; };
+
+//Teardown Ind -7.7.16
+type record TearDownInd {
+ OCT1 type_gtpc,
+ BIT1 tdInd,
+ BIT7 spare
+} with { variant "PRESENCE(type_gtpc = '13'O)"; };
+
+//NSAPI - 7.7.17
+type record NSAPI_GTPC {
+ OCT1 type_gtpc,
+ BIT4 nsapi,
+ BIT4 unused
+} with { variant "PRESENCE(type_gtpc = '14'O)"; };
+
+//RANAP Cause - 7.7.18
+type record RANAPCause {
+ OCT1 type_gtpc,
+ OCT1 ranapCause
+} with { variant "PRESENCE(type_gtpc = '15'O)"; };
+
+//RAB Context - 7.7.19
+type record of RABContext RABContext_List;
+
+type record RABContext {
+ OCT1 type_gtpc,
+ BIT4 nsapi,
+ BIT4 spare,
+ OCT2 dlgtp_u,
+ OCT2 ulgtp_u,
+ OCT2 dl_pdcp,
+ OCT2 ul_pdcp
+} with {variant "PRESENCE( type_gtpc = '16'O)";};
+
+//Radio Priority SMS - 7.7.20
+type record RadioPrioritySMS {
+ OCT1 type_gtpc,
+ BIT3 radioprioritySMS,
+ BIT5 reserved
+} with {variant "PRESENCE( type_gtpc = '17'O)";};
+
+//RadioPriority - 7.7.21
+
+type record of RadioPriority RadioPriority_List;
+
+type record RadioPriority {
+ OCT1 type_gtpc,
+ BIT3 radiopriority,
+ BIT1 reserved,
+ BIT4 nsapi
+} with {variant "PRESENCE( type_gtpc = '18'O)";};
+
+//Packet Flow Id - 7.7.22
+type record of PacketFlowID PacketFlowID_List
+
+type record PacketFlowID {
+ OCT1 type_gtpc,
+ BIT4 nsapi,
+ BIT4 reserved,
+ OCT1 packflowID
+} with {variant "PRESENCE( type_gtpc = '19'O)";};
+
+//Charging Characteristics - 7.7.23
+type record of ChargingCharacteristics_GTPC
+ ChargingCharacteristics_List_GTPC;
+
+type record ChargingCharacteristics_GTPC {
+ OCT1 type_gtpc,
+ OCT2 chargingChar
+} with {variant "PRESENCE( type_gtpc = '1A'O)";};
+
+//Trace Reference - 7.7.24
+type record TraceRef {
+ OCT1 type_gtpc,
+ OCT2 trace_ref
+} with {variant "PRESENCE( type_gtpc = '1B'O)";};
+
+//Trace Type - 7.7.25
+type record GTP_TraceType {
+ OCT1 type_gtpc,
+ OCT2 trace_type
+} with {variant "PRESENCE( type_gtpc = '1C'O)";};
+
+//MS Not Reachable Reason - 7.7.25A
+type record MSNotReachableReason {
+ OCT1 type_gtpc,
+ OCT1 reason_for_absence
+} with {variant "PRESENCE( type_gtpc = '1D'O)";};
+
+//Radio Priority LCS - 7.7.25B
+type record RadioPriorityLCS{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf, //16 bits
+ BIT3 radioPriorityLCS,
+ BIT5 reserved
+} with { variant "PRESENCE( type_gtpc = '96'O)";
+ variant (lengthf) "LENGTHTO(radioPriorityLCS,reserved)"; };
+
+//Charging ID - 7.7.26
+type record ChargingID {
+ OCT1 type_gtpc,
+ OCT4 chargingID
+} with { variant "PRESENCE( type_gtpc = '7F'O)";};
+
+//End User Address ID - 7.7.27
+type record EndUserAddress{
+ OCT1 type_gtpc,
+ EndUserAddress_types endUserAddress
+} with { variant "PRESENCE( type_gtpc = '80'O)";};
+
+type union EndUserAddress_types {
+ EndUserAddressIPv4 endUserAddressIPv4,
+ EndUserAddressIPv6 endUserAddressIPv6,
+ EndUserAddressPPP endUserAddressPPP,
+ EndUserAddressIPv4andIPv6 endUserAddressIPv4andIPv6,
+ EndUserAddressOSPIHOS endUserAddressOSPIHOS
+} with { variant "TAG(endUserAddressIPv4, pdp_typenum = '21'O;
+ endUserAddressIPv6, pdp_typenum = '57'O;
+ endUserAddressPPP, pdp_typenum = '01'O;
+ endUserAddressIPv4andIPv6, pdp_typenum = '8D'O;
+ endUserAddressOSPIHOS, OTHERWISE;)" };
+
+type record EndUserAddressIPv4 {
+ LIN2_BO_LAST lengthf, //16 bits
+ BIT4 pdp_typeorg,
+ BIT4 spare,
+ OCT1 pdp_typenum,
+ OCT4 ipv4_address optional
+} with { variant (lengthf) "LENGTHTO(pdp_typeorg, spare, pdp_typenum,
+ ipv4_address)"; };
+
+type record EndUserAddressIPv6 {
+ LIN2_BO_LAST lengthf, //16 bits
+ BIT4 pdp_typeorg,
+ BIT4 spare,
+ OCT1 pdp_typenum,
+ OCT16 ipv6_address optional
+} with { variant (lengthf) "LENGTHTO(pdp_typeorg, spare, pdp_typenum,
+ ipv6_address)"; };
+
+type record EndUserAddressPPP {
+ LIN2_BO_LAST lengthf, //16 bits
+ BIT4 pdp_typeorg,
+ BIT4 spare,
+ OCT1 pdp_typenum
+} with { variant (lengthf) "LENGTHTO(pdp_typeorg, spare, pdp_typenum)"; };
+
+type record EndUserAddressIPv4andIPv6 {
+ LIN2_BO_LAST lengthf, //16 bits
+ BIT4 pdp_typeorg,
+ BIT4 spare,
+ OCT1 pdp_typenum,
+ OCT4 ipv4_address optional,
+ OCT16 ipv6_address optional
+} with { variant (lengthf) "LENGTHTO(pdp_typeorg, spare, pdp_typenum,ipv4_address,
+ ipv6_address)";
+ variant(ipv4_address) "PRESENCE(lengthf = 6,lengthf = 22)"
+ variant(ipv6_address) "PRESENCE(lengthf = 18,lengthf = 22)"
+};
+
+// ETHECS: specification not found in Technical Specification
+type record EndUserAddressOSPIHOS {
+ LIN2_BO_LAST lengthf, //16 bits
+ BIT4 pdp_typeorg,
+ BIT4 spare,
+ OCT1 pdp_typenum
+} with { variant (lengthf) "LENGTHTO(pdp_typeorg, spare, pdp_typenum)"; };
+
+//MM Context - 7.7.28
+type record MM_Context {
+ OCT1 type_gtpc,
+ MM_ContextU context
+} with { variant "PRESENCE( type_gtpc = '81'O)";};
+
+type union MM_ContextU {
+ MM_ContextGSM mmcontGSM,
+ MM_ContextUMTS mmcontUMTS,
+ MM_ContextGSMUMTS mmcontGSMUMTS,
+ MM_ContextUMTSReceive mmcontUMTSReceive
+} with { variant "TAG(mmcontGSM, security = '01'B;
+ mmcontUMTS, security = '10'B;
+ mmcontGSMUMTS, security = '11'B;
+ mmcontUMTSReceive, security = '00'B;)"; };
+
+
+type record MM_ContextGSM {
+ LIN2_BO_LAST lengthf,//16 bits
+ BIT3 cksn,
+ BIT5 spare,
+ BIT3 usedCipher,
+ integer noofVectors,
+ BIT2 security,
+ OCT8 kc,
+ octetstring triplet,
+ OCT2 drx_par,
+ integer msNetW_cap_length,
+ octetstring msNetw_cap optional,
+ LIN2_BO_LAST containerLength,
+ octetstring container optional
+} with { variant (lengthf) "LENGTHTO(cksn, spare, usedCipher, noofVectors,
+ security, kc, triplet, drx_par,
+ msNetW_cap_length, msNetw_cap,
+ containerLength, container
+ )";
+ variant (msNetW_cap_length) "LENGTHTO(msNetw_cap)";
+ variant (containerLength) "LENGTHTO(container)";
+ variant (noofVectors) "FIELDLENGTH(3)";
+ variant (noofVectors) "LENGTHTO(triplet)";
+ variant (noofVectors) "UNIT(224)";
+};
+
+type record MM_ContextUMTS {
+ LIN2_BO_LAST lengthf,
+ BIT3 ksi,
+ BIT3 usedGPRSIntegrityAlgorithm,
+ BIT1 ugipai,
+ BIT1 gupii,
+ BIT3 spare1,
+ integer noofVectors ,
+ BIT2 security,
+ OCT16 ck,
+ OCT16 ik,
+ LIN2_BO_LAST quintupletlength,
+ octetstring quintuplet,
+ OCT2 drx_par,
+ integer msNetW_cap_length,
+ octetstring msNetw_cap optional,
+ LIN2_BO_LAST containerLength,
+ octetstring container optional
+} with { variant (lengthf) "LENGTHTO(ksi, usedGPRSIntegrityAlgorithm, ugipai, gupii, spare1, noofVectors, security,
+ ck, ik, quintupletlength, quintuplet,
+ drx_par, msNetW_cap_length, msNetw_cap,
+ containerLength, container
+ )";
+ variant (quintupletlength) "LENGTHTO(quintuplet)";
+ variant (msNetW_cap_length) "LENGTHTO(msNetw_cap)";
+ variant (containerLength) "LENGTHTO(container)";
+ variant (noofVectors) "FIELDLENGTH(3)";
+};
+
+type record MM_ContextGSMUMTS {
+ LIN2_BO_LAST lengthf,
+ BIT3 cksn,
+ BIT5 spare,
+ BIT3 usedCipher,
+ integer noofVectors,
+ BIT2 security,
+ OCT8 kc,
+ LIN2_BO_LAST quintupletlength,
+ octetstring quintuplet,
+ OCT2 drx_par,
+ integer msNetW_cap_length,
+ octetstring msNetw_cap optional,
+ LIN2_BO_LAST containerLength,
+ octetstring container optional
+} with { variant (lengthf) "LENGTHTO(cksn, spare, usedCipher, noofVectors,
+ security, kc, quintupletlength, quintuplet,
+ drx_par, msNetW_cap_length, msNetw_cap,
+ containerLength, container
+ )";
+ variant (quintupletlength) "LENGTHTO(quintuplet)";
+ variant (msNetW_cap_length) "LENGTHTO(msNetw_cap)";
+ variant (containerLength) "LENGTHTO(container)";
+ variant (noofVectors) "FIELDLENGTH(3)";
+};
+
+type record MM_ContextUMTSReceive {
+ LIN2_BO_LAST lengthf,
+ BIT3 ksi,
+ BIT3 usedGPRSIntegrityAlgorithm,
+ BIT1 ugipai,
+ BIT1 gupii,
+ BIT3 usedCipher,
+ integer noofVectors,
+ BIT2 security,
+ OCT16 ck,
+ OCT16 ik,
+ LIN2_BO_LAST quintupletlength,
+ octetstring quintuplet,
+ OCT2 drx_par,
+ integer msNetW_cap_length,
+ octetstring msNetw_cap optional,
+ LIN2_BO_LAST containerLength,
+ octetstring container optional
+} with { variant (lengthf) "LENGTHTO(ksi, usedGPRSIntegrityAlgorithm, ugipai, gupii,
+ usedCipher, noofVectors,
+ security, ck, ik, quintupletlength,
+ quintuplet, drx_par,msNetW_cap_length,
+ msNetw_cap, containerLength, container
+ )";
+ variant (quintupletlength) "LENGTHTO(quintuplet)";
+ variant (msNetW_cap_length) "LENGTHTO(msNetw_cap)";
+ variant (containerLength) "LENGTHTO(container)";
+ variant (noofVectors) "FIELDLENGTH(3)";
+};
+
+//From 9.9.3.34 of 3GPP 24.301 according to Req. Spec. 4/1056-LPA 107 579/1 Rev D
+type record GTPC_UENetworkCapabilityV
+{
+ BIT8 eEA,
+ BIT7 eIA,
+ BIT1 spare,
+ BIT8 uEA optional,
+ BIT7 uIA optional,
+ BIT1 uCS2 optional,
+ BIT1 spare2 optional,
+ BIT1 vCC optional,
+ BIT6 spare3 optional,
+ octetstring spare4 length (0..8) optional
+}
+
+//PDP context - 7.7.29
+type record of PDP_Context_GTPC PDP_Context_GTPC_List;
+
+type record PDP_Context_GTPC {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT4 nsapi,
+ BIT1 order,
+ BIT1 asi,
+ BIT1 vaa,
+ BIT1 ea,
+ BIT4 sapi,
+ BIT4 spare1,
+ integer qos_subLength,
+ QualityOfServiceProfile_Value qos_sub,
+ integer qos_reqLength,
+ QualityOfServiceProfile_Value qos_req,
+ integer qos_negLength,
+ QualityOfServiceProfile_Value qos_neg,
+ OCT2 snd,
+ OCT2 snu,
+ OCT1 sendNPDUnum,
+ OCT1 receiveNPDUnum,
+ OCT4 uteidControlPlane,
+ OCT4 uteidData1,
+ OCT1 pdpcontext,
+ BIT4 pdp_typeorg,
+ BIT4 spare2,
+ OCT1 pdp_typenum,
+ integer pdp_addressLength,
+ octetstring pdp_address length (0..63),
+ integer ggsn_addressControlPlaneLength,
+ octetstring ggsn_addressControlPlane length (4..16),
+ integer ggsn_addressUserPlaneLength,
+ octetstring ggsn_addressUserPlane length (4..16),
+ integer apnLength,
+ octetstring apn,
+ BIT4 transactionId ,
+ BIT4 spare3,
+ OCT1 transactionID_cont,
+ OCT1 pdp_typenum2 optional,
+ LIN1 pdp_addresslength2 optional,
+ octetstring pdp_Address2 length (0..63) optional
+} with {variant "PRESENCE( type_gtpc = '82'O)";
+ variant (lengthf) "LENGTHTO(nsapi, order, asi, vaa, ea,
+ sapi, spare1, qos_subLength, qos_sub, qos_reqLength, qos_req,
+ qos_negLength, qos_neg, snd, snu, sendNPDUnum, receiveNPDUnum,
+ uteidControlPlane, uteidData1,pdpcontext, pdp_typeorg, spare2,
+ pdp_typenum, pdp_addressLength, pdp_address,
+ ggsn_addressControlPlaneLength, ggsn_addressControlPlane,
+ ggsn_addressUserPlaneLength, ggsn_addressUserPlane, apnLength, apn,
+ transactionId, spare3, transactionID_cont, pdp_typenum2,pdp_addresslength2,pdp_Address2)";
+ variant (qos_subLength) "LENGTHTO(qos_sub)";
+ variant (qos_reqLength) "LENGTHTO(qos_req)";
+ variant (qos_negLength) "LENGTHTO(qos_neg)";
+ variant (pdp_addressLength) "LENGTHTO(pdp_address)";
+ variant (ggsn_addressControlPlaneLength)
+ "LENGTHTO(ggsn_addressControlPlane)";
+ variant (ggsn_addressUserPlaneLength) "LENGTHTO(ggsn_addressUserPlane)";
+ variant (apnLength) "LENGTHTO(apn)";
+ variant (pdp_typenum2,pdp_addresslength2,pdp_Address2) "PRESENCE( ea = '1'B)";
+ variant (pdp_addresslength2) "LENGTHTO(pdp_Address2)";
+ };
+
+//Access Point Name - 7.7.30
+type record AccessPointName {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring apn_value
+}with { variant "PRESENCE( type_gtpc = '83'O)";
+ variant (lengthf) "LENGTHTO(apn_value)"; };
+
+//Protocol Configuration Options - 7.7.31
+// 24.008 10.5.6.3
+type record ProtConfigOptions {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT3 configProtocol,
+ BIT4 spare,
+ BIT1 extension0,
+ ProtocolIDList protocols
+} with { variant "PRESENCE( type_gtpc = '84'O)";
+ variant (lengthf) "LENGTHTO(configProtocol, spare, extension0,
+ protocols)"; };
+
+type set of ProtocolElement ProtocolIDList;
+
+type record ProtocolElement {
+ OCT2 protocolID,
+ integer lengthProtoID,
+ octetstring protoIDContents
+} with { variant (lengthProtoID) "LENGTHTO(protoIDContents)" };
+
+//GSN Address - 7.7.32
+type record GSN_Address_GTPC {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring addressf
+} with { variant "PRESENCE( type_gtpc = '85'O)";
+ variant (lengthf) "LENGTHTO(addressf)"; };
+
+//MS International PSTN/ISDN Num.(MSISDN) - 7.7.33
+type record MSISDN {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring msisdn
+} with { variant "PRESENCE( type_gtpc = '86'O)";
+ variant (lengthf) "LENGTHTO(msisdn)"; };
+
+type record QoSV_GTPC
+{
+ BIT3 reliabilityClass,
+ BIT3 delayClass,
+ BIT2 spare1, // '00'B
+ BIT3 precedenceClass,
+ BIT1 spare2, //'0'B
+ BIT4 peakThroughput,
+ BIT5 meanThroughput,
+ BIT3 spare3, //'000'B
+ BIT3 deliverErroneusSDU optional, //opt because of V97
+ BIT2 deliveryOrder optional, //opt because of V97
+ BIT3 trafficClass optional, //opt because of V97
+ OCT1 maxSDUSize optional, //opt because of V97
+ OCT1 maxBitrateUplink optional, //opt because of V97
+ OCT1 maxBitrateDownlink optional, //opt because of V97
+ BIT4 sduErrorRatio optional, //opt because of V97
+ BIT4 residualBER optional, //opt because of V97
+ BIT2 trafficHandlingPriority optional, //opt because of V97
+ BIT6 transferDelay optional, //opt because of V97
+ OCT1 guaranteedBitRateUplink optional, //opt because of V97
+ OCT1 guaranteedBitRateDownlink optional, //opt because of V97
+ BIT4 sourceStatisticsDescriptor optional, //opt because of V97
+ BIT1 signallingIndication optional, //opt because of V97
+ BIT3 spare4 optional, //opt because of V97
+ // '000'B
+ OCT1 maxBitrateDownlinkExt optional, //opt because of V97
+ OCT1 guaranteedBitRateDownlinkExt optional, //opt because of V97
+ OCT1 maxBitrateUplinkExt optional, //opt because of V97
+ OCT1 guaranteedBitRateUplinkExt optional //opt because of V97
+};
+
+//Quality Of Service Profile - 7.7.34
+type record QualityOfServiceProfile {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 allocRetensionPrio,
+ QoSV_GTPC qos_ProfileValue
+} with { variant "PRESENCE( type_gtpc = '87'O)";
+ variant (lengthf) "LENGTHTO(allocRetensionPrio, qos_ProfileValue)";};
+
+type record QualityOfServiceProfile_Value {
+ OCT1 allocRetensionPrio,
+ QoSV_GTPC qos_ProfileValue
+}
+
+//Authentication Quituplet - 7.7.35
+type record AuthenticationQuintuplet_GTPC {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT16 rand,
+ integer xresLength,
+ octetstring xres,
+ OCT16 ck,
+ OCT16 ik,
+ integer autnLength,
+ octetstring autn
+} with { variant "PRESENCE( type_gtpc = '88'O)";
+ variant (lengthf) "LENGTHTO(rand, xresLength, xres, ck, ik,
+ autnLength, autn)";
+ variant (xresLength) "LENGTHTO(xres)";
+ variant (autnLength) "LENGTHTO(autn)"; };
+
+//Traffic Flow Template (TFT) - 7.7.36
+// 24.008 10.5.6.12
+type record TrafficFlowTemplate {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ TrafficFlowTemplateV_GTPC tft
+} with { variant "PRESENCE( type_gtpc = '89'O)";
+ variant (lengthf) "LENGTHTO(tft)"; };
+
+
+type union TrafficFlowTemplateV_GTPC
+{
+ TrafficFlowTemplateV_CreateAddReplaceTFT_GTPC
+ trafficFlowTemplateV_CreateAddReplaceTFT,
+ TrafficFlowTemplateV_DeletePacketFilter_GTPC
+ trafficFlowTemplateV_DeletePacketFilter,
+ TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation_GTPC
+ trafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation
+};
+
+
+type record TrafficFlowTemplateV_CreateAddReplaceTFT_GTPC
+{
+ integer numberOfPacketFilters,
+ BIT1 eBIT,
+ BIT3 operationCodeTFT, //'001'B or
+ PacketFilterList_CreateAddReplaceTFT_GTPC packetFilterList_CreateAddReplaceTFT,
+ ParametersList_GTPC parametersList optional
+} with {
+ variant "PRESENCE (operationCodeTFT = '001'B, // Create New TFT
+ operationCodeTFT = '011'B, // Add packet filters to existing TFT
+ operationCodeTFT = '100'B // Replace packet filters in existing TFT
+ )";
+ variant(parametersList) "PRESENCE(eBIT = '1'B)";
+ variant(numberOfPacketFilters)"FIELDLENGTH(4)";
+ variant(numberOfPacketFilters)"LENGTHTO(packetFilterList_CreateAddReplaceTFT)";
+ variant(numberOfPacketFilters)"UNIT(elements)";
+};
+
+
+type record TrafficFlowTemplateV_DeletePacketFilter_GTPC
+{
+ integer numberOfPacketFilters,
+ BIT1 eBIT,
+ BIT3 operationCodeTFT,
+ //'101'B or '011'B or '100'B
+ PacketFilterList_DeletePacketFilter_GTPC packetFilterList_DeletePacketFilter,
+ ParametersList_GTPC parametersList optional
+} with {
+ variant "PRESENCE (operationCodeTFT = '101'B)" // Delete packet filters from existing TFT
+ variant(parametersList) "PRESENCE(eBIT = '1'B)";
+ variant(numberOfPacketFilters)"FIELDLENGTH(4)";
+ variant(numberOfPacketFilters)"LENGTHTO(packetFilterList_DeletePacketFilter)";
+ variant (numberOfPacketFilters)"UNIT(elements)";
+};
+
+
+type record TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation_GTPC
+{
+ BIT4 numberOfPacketFilters, //'0000'B
+ // numberOfPacketFilters is meaningless here since there is no PacketFilterList
+ BIT1 eBIT,
+ BIT3 operationCodeTFT, // '010'B or '110'B
+ ParametersList_GTPC parametersList optional
+} with {
+ variant "PRESENCE (operationCodeTFT = '010'B, // delete existing TFT
+ operationCodeTFT = '110'B // No TFT Operation
+ )";
+ variant (parametersList) "PRESENCE(eBIT = '1'B)"
+};
+
+
+type record of PacketFilter_GTPC PacketFilterList_CreateAddReplaceTFT_GTPC;
+
+
+type record PacketFilter_GTPC
+{
+ PacketFilterIdentifier_GTPC identifier,
+ OCT1 evaluationPrecedence,
+ LIN1 lengthIndicator,
+ octetstring contents
+} with { variant (lengthIndicator) "LENGTHTO (contents)"};
+
+
+type record of PacketFilterIdentifier_GTPC PacketFilterList_DeletePacketFilter_GTPC;
+
+
+type OCT1 PacketFilterIdentifier_GTPC;
+
+
+type record of Parameter_GTPC ParametersList_GTPC;
+
+
+type record Parameter_GTPC
+{
+ OCT1 parameterIdentifier,
+ LIN1 lengthIndicator,
+ octetstring contents
+} with { variant (lengthIndicator) "LENGTHTO (contents)"};
+
+
+//Target Identification - 7.7.37
+type record TargetIdentification {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ HEX1 mcc1 optional,
+ HEX1 mcc2 optional,
+ HEX1 mcc3 optional,
+ HEX1 mnc3 optional,
+ HEX1 mnc1 optional,
+ HEX1 mnc2 optional,
+ OCT2 lac optional,
+ OCT1 rac optional,
+ OCT2 rnc_id optional,
+ octetstring extended_rnc_id optional
+} with { variant "PRESENCE( type_gtpc = '8A'O)";
+ variant (lengthf) "LENGTHTO(mcc1, mcc2, mcc3, mnc3, mnc1, mnc2,
+ lac, rac, rnc_id, extended_rnc_id)"; };
+
+//UTRAN Transparent container - 7.7.38
+type record UTRANTransparentContainer {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring transparentfield
+} with { variant "PRESENCE( type_gtpc = '8B'O)";
+ variant (lengthf) "LENGTHTO(transparentfield)";};
+
+//RAB Setup Information - 7.7.39
+type record of RABSetupInformation RABSetupInformation_List
+
+type record RABSetupInformation{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT4 nsapi,
+ BIT4 unused,
+ OCT4 teidData optional,
+ octetstring rncIpAddress optional
+ } with { variant "PRESENCE( type_gtpc = '8C'O)";
+ variant (lengthf) "LENGTHTO(nsapi,unused,teidData,rncIpAddress)";};
+
+//Extension Header Type List - 7.7.40
+type record ExtensionHeaderTypeList_gtpc {
+ OCT1 type_gtpc,
+ integer lengthf,
+ octetstring extensionTypesList
+} with { variant "PRESENCE( type_gtpc = '8D'O)";
+ variant (lengthf) "LENGTHTO(extensionTypesList)"; };
+
+//Trigger ID - 7.7.41
+type record GTP_TriggerID {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring triggerID
+} with { variant "PRESENCE( type_gtpc = '8E'O)";
+ variant (lengthf) "LENGTHTO(triggerID)";};
+
+//OMC Identity - 7.7.42
+type record OMCIdentity {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring omcID
+} with { variant "PRESENCE( type_gtpc = '8F'O)";
+ variant (lengthf) "LENGTHTO(omcID)"; };
+
+//BSSGP RAN Information needed for RAN Transparent Container
+//From BSSGP specification 48.018 v9.3.0 according to CR 8446
+
+type union LIN2_2a_GTPC
+{
+integer length1,
+integer length2
+} with {
+ variant (length1) "FIELDLENGTH(7)";
+ variant (length2) "FIELDLENGTH(15)";
+ variant (length2) "BYTEORDER(last)";
+ variant (length1,length2) "FIELDORDER(msb)";
+ }
+
+type record PDU_in_Error_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ octetstring erroneous_BSSGP_PDU
+} with {
+ variant (lengthIndicator) "LENGTHTO (erroneous_BSSGP_PDU)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ };
+
+type record Cell_Identifier_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ HEX1 mccDigit1 ,
+ HEX1 mccDigit2 ,
+ HEX1 mccDigit3 ,
+ HEX1 mncDigit3 ,
+ HEX1 mncDigit1 ,
+ HEX1 mncDigit2 ,
+ OCT2 lac,
+ OCT1 rac,
+ OCT2 cI_value
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO(mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,
+ mncDigit2,lac,rac,cI_value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+type record Cause_BSSGP_GTPC
+ {
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ OCT1 cause_Value
+ } with {
+ variant (lengthIndicator) "LENGTHTO (cause_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//48.018 v9.3.0 11.3.61
+type record RIM_Application_Identity_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ OCT1 rIMApplicationIdentity
+} with {
+ variant (lengthIndicator) "LENGTHTO (rIMApplicationIdentity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//48.018 v9.3.0 11.3.62
+type record RIM_Sequence_Number_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ OCT4 rIMSequenceNumber
+} with {
+ variant (lengthIndicator) "LENGTHTO (rIMSequenceNumber)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//48.018 v9.3.0 Table 11.3.62a.1
+type record RAN_Information_Request_RIM_Container_GTPC
+{
+OCT1 iEI,
+BIT1 ext,
+LIN2_2a_GTPC lengthIndicator,
+RIM_Application_Identity_GTPC rIM_Application_Identity,
+RIM_Sequence_Number_GTPC rIM_Sequence_Number,
+RIM_PDU_Indications_GTPC rIM_PDU_Indications,
+RIM_Protocol_Version_Number_GTPC rIM_Protocol_Version_Number optional,
+RAN_Information_Request_Application_Container_GTPC
+ application_Container optional,
+SON_TransferApplicationIdentity sON_TransferApplicationIdentity optional
+} with {
+ variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+ rIM_Sequence_Number,rIM_PDU_Indications,rIM_Protocol_Version_Number,
+ application_Container,sON_TransferApplicationIdentity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant "TAG (rIM_Protocol_Version_Number, iEI = '55'O)";
+ variant (application_Container) "PRESENCE (rIM_Application_Identity.rIMApplicationIdentity = '01'O;)";
+ variant (application_Container) "PRESENCE (rIM_Application_Identity.rIMApplicationIdentity = '02'O;)";
+ variant (application_Container) "PRESENCE (rIM_Application_Identity.rIMApplicationIdentity = '03'O;)";
+ variant (application_Container) "PRESENCE (rIM_Application_Identity.rIMApplicationIdentity = '04'O;)";
+ variant (application_Container) "PRESENCE (rIM_Application_Identity.rIMApplicationIdentity = '05'O;)";
+ variant (application_Container)
+ "CROSSTAG
+ (nacc,rIM_Application_Identity.rIMApplicationIdentity = '01'O;
+ si3 ,rIM_Application_Identity.rIMApplicationIdentity = '02'O;
+ mBMS,rIM_Application_Identity.rIMApplicationIdentity = '03'O;
+ sON, rIM_Application_Identity.rIMApplicationIdentity = '04'O;
+ uTRA_SI,rIM_Application_Identity.rIMApplicationIdentity = '05'O;
+ )"
+ variant (sON_TransferApplicationIdentity)
+ "PRESENCE
+ (rIM_Application_Identity.rIMApplicationIdentity = '04'O;)";
+};
+
+//48.018 v9.3.0 Table 11.3.62a.2
+type record RAN_Information_RIM_Container_GTPC
+{
+OCT1 iEI,
+BIT1 ext,
+LIN2_2a_GTPC lengthIndicator,
+RIM_Application_Identity_GTPC rIM_Application_Identity,
+RIM_Sequence_Number_GTPC rIM_Sequence_Number,
+RIM_PDU_Indications_GTPC rIM_PDU_Indications,
+RIM_Protocol_Version_Number_GTPC rIM_Protocol_Version_Number optional,
+ApplContainer_or_ApplErrContainer_GTPC
+ applContainer_or_ApplErrContainer optional,
+SON_TransferApplicationIdentity sON_TransferApplicationIdentity optional
+} with {
+ variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+ rIM_Sequence_Number,rIM_PDU_Indications,rIM_Protocol_Version_Number,
+ applContainer_or_ApplErrContainer,sON_TransferApplicationIdentity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant
+ "TAG (rIM_Protocol_Version_Number, iEI = '55'O;)";
+ variant (applContainer_or_ApplErrContainer) "PRESENCE(rIM_Application_Identity.rIMApplicationIdentity = '01'O;)";
+ variant (applContainer_or_ApplErrContainer) "PRESENCE(rIM_Application_Identity.rIMApplicationIdentity = '02'O;)";
+ variant (applContainer_or_ApplErrContainer) "PRESENCE(rIM_Application_Identity.rIMApplicationIdentity = '03'O;)";
+ variant (applContainer_or_ApplErrContainer) "PRESENCE(rIM_Application_Identity.rIMApplicationIdentity = '04'O;)";
+ variant (applContainer_or_ApplErrContainer) "PRESENCE(rIM_Application_Identity.rIMApplicationIdentity = '05'O;)";
+ variant (applContainer_or_ApplErrContainer)
+ "CROSSTAG(nacc,rIM_Application_Identity.rIMApplicationIdentity = '01'O;
+ si3,rIM_Application_Identity.rIMApplicationIdentity = '02'O;
+ mBMS,rIM_Application_Identity.rIMApplicationIdentity = '03'O;
+ sON,rIM_Application_Identity.rIMApplicationIdentity = '04'O;
+ uTRA_SI,rIM_Application_Identity.rIMApplicationIdentity = '05'O)";
+
+
+ variant (sON_TransferApplicationIdentity)
+ "PRESENCE
+ (rIM_Application_Identity.rIMApplicationIdentity = '04'O;)";
+};
+
+type union ApplContainer_or_ApplErrContainer_GTPC
+{
+ ApplContainer_or_ApplErrContainer_NACC_GTPC nacc,
+ ApplContainer_or_ApplErrContainer_SI3_GTPC si3,
+ ApplContainer_or_ApplErrContainer_MBMS_GTPC mBMS,
+ ApplContainer_or_ApplErrContainer_SON_GTPC sON,
+ ApplContainer_or_ApplErrContainer_UTRA_SI_GTPC uTRA_SI
+}
+
+type union ApplContainer_or_ApplErrContainer_NACC_GTPC
+{
+ RAN_Information_Application_Container_NACC_GTPC application_Container,
+ Application_Error_Container_NACC_GTPC application_Error_Container
+} with {
+ variant "TAG (
+ application_Container, iEI = '4E'O;
+ application_Error_Container, iEI = '56'O;)";
+}
+
+type union ApplContainer_or_ApplErrContainer_SI3_GTPC
+{
+ RAN_Information_Application_Container_SI3_GTPC application_Container,
+ Application_Error_Container_SI3_GTPC application_Error_Container
+} with {
+ variant "TAG (
+ application_Container, iEI = '4E'O;
+ application_Error_Container, iEI = '56'O;)";
+}
+
+type union ApplContainer_or_ApplErrContainer_MBMS_GTPC
+{
+ RAN_Information_Application_Container_MBMS_GTPC application_Container,
+ Application_Error_Container_MBMS_GTPC application_Error_Container
+} with {
+ variant "TAG (
+ application_Container, iEI = '4E'O;
+ application_Error_Container, iEI = '56'O;)";
+}
+
+type union ApplContainer_or_ApplErrContainer_SON_GTPC
+{
+ RAN_Information_Application_Container_SON_GTPC application_Container,
+ Application_Error_Container_SON_GTPC application_Error_Container
+} with {
+ variant "TAG (
+ application_Container, iEI = '4E'O;
+ application_Error_Container, iEI = '56'O;)";
+}
+
+type union ApplContainer_or_ApplErrContainer_UTRA_SI_GTPC
+{
+ RAN_Information_Application_Container_UTRA_SI_GTPC application_Container,
+ Application_Error_Container_UTRA_SI_GTPC application_Error_Container
+} with {
+ variant "TAG (
+ application_Container, iEI = '4E'O;
+ application_Error_Container, iEI = '56'O;)";
+}
+
+
+//48.018 v9.3.0 Table 11.3.62a.3
+type record RAN_Information_Ack_RIM_Container_GTPC
+{
+OCT1 iEI,
+BIT1 ext,
+LIN2_2a_GTPC lengthIndicator,
+RIM_Application_Identity_GTPC rIM_Application_Identity,
+RIM_Sequence_Number_GTPC rIM_Sequence_Number,
+RIM_Protocol_Version_Number_GTPC rIM_Protocol_Version_Number optional,
+SON_TransferApplicationIdentity sON_TransferApplicationIdentity optional
+} with {
+ variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+ rIM_Sequence_Number,rIM_Protocol_Version_Number)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+
+ variant "TAG (rIM_Protocol_Version_Number, iEI = '55'O;)";
+ variant (sON_TransferApplicationIdentity)
+ "PRESENCE
+ (rIM_Application_Identity.rIMApplicationIdentity = '04'O;)";
+};
+
+//48.018 v9.3.0 Table 11.3.62a.4
+type record RAN_Information_Error_RIM_Container_GTPC
+{
+OCT1 iEI,
+BIT1 ext,
+LIN2_2a_GTPC lengthIndicator,
+RIM_Application_Identity_GTPC rIM_Application_Identity,
+Cause_BSSGP_GTPC rIM_cause,
+RIM_Protocol_Version_Number_GTPC rIM_Protocol_Version_Number optional,
+PDU_in_Error_GTPC pDU_in_Error,
+SON_TransferApplicationIdentity sON_TransferApplicationIdentity optional
+} with {
+ variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+ rIM_cause,rIM_Protocol_Version_Number,pDU_in_Error)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant "TAG (rIM_Protocol_Version_Number, iEI = '55'O)";
+ variant (sON_TransferApplicationIdentity)
+ "PRESENCE
+ (rIM_Application_Identity.rIMApplicationIdentity = '04'O;)";
+};
+
+//48.018 v9.3.0 Table 11.3.62a.5
+type record RAN_Information_Application_Error_RIM_Container_GTPC
+{
+OCT1 iEI,
+BIT1 ext,
+LIN2_2a_GTPC lengthIndicator,
+RIM_Application_Identity_GTPC rIM_Application_Identity,
+RIM_Sequence_Number_GTPC rIM_Sequence_Number,
+RIM_PDU_Indications_GTPC rIM_PDU_Indications,
+RIM_Protocol_Version_Number_GTPC rIM_Protocol_Version_Number optional,
+Application_Error_Container_GTPC application_Error_Container,
+SON_TransferApplicationIdentity sON_TransferApplicationIdentity optional
+} with {
+ variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+ rIM_Sequence_Number,rIM_PDU_Indications,rIM_Protocol_Version_Number,
+ application_Error_Container)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+
+ variant "TAG (rIM_Protocol_Version_Number, iEI = '55'O)";
+
+ variant (application_Error_Container)
+ "CROSSTAG (nacc,rIM_Application_Identity.rIMApplicationIdentity = '01'O;
+ si3,rIM_Application_Identity.rIMApplicationIdentity = '02'O;
+ mBMS,rIM_Application_Identity.rIMApplicationIdentity = '03'O;
+ sON,rIM_Application_Identity.rIMApplicationIdentity = '04'O;
+ uTRA_SI,rIM_Application_Identity.rIMApplicationIdentity = '05'O)";
+
+ variant (sON_TransferApplicationIdentity)
+ "PRESENCE
+ (rIM_Application_Identity.rIMApplicationIdentity = '04'O;)";
+};
+
+//48.018 v9.3.0 Table 11.3.64
+type union Application_Error_Container_GTPC
+{
+ Application_Error_Container_NACC_GTPC nacc,
+ Application_Error_Container_SI3_GTPC si3,
+ Application_Error_Container_MBMS_GTPC mBMS,
+ Application_Error_Container_SON_GTPC sON,
+ Application_Error_Container_UTRA_SI_GTPC uTRA_SI
+}
+
+//48.018 v9.3.0 Table 11.3.63.1
+type union RAN_Information_Request_Application_Container_GTPC
+{
+ RAN_Information_Request_Application_Container_NACC_GTPC nacc,
+ RAN_Information_Request_Application_Container_SI3_GTPC si3,
+ RAN_Information_Request_Application_Container_MBMS_GTPC mBMS,
+ RAN_Information_Request_Application_Container_SON_GTPC sON,
+ RAN_Information_Request_Application_Container_UTRA_SI_GTPC uTRA_SI
+}
+
+//48.018 v9.3.0 Table 11.3.63.1.1
+type record RAN_Information_Request_Application_Container_NACC_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ Cell_Identifier_GTPC reporting_Cell_Identifier
+} with {
+ variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//48.018 v9.3.0 Table 11.3.63.1.2
+type record RAN_Information_Request_Application_Container_SI3_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ Cell_Identifier_GTPC reporting_Cell_Identifier
+} with {
+ variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//48.018 v9.3.0 Table 11.3.63.1.3
+type record RAN_Information_Request_Application_Container_MBMS_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ Cell_Identifier_GTPC reporting_Cell_Identifier
+} with {
+ variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//48.018 v9.3.0 Table 11.3.63.1.4
+type record RAN_Information_Request_Application_Container_SON_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ Cell_Identifier_GTPC reporting_Cell_Identifier,
+ octetstring sON_TransferRequestContainer // 3GPP TS 36.413
+} with {
+ variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier,sON_TransferRequestContainer)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//48.018 v9.3.0 Table 11.3.63.1.5
+type record RAN_Information_Request_Application_Container_UTRA_SI_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ Cell_Identifier_GTPC reporting_Cell_Identifier
+} with {
+ variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//48.018 v9.3.0 Table 11.3.108
+type record SON_TransferApplicationIdentity
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ octetstring sON_TransferApplicationIdentityValue
+}
+
+//48.018 v9.3.0 Table 11.3.63.2.1
+type record RAN_Information_Application_Container_NACC_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ Cell_Identifier_GTPC reporting_Cell_Identifier,
+ BIT1 typeBit,
+ BIT7 number_of_SI_PSI,
+ octetstring sI_PSI // 3GPP TS 44.018, 44.060
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (reporting_Cell_Identifier,typeBit,number_of_SI_PSI,sI_PSI)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//48.018 v9.3.0 Table 11.3.63.2.2
+type record RAN_Information_Application_Container_SI3_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ Cell_Identifier_GTPC reporting_Cell_Identifier,
+ octetstring sI3 length (21) // 3GPP TS 44.018
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (reporting_Cell_Identifier,sI3)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant (sI3)"FIELDLENGTH(21)" ;
+};
+
+//48.018 v9.3.0 Table 11.3.63.2.3
+type record RAN_Information_Application_Container_MBMS_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ Cell_Identifier_GTPC reporting_Cell_Identifier,
+ octetstring mBMS_ChannelReport
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (reporting_Cell_Identifier,mBMS_ChannelReport)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//48.018 v9.3.0 Table 11.3.63.2.4
+type record RAN_Information_Application_Container_SON_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ Cell_Identifier_GTPC reporting_Cell_Identifier,
+ octetstring sON_TransferResponseContainer // 3GPP TS 36.413
+
+
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (reporting_Cell_Identifier,sON_TransferResponseContainer)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//48.018 v9.3.0 Table 11.3.63.2.5
+type record RAN_Information_Application_Container_UTRA_SI_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ Cell_Identifier_GTPC reporting_Cell_Identifier,
+ octetstring uTRA_SI_Container // 3GPP TS25.331
+
+
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (reporting_Cell_Identifier,uTRA_SI_Container)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+//48.018 v9.3.0 11.3.64.1
+type record Application_Error_Container_NACC_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ OCT1 nACC_cause,
+ Application_Container_IE_NACC_GTPC erroneousApplicationContainer
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (nACC_cause,erroneousApplicationContainer)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+type union Application_Container_IE_NACC_GTPC
+{
+RAN_Information_Request_Application_Container_NACC_GTPC
+ rAN_Information_Request_Application_Container,
+
+RAN_Information_Application_Container_NACC_GTPC
+ rAN_Information_Application_Container
+}
+with {
+ variant "TAG (
+ rAN_Information_Request_Application_Container, iEI = '4D'O;
+ rAN_Information_Application_Container, iEI = '4E'O)";
+}
+
+
+//48.018 v9.3.0 11.3.64.2
+type record Application_Error_Container_SI3_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ OCT1 sI3_cause,
+ Application_Container_IE_SI3_GTPC erroneousApplicationContainer
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (sI3_cause,erroneousApplicationContainer)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+type union Application_Container_IE_SI3_GTPC
+{
+RAN_Information_Request_Application_Container_SI3_GTPC
+ rAN_Information_Request_Application_Container,
+
+RAN_Information_Application_Container_SI3_GTPC
+ rAN_Information_Application_Container
+}
+with {
+ variant "TAG (
+ rAN_Information_Request_Application_Container, iEI = '4D'O;
+ rAN_Information_Application_Container, iEI = '4E'O)";
+}
+
+//48.018 v9.3.0 11.3.64.3
+type record Application_Error_Container_MBMS_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ OCT1 mBMS_cause,
+ Application_Container_IE_MBMS_GTPC erroneousApplicationContainer
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (mBMS_cause,erroneousApplicationContainer)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+type union Application_Container_IE_MBMS_GTPC
+{
+RAN_Information_Request_Application_Container_MBMS_GTPC
+ rAN_Information_Request_Application_Container,
+
+RAN_Information_Application_Container_MBMS_GTPC
+ rAN_Information_Application_Container
+}
+with {
+ variant "TAG (
+ rAN_Information_Request_Application_Container, iEI = '4D'O;
+ rAN_Information_Application_Container, iEI = '4E'O)";
+}
+
+//48.018 v9.3.0 11.3.64.4
+type record Application_Error_Container_SON_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ OCT1 sON_cause,
+ Application_Container_IE_SON_GTPC erroneousApplicationContainer
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (sON_cause,erroneousApplicationContainer)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+type union Application_Container_IE_SON_GTPC
+{
+RAN_Information_Request_Application_Container_SON_GTPC
+ rAN_Information_Request_Application_Container,
+
+RAN_Information_Application_Container_SON_GTPC
+ rAN_Information_Application_Container
+}
+with {
+ variant "TAG (
+ rAN_Information_Request_Application_Container, iEI = '4D'O;
+ rAN_Information_Application_Container, iEI = '4E'O)";
+}
+
+
+//48.018 v9.3.0 11.3.64.5
+type record Application_Error_Container_UTRA_SI_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ OCT1 uTRA_SI_cause,
+ Application_Container_IE_SON_GTPC erroneousApplicationContainer
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (uTRA_SI_cause,erroneousApplicationContainer)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+type union Application_Container_IE_UTRA_SI_GTPC
+{
+RAN_Information_Request_Application_Container_UTRA_SI_GTPC
+ rAN_Information_Request_Application_Container,
+
+RAN_Information_Application_Container_UTRA_SI_GTPC
+ rAN_Information_Application_Container
+}
+with {
+ variant "TAG (
+ rAN_Information_Request_Application_Container, iEI = '4D'O;
+ rAN_Information_Application_Container, iEI = '4E'O)";
+}
+
+
+//48.018 v9.3.0 11.3.65
+type record RIM_PDU_Indications_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ BIT1 ack,
+ BIT3 pDU_Type_Extension,
+ BIT4 reserved
+} with {
+ variant (lengthIndicator) "LENGTHTO (ack,pDU_Type_Extension,reserved)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//48.018 v9.3.0 11.3.67
+type record RIM_Protocol_Version_Number_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ OCT1 rIMProtocolVersionNumber
+} with {
+ variant (lengthIndicator) "LENGTHTO (rIMProtocolVersionNumber)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//48.018 v9.3.0 11.3.70
+type record RIM_Routing_Information_GTPC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a_GTPC lengthIndicator,
+ HEX1 rIMRoutingAddressDiscriminator,
+ HEX1 spare,
+ RIM_Routing_Address_GTPC rIM_Routing_Address
+} with {
+ variant (lengthIndicator)
+ "LENGTHTO (rIMRoutingAddressDiscriminator,spare,rIM_Routing_Address)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+
+ variant (rIM_Routing_Address)
+ "CROSSTAG (cell_Identifier,rIMRoutingAddressDiscriminator = '0'H;
+ rNCID, rIMRoutingAddressDiscriminator = '1'H;
+ eNB_Identifier, rIMRoutingAddressDiscriminator = '2'H;)"
+};
+
+type record Cell_Identifier_V_GTPC
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac,
+ OCT1 rac,
+ OCT2 cI_value
+};
+
+type union RIM_Routing_Address_GTPC
+{
+ Cell_Identifier_V_GTPC cell_Identifier,
+ RNC_ID_BSSGP_GTPC rNCID,
+ ENB_Identifier eNB_Identifier
+ }
+
+type record RNC_ID_BSSGP_GTPC
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lAC,
+ OCT1 rAC,
+ HEX1 spare,
+ integer rNC_ID
+} with {
+ variant (spare,rNC_ID) "FIELDORDER(msb)";
+ variant (rNC_ID) "BYTEORDER(last)";
+ variant (rNC_ID) "FIELDLENGTH(12)";
+}
+
+type record ENB_Identifier
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 tAC,
+ octetstring globalENB_ID
+}
+
+//Note: the following structure is outdated
+/*
+type record GlobalRNC_ID_BSSGP_GTPC
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+
+ integer rNC_ID
+} with {
+ variant (spare,rNC_ID) "FIELDORDER(msb)";
+ variant (rNC_ID) "BYTEORDER(last)";
+ variant (rNC_ID) "FIELDLENGTH(12)";
+}
+*/
+
+//48.018 v9.3.0 10.6.1
+type record PDU_BSSGP_RAN_INFORMATION_REQUEST_GTPC
+{
+ OCT1 bssgpPduType,
+ RIM_Routing_Information_GTPC destination_Cell_Identifier,
+ RIM_Routing_Information_GTPC source_Cell_Identifier,
+ RAN_Information_Request_RIM_Container_GTPC rIM_Container
+};
+
+//48.018 v9.3.0 10.6.2
+type record PDU_BSSGP_RAN_INFORMATION_GTPC
+{
+ OCT1 bssgpPduType,
+ RIM_Routing_Information_GTPC destination_Cell_Identifier,
+ RIM_Routing_Information_GTPC source_Cell_Identifier,
+ RAN_Information_RIM_Container_GTPC rIM_Container
+};
+
+//48.018 v9.3.0 10.6.3
+type record PDU_BSSGP_RAN_INFORMATION_ACK_GTPC
+{
+ OCT1 bssgpPduType,
+ RIM_Routing_Information_GTPC destination_Cell_Identifier,
+ RIM_Routing_Information_GTPC source_Cell_Identifier,
+ RAN_Information_Ack_RIM_Container_GTPC rIM_Container
+};
+
+//48.018 v9.3.0 10.6.4
+type record PDU_BSSGP_RAN_INFORMATION_ERROR_GTPC
+{
+ OCT1 bssgpPduType,
+ RIM_Routing_Information_GTPC destination_Cell_Identifier,
+ RIM_Routing_Information_GTPC source_Cell_Identifier,
+ RAN_Information_Error_RIM_Container_GTPC rIM_Container
+};
+
+//48.018 v9.3.0 10.6.5
+type record PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR_GTPC
+{
+ OCT1 bssgpPduType,
+ RIM_Routing_Information_GTPC destination_Cell_Identifier,
+ RIM_Routing_Information_GTPC source_Cell_Identifier,
+ RAN_Information_Application_Error_RIM_Container_GTPC rIM_Container
+};
+
+type union RANTransparentContainerField
+{
+PDU_BSSGP_RAN_INFORMATION_REQUEST_GTPC pDU_BSSGP_RAN_INFORMATION_REQUEST,
+PDU_BSSGP_RAN_INFORMATION_GTPC pDU_BSSGP_RAN_INFORMATION,
+PDU_BSSGP_RAN_INFORMATION_ACK_GTPC pDU_BSSGP_RAN_INFORMATION_ACK,
+PDU_BSSGP_RAN_INFORMATION_ERROR_GTPC pDU_BSSGP_RAN_INFORMATION_ERROR,
+PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR_GTPC
+ pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR
+} with { variant "TAG (
+ pDU_BSSGP_RAN_INFORMATION_REQUEST, bssgpPduType ='71'O;
+ pDU_BSSGP_RAN_INFORMATION, bssgpPduType ='70'O;
+ pDU_BSSGP_RAN_INFORMATION_ACK, bssgpPduType ='72'O;
+ pDU_BSSGP_RAN_INFORMATION_ERROR, bssgpPduType ='73'O;
+ pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR, bssgpPduType ='74'O
+ )"
+};
+
+//RAN Transparent Container 7.7.43
+type record RANTransparentContainer{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ RANTransparentContainerField rANTransparentContainerField
+} with { variant "PRESENCE( type_gtpc = '90'O)";
+ variant (lengthf) "LENGTHTO(rANTransparentContainerField)"; };
+
+//Charging Gateway Address - 7.7.44
+type record ChargingGatewayAddress {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ iPv4_iPv6_Address ipv_address
+} with { variant "PRESENCE( type_gtpc = 'FB'O)";
+ variant (lengthf) "LENGTHTO(ipv_address)";};
+
+type union iPv4_iPv6_Address{
+ OCT4 iPv4_Address,
+ OCT16 iPv6_Address
+}
+
+//PDP Context Priorization - 7.7.45
+type record PDPContextPriorization {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf
+} with { variant "PRESENCE( type_gtpc = '91'O)";};
+
+//Addititonal RAB Setup Information - 7.7.45A
+
+type record of AdditionalRABSetupInformation AdditionalRABSetupInformation_List
+
+type record AdditionalRABSetupInformation {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT4 nsapi,
+ BIT4 unused,
+ OCT4 teidData optional,
+ octetstring rncIpAddress optional
+} with {variant "PRESENCE( type_gtpc = '92'O)";
+ variant (lengthf) "LENGTHTO(nsapi,unused,teidData,rncIpAddress)"; };
+
+//Private Extension - 7.7.46
+type record of PrivateExtension_gtpc PrivateExtension_gtpc_List;
+
+type record PrivateExtension_gtpc {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT2 extensionID,
+ octetstring extensionValue
+} with {variant "PRESENCE( type_gtpc = 'FF'O)";
+ variant (lengthf) "LENGTHTO(extensionID, extensionValue)"; };
+
+//SGSN Number - 7.7.47
+type record SGSN_Number {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring sGSN_NumberValue
+} with { variant "PRESENCE( type_gtpc = '93'O)";
+ variant (lengthf) "LENGTHTO(sGSN_NumberValue)"; };
+
+//Common Flags - 7.7.48
+type record CommonFlags {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 prohibitPayloadCompression,
+ BIT1 mBMS_ServiceType,
+ BIT1 rAN_ProceduresReady,
+ BIT1 mBMS_CountingInformation,
+ BIT1 nO_QoS_Negotiation,
+ BIT1 nRSN,
+ BIT1 upgradeQoS_Supported,
+ BIT1 dualAddressBearerFlag
+} with { variant "PRESENCE( type_gtpc = '94'O)";
+ variant (lengthf) "LENGTHTO(prohibitPayloadCompression,mBMS_ServiceType,
+ rAN_ProceduresReady,mBMS_CountingInformation,
+ nO_QoS_Negotiation,nRSN,upgradeQoS_Supported,dualAddressBearerFlag)"; };
+
+//APN Restriction - 7.7.49
+type record APN_Restriction {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 restrictionTypeValue
+} with { variant "PRESENCE( type_gtpc = '95'O)";
+ variant (lengthf) "LENGTHTO(restrictionTypeValue)"; };
+
+// RAT Type - 7.7.50
+type record RATType {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 ratTypeValue
+} with { variant "PRESENCE( type_gtpc = '97'O)";
+ variant (lengthf) "LENGTHTO(ratTypeValue)"; };
+
+// User Location Information - 7.7.51
+type record UserLocationInformation {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 geographicLocationType,
+ GeographicLocation_gtpc geographicLocation
+} with { variant "PRESENCE( type_gtpc = '98'O)";
+ variant (lengthf) "LENGTHTO(geographicLocationType, geographicLocation)";
+ variant (geographicLocation) "CROSSTAG(geographicLocationCGI, geographicLocationType='00'O;
+ geographicLocationSAI, geographicLocationType='01'O;
+ geographicLocationRAI, geographicLocationType='02'O)";};
+
+type union GeographicLocation_gtpc {
+ GeographicLocationCGI geographicLocationCGI,
+ GeographicLocationSAI geographicLocationSAI,
+ GeographicLocationRAI geographicLocationRAI
+}
+
+// Figure 7.7.51.2: Geographic Location field for CGI
+type record GeographicLocationCGI {
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac,
+ OCT2 cI_value
+}
+
+// Figure 7.7.51.3: Geographic Location field for SAI
+type record GeographicLocationSAI {
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac,
+ OCT2 sac
+}
+
+// Figure 7.7.51.4: Geographic Location field for RAI
+type record GeographicLocationRAI {
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac,
+ OCT2 rac
+}
+
+// MS Time Zone - 7.7.52
+type record MS_TimeZone {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 timeZone,
+ BIT2 daylightSavingTime,
+ BIT3 spare1,
+// This bit is proprietary, compared to the 3GPP definition of
+// the Time Zone information element.
+// The new field "SGSN Attempts to Update MS" is described in
+// the following CPI documentation: GSN CDR Format,
+// 1/190 83-AXB 250 05/6 Uen A.
+// Web link to CPI: http://cpi2.al.sw.ericsson.se/alex?pr=PDU+PCN
+ BIT1 sgsnAttempsToUpdateMS,
+ BIT2 spare2
+} with { variant "PRESENCE( type_gtpc = '99'O)";
+ variant (lengthf) "LENGTHTO(timeZone, daylightSavingTime, spare1,
+ sgsnAttempsToUpdateMS, spare2)"; };
+
+// IMEISV - 7.7.53
+type record IMEISV_gtpc {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT8 imeisv
+} with { variant "PRESENCE( type_gtpc = '9A'O)";
+ variant (lengthf) "LENGTHTO(imeisv)"; };
+
+// Camel Charging Information Container - 7.7.54
+type record CamelChargingInformationContainer {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring camelInformationPDP_IE
+} with { variant "PRESENCE( type_gtpc = '9B'O)";
+ variant (lengthf) "LENGTHTO(camelInformationPDP_IE)"; };
+
+// MBMS UE Context Container - 7.7.55
+type record of MBMS_UE_ContextContainer MBMS_UE_Context_List;
+
+type record MBMS_UE_ContextContainer {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT4 spare1,
+ BIT4 linkedNSAPI,
+ OCT4 uteidControlPlane,
+ OCT1 enhancedNSAPI,
+ BIT4 pdp_typeorg,
+ BIT4 spare2,
+ OCT1 pdp_typenum,
+ integer pdp_addressLength,
+ octetstring pdp_address length (0..63),
+ integer ggsn_addressControlPlaneLength,
+ octetstring ggsn_addressControlPlane length (4..16),
+ integer apnLength,
+ octetstring apn,
+ BIT4 transactionId,
+ BIT4 spare3,
+ OCT1 transactionID
+} with {variant "PRESENCE( type_gtpc = '9C'O)";
+ variant (lengthf) "LENGTHTO(spare1, linkedNSAPI,
+ uteidControlPlane, enhancedNSAPI, pdp_typeorg, spare2,
+ pdp_typenum, pdp_addressLength, pdp_address,
+ ggsn_addressControlPlaneLength, ggsn_addressControlPlane,
+ apnLength, apn, transactionId, spare3, transactionID)";
+ variant (pdp_addressLength) "LENGTHTO(pdp_address)";
+ variant (ggsn_addressControlPlaneLength)
+ "LENGTHTO(ggsn_addressControlPlane)";
+ variant (apnLength) "LENGTHTO(apn)";
+ };
+
+// Temporary Mobile Group Identity - 7.7.56
+type record TMGI_gtpc {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT6 tMGIValue
+} with { variant "PRESENCE( type_gtpc = '9D'O)";
+ variant (lengthf) "LENGTHTO(tMGIValue)"; };
+
+// RIM Routing Address - 7.7.57
+type record RIM_RoutingAddress {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring rIM_RoutingAddressValue
+ //Left as octetstring because GTP spec does not include the RIM Routing
+ // Address Discriminator and therefore decoding is not possible as in 48.018
+ //CR 544 states that "The RIM Routing Address contains the destination RNC
+ // Identity from the RAN INFORMATION message when the source is GERAN and
+ // the target is UTRAN.
+ //The RIM Routing Address contains the destination Cell Identifier from the
+ // RAN INFORMATION message when the source is GERAN and the target ir GERAN.
+} with { variant "PRESENCE( type_gtpc = '9E'O)";
+ variant (lengthf) "LENGTHTO(rIM_RoutingAddressValue)"; };
+
+//MBMS Protocol Configuration Options - 7.7.58
+type record MBMS_ProtocolConfigurationOptions {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring mBMS_ProtocolConfigurationOptions
+} with { variant "PRESENCE( type_gtpc = '9F'O)";
+ variant (lengthf) "LENGTHTO(mBMS_ProtocolConfigurationOptions)"; };
+
+// MBMS Session Duration - 7.7.59
+type record MBMS_SessionDuration {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT3 mBMS_SessionDurationValue
+} with { variant "PRESENCE( type_gtpc = 'A8'O)";
+ variant (lengthf) "LENGTHTO(mBMS_SessionDurationValue)"; };
+
+
+// MBMS Service Area - 7.7.60
+type record MBMS_ServiceArea {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring mBMS_ServiceAreaValue
+} with { variant "PRESENCE( type_gtpc = 'A0'O)";
+ variant (lengthf) "LENGTHTO(mBMS_ServiceAreaValue)"; };
+
+// Source RNC PDCP context info - 7.7.61
+type record SourceRNC_PDCP_ContextInfo {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring rRC_Container
+} with { variant "PRESENCE( type_gtpc = 'A1'O)";
+ variant (lengthf) "LENGTHTO(rRC_Container)"; };
+
+// Additional Trace Info - 7.7.62
+type record AdditionalTraceInfo {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT3 traceReference2,
+ OCT2 traceRecordingSessionReference,
+ OCT1 triggeringEvents_GGSN,
+ OCT1 traceDepth,
+ OCT1 listOfInterfaces_GGSN,
+ OCT1 traceActivityControl
+} with { variant "PRESENCE( type_gtpc = 'A2'O)";
+ variant (lengthf) "LENGTHTO(traceReference2,
+ traceRecordingSessionReference, triggeringEvents_GGSN,
+ traceDepth, listOfInterfaces_GGSN, traceActivityControl)";
+ };
+
+// Hop Counter - 7.7.63
+type record HopCounter_gtpc {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ integer hopCounter
+} with { variant "PRESENCE( type_gtpc = 'A3'O)";
+ variant (lengthf) "LENGTHTO(hopCounter)"; };
+
+// Selected PLMN ID - 7.7.64
+type record Selected_PLMN_ID {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT3 selected_PLMN_Identity
+} with { variant "PRESENCE( type_gtpc = 'A4'O)";
+ variant (lengthf) "LENGTHTO(selected_PLMN_Identity)"; };
+
+// MBMS Session Identifier - 7.7.65
+type record MBMS_SessionIdentifier {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 mBMS_SessionIdentifier
+} with { variant "PRESENCE( type_gtpc = 'A5'O)";
+ variant (lengthf) "LENGTHTO(mBMS_SessionIdentifier)"; };
+
+// MBMS 2G/3G Indicator - 7.7.66
+type record MBMS_2G_3G_Indicator {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 mBMS_2G_3G_Indicator
+} with { variant "PRESENCE( type_gtpc = 'A6'O)";
+ variant (lengthf) "LENGTHTO(mBMS_2G_3G_Indicator)"; };
+
+// Enhanced NSAPI - 7.7.67
+type record Enhanced_NSAPI {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 enhanced_NSAPI
+} with { variant "PRESENCE( type_gtpc = 'A7'O)";
+ variant (lengthf) "LENGTHTO(enhanced_NSAPI)"; };
+
+// Additional MBMS Trace Info - 7.7.68
+type record AdditionalMBMSTraceInfo {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT3 traceReference2,
+ OCT2 traceRecordingSessionReference,
+ OCT2 triggeringEvents_BM_SC,
+ OCT1 traceDepth_BM_SC,
+ OCT1 listOfInterfaces_BM_SC,
+ OCT1 traceActivityControl_BM_SC
+} with { variant "PRESENCE( type_gtpc = 'A9'O)";
+ variant (lengthf) "LENGTHTO(traceReference2, traceRecordingSessionReference,
+ triggeringEvents_BM_SC, traceDepth_BM_SC,
+ listOfInterfaces_BM_SC, traceActivityControl_BM_SC)";
+ };
+
+// MBMS Session Repetition Number - 7.7.69
+type record MBMS_SessionRepetitionNumber {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 mBMS_SessionRepetitionNumber
+} with { variant "PRESENCE( type_gtpc = 'AA'O)";
+ variant (lengthf) "LENGTHTO(mBMS_SessionRepetitionNumber)"; };
+
+// MBMS Time To Data Transfer - 7.7.70
+type record MBMS_TimeToDataTransfer {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 mBMS_TimeToDataTransfer
+} with { variant "PRESENCE( type_gtpc = 'AB'O)";
+ variant (lengthf) "LENGTHTO(mBMS_TimeToDataTransfer)"; };
+
+// BSS Container - 7.7.72
+type record BSS_Container {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring bSS_Container // TODO FIXME: which Container is the BSS Container?
+} with { variant "PRESENCE( type_gtpc = 'AD'O)";
+ variant (lengthf) "LENGTHTO(bSS_Container)"; };
+
+
+// Cell Identification - 7.7.73
+
+// Routing Area identification - from 24.008 10.5.5.15
+type record RoutingAreaIdentificationV_gtpc
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac,
+ OCT1 rac
+};
+
+type record RNC_Identifier_gtpc {
+ RoutingAreaIdentificationV_gtpc routingAreaIdentificationV_gtpc,
+ integer rNC_ID,
+ HEX1 spare
+} with {
+ variant (spare,rNC_ID) "FIELDORDER(msb)";
+ variant (rNC_ID) "BYTEORDER(last)";
+ variant (rNC_ID) "FIELDLENGTH(12)";
+}
+
+type union Cell_ID_or_RNC_ID {
+ Cell_Identifier_V_GTPC cell_Identifier,
+ RNC_Identifier_gtpc rNC_Identifier
+}
+
+type record Cell_Identification_gtpc {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ Cell_Identifier_V_GTPC targetCell_ID,
+ OCT1 sourceType, //0 - Source Cell ID / 1- Source RNC ID in next field
+ Cell_ID_or_RNC_ID source_Cell_ID_or_RNC_ID
+} with {variant "PRESENCE( type_gtpc = 'AE'O)";
+ variant (lengthf) "LENGTHTO(targetCell_ID,sourceType,source_Cell_ID_or_RNC_ID)";
+ variant (source_Cell_ID_or_RNC_ID) "CROSSTAG ( cell_Identifier, sourceType = '00'O;
+ rNC_Identifier, sourceType = '01'O)"; };
+
+// PDU Numbers - 7.7.74
+type record of PDU_Numbers PDU_Numbers_List;
+
+type record PDU_Numbers {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT4 nsapi,
+ BIT4 spare,
+ OCT2 dL_GTPU_SequenceNumber,
+ OCT2 uL_GTPU_SequenceNumber,
+ OCT2 sendNPDUnum,
+ OCT2 receiveNPDUnum
+} with {variant "PRESENCE( type_gtpc = 'AF'O)";
+ variant (lengthf) "LENGTHTO(nsapi, spare, dL_GTPU_SequenceNumber, uL_GTPU_SequenceNumber,
+ sendNPDUnum, receiveNPDUnum)"; };
+
+// BSSGP Cause - 7.7.75
+type record BSSGP_Cause_gtpc {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 bSSGP_Cause
+} with { variant "PRESENCE( type_gtpc = 'B0'O)";
+ variant (lengthf) "LENGTHTO(bSSGP_Cause)"; };
+
+// Required MBMS Bearer Capabilities - 7.7.76
+type record RequiredMBMS_BearerCapabilities {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring reqMBMS_BearerCapValue
+} with { variant "PRESENCE( type_gtpc = 'B1'O)";
+ variant (lengthf) "LENGTHTO(reqMBMS_BearerCapValue)"; };
+
+// RIM Routing Address Discriminator 7.7.77
+type record RIM_RoutingAddress_Discriminator {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT4 rra_discriminator,
+ BIT4 spare
+} with { variant "PRESENCE( type_gtpc = 'B2'O)";
+ variant (lengthf) "LENGTHTO(rra_discriminator,spare)"; };
+
+// ListOfSetupPFCs - 7.7.78
+
+// PFC/PFI as defined in BSSGP (48.018 - 11.3.83) which refers to L3 (24.008 - 10.5.6.11)
+type record Single_PFI_gtpc
+{
+ BIT7 pFI_Value,
+ BIT1 spare
+}
+
+type record length (0..11) of Single_PFI_gtpc Multiple_PFIs_gtpc;
+
+type record ListOfSetupPFCsValue_gtpc
+{
+ integer number_of_PFCs (0..11), // note: 12 .. 255 are reserved!!!
+ Multiple_PFIs_gtpc pFIs
+} with
+{
+ variant (number_of_PFCs) "UNIT(elements),LENGTHTO(pFIs),FIELDLENGTH(8)";
+}
+
+type record ListOfSetupPFCs_gtpc {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ ListOfSetupPFCsValue_gtpc listOfSetupPFCs
+} with { variant "PRESENCE( type_gtpc = 'B3'O)";
+ variant (lengthf) "LENGTHTO(listOfSetupPFCs)"; };
+
+// PS Handover XID Parameters 7.7.79
+type record of PS_HandoverXIDParameters PS_HandoverXIDParameters_List;
+
+type record PS_HandoverXIDParameters {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT4 sapi,
+ BIT4 spare,
+ LIN1 xID_ParametersLength,
+ XID_Information_GTPC xID_Parameters optional
+} with {
+ variant (lengthf) "LENGTHTO(sapi,spare,xID_ParametersLength,xID_Parameters)";
+ variant (xID_ParametersLength) "LENGTHTO(xID_Parameters)";
+ variant "PRESENCE(type_gtpc = 'B4'O)"
+ };
+
+//The following types are based on types in LLC_Types.ttcn
+
+type record of XID_GTPC XID_Information_GTPC;
+
+type record XID_GTPC
+{
+ BIT1 xl,
+ BIT5 typefield,
+ XID_length_GTPC xID_length,
+ //Header_XID header_XID,
+ XID_Data_GTPC xID_Data
+} with {
+ variant (xID_Data) "CROSSTAG( version, typefield = '00000'B;
+ iOV_UI, typefield = '00001'B;
+ iOV_I, typefield = '00010'B;
+ t200, typefield = '00011'B;
+ n200, typefield = '00100'B;
+ n201_U, typefield = '00101'B;
+ n201_I, typefield = '00110'B;
+ mD, typefield = '00111'B;
+ mU, typefield = '01000'B;
+ kD, typefield = '01001'B;
+ kU, typefield = '01010'B;
+ l3param, typefield = '01011'B;
+ reset, typefield = '01100'B;
+
+ )";
+ variant "FIELDORDER(msb)";
+ variant (xID_length) "CROSSTAG( short_len, xl = '0'B;
+ long_len, xl = '1'B;)";
+ variant (xID_length) "LENGTHTO (xID_Data)"
+
+ variant (xID_length) "PADDING(yes)"
+};
+
+type union XID_length_GTPC
+{
+ integer short_len,
+ integer long_len
+}with {
+ variant (short_len) "FIELDLENGTH(2)";
+ variant (long_len) "FIELDLENGTH(8)";
+ variant (long_len) "BYTEORDER(last)";
+ variant (short_len) "FIELDORDER(msb)";
+ variant (long_len) "FIELDORDER(msb)";
+
+}
+
+type union XID_Data_GTPC
+{
+ Version_GTPC version,
+ IOV_UI_GTPC iOV_UI,
+ IOV_I_GTPC iOV_I,
+ T200_GTPC t200,
+ N200_GTPC n200,
+ N201_U_GTPC n201_U,
+ N201_I_GTPC n201_I,
+ MD_GTPC mD,
+ MU_GTPC mU,
+ KD_GTPC kD,
+ KU_GTPC kU,
+ L3param_GTPC l3param,
+ Reset_LLC_GTPC reset
+}
+
+type record Version_GTPC
+{
+ integer version_value (0..15),
+ BIT4 spare
+
+} with {
+ variant (version_value) "FIELDLENGTH(4)";
+}
+
+type octetstring IOV_UI_GTPC length(4)
+
+
+type octetstring IOV_I_GTPC length(4)
+
+
+type record T200_GTPC
+{
+ BIT4 spare,
+ integer t200Value
+} with {
+ variant (t200Value) "FIELDLENGTH(12)";
+ variant (t200Value) "BYTEORDER(last)";
+ variant "FIELDORDER(msb)";
+};
+
+
+type record N200_GTPC
+{
+ integer retransmissions (0..15),
+ BIT4 spare
+} with {
+ variant (retransmissions) "FIELDLENGTH(4)";
+}
+
+
+type record N201_U_GTPC
+{
+ BIT5 spare,
+ integer n201UValue
+} with {
+ variant (n201UValue) "FIELDLENGTH(11)";
+ variant (n201UValue) "BYTEORDER(last)";
+ variant "FIELDORDER(msb)";
+};
+
+
+type record N201_I_GTPC
+{
+ BIT5 spare,
+ integer n201IValue
+}
+with {
+ variant (n201IValue) "FIELDLENGTH(11)";
+ variant (n201IValue) "BYTEORDER(last)";
+ variant "FIELDORDER(msb)";
+};
+
+type record MD_GTPC
+{
+ BIT1 spare,
+ integer mDValue
+} with {
+ variant (mDValue) "FIELDLENGTH(15)";
+ variant (mDValue) "BYTEORDER(last)";
+ variant "FIELDORDER(msb)";
+};
+
+
+type record MU_GTPC
+{
+ BIT1 spare,
+ integer mUValue
+} with {
+ variant (mUValue) "FIELDLENGTH(15)";
+ variant (mUValue) "BYTEORDER(last)";
+ variant "FIELDORDER(msb)";
+};
+
+type integer KD_GTPC with {variant "FIELDLENGTH(8)";};
+
+type integer KU_GTPC with {variant "FIELDLENGTH(8)";};
+
+type octetstring L3param_GTPC;
+
+type octetstring Reset_LLC_GTPC length(0);
+// end of types copied from LLC_Types.ttcn
+
+
+// MS Info Change reporting Action 7.7.80
+type record MS_InfoChangeReportingAction {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 actionfield
+} with { variant "PRESENCE( type_gtpc = 'B5'O)";
+ variant (lengthf) "LENGTHTO(actionfield)"; };
+
+// Direct Tunnel Flags - 7.7.81
+type record DirectTunnelFlags {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 dTI,
+ BIT1 gCSI,
+ BIT1 eI,
+ BIT5 spare
+} with { variant "PRESENCE( type_gtpc = 'B6'O)";
+ variant (lengthf) "LENGTHTO(dTI,gCSI,eI,spare)";};
+
+// Correlation ID - 7.7.82
+type record CorrelationID {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 correlationIDValue
+} with { variant "PRESENCE( type_gtpc = 'B7'O)";
+ variant (lengthf) "LENGTHTO(correlationIDValue)"; };
+
+// BearerControlMode - 7.7.83
+type record BearerControlMode {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 bearerControlModeValue
+} with { variant "PRESENCE( type_gtpc = 'B8'O)";
+ variant (lengthf) "LENGTHTO(bearerControlModeValue)"; };
+
+// MBMS Flow ID - 7.7.84
+type record MBMS_FlowID {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring mBMS_FlowIDValue
+} with { variant "PRESENCE( type_gtpc = 'B9'O)";
+ variant (lengthf) "LENGTHTO(mBMS_FlowIDValue)"; };
+
+// MBMS IP Multicast Distribution - 7.7.85
+type record MBMS_IPMulticastDistribution {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT4 commonTEID,
+ GSNAddress iPmulticastDistributionAddress,
+ GSNAddress iPmulticastSourceAddress,
+ OCT1 mBMS_HCIndicator
+} with { variant "PRESENCE( type_gtpc = 'BA'O)";
+ variant (lengthf) "LENGTHTO(commonTEID,iPmulticastDistributionAddress,
+ iPmulticastSourceAddress,mBMS_HCIndicator)"; };
+
+// GSNAddress
+type record GSNAddress {
+ INT6b lengthf,
+ BIT2 address_type,
+ iPv4_iPv6_Address ipv_address
+} with { variant (lengthf) "LENGTHTO(ipv_address)";};
+
+// MBMS Distribution Acknowledgement - 7.7.86
+type record MBMS_DistributionAcknowledgement {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT2 distributionIndication,
+ BIT6 spare
+} with { variant "PRESENCE( type_gtpc = 'BB'O)";
+ variant (lengthf) "LENGTHTO(distributionIndication,spare)"; };
+
+// ReliableInterRATHandoverInfo - 7.7.87 - from 48.018 11.3.107
+type record ReliableInterRATHandoverInfo
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 reliableInterRATHandoverInfoIndicator,
+ BIT7 spare
+} with { variant "PRESENCE( type_gtpc = 'BC'O)";
+ variant (lengthf) "LENGTHTO(reliableInterRATHandoverInfoIndicator,spare)"; };
+
+//7.7.88
+type record RFSP_Index
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ LIN2_BO_LAST rFSPIndexValue (1..256)
+} with { variant "PRESENCE( type_gtpc = 'BD'O)";
+ variant (lengthf) "LENGTHTO(rFSPIndexValue)"; };
+
+//7.7.90
+type record of FullyQualifiedDomainName FullyQualifiedDomainName_List;
+
+type record FullyQualifiedDomainName
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring fQDN_Value
+} with { variant "PRESENCE( type_gtpc = 'BE'O)";
+ variant (lengthf) "LENGTHTO(fQDN_Value)"; };
+
+//7.7.91
+type record EvolvedAllocationRetentionPriorityI
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 pVI,
+ BIT1 spare1,
+ integer pL,
+ BIT1 pCI,
+ BIT1 spare2
+} with { variant "PRESENCE( type_gtpc = 'BF'O)";
+ variant (lengthf) "LENGTHTO(pVI,spare1,pL,pCI,spare2)";
+ variant (pL) "FIELDLENGTH(4)";};
+
+//7.7.92
+type record of EvolvedAllocationRetentionPriorityII EvolvedAllocationRetentionPriorityII_List
+
+type record EvolvedAllocationRetentionPriorityII
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT4 nsapi,
+ BIT4 unused,
+ BIT1 pVI,
+ BIT1 spare1,
+ integer pL,
+ BIT1 pCI,
+ BIT1 spare2
+} with { variant "PRESENCE( type_gtpc = 'C0'O)";
+ variant (lengthf) "LENGTHTO(nsapi,unused,pVI,spare1,pL,pCI,spare2)";
+ variant (pL) "FIELDLENGTH(4)";};
+
+//7.7.93
+type record ExtendedCommonFlags
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 unauthenticatedIMSI,
+ BIT1 cCRSI,
+ BIT1 cPSR,
+ BIT1 retLoc,
+ BIT1 vB,
+ BIT1 pCRI,
+ BIT1 bDWI,
+ BIT1 uASI
+} with { variant "PRESENCE(type_gtpc = 'C1'O)";
+ variant (lengthf) "LENGTHTO(unauthenticatedIMSI,cCRSI,cPSR,retLoc,vB,pCRI,bDWI,uASI)";};
+
+//7.7.94
+type record UserCSGInformation
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ BIT5 spare1,
+ bitstring cSG_ID length(27), // "The coding ... is the responsibility of the operator..."
+ BIT1 cMI,
+ BIT5 spare2,
+ integer accessMode (0..3)
+} with { variant "PRESENCE( type_gtpc = 'C2'O)";
+ variant (lengthf) "LENGTHTO(mccDigit1,mccDigit2,mccDigit3,mncDigit3,
+ mncDigit1,mncDigit2,spare1,cSG_ID,
+ cMI,spare2,accessMode)";
+ variant (spare1,cSG_ID) "FIELDORDER(msb)";
+ variant (cSG_ID) "FIELDLENGTH(27)";
+ variant (accessMode) "FIELDLENGTH(2)";
+};
+
+//7.7.95
+type record CSGInfoReportingAction
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 uCCSG,
+ BIT1 uCSHC,
+ BIT1 uCUHC,
+ BIT5 spare
+} with { variant "PRESENCE( type_gtpc = 'C3'O)";
+ variant (lengthf) "LENGTHTO(uCCSG,uCSHC,uCUHC,spare)";
+};
+
+//7.7.96
+type record CSG_Id
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT5 spare,
+ bitstring cSG_ID length(27) // "The coding ... is the responsibility of the operator..."
+} with { variant "PRESENCE(type_gtpc = 'C4'O)";
+ variant (lengthf) "LENGTHTO(spare,cSG_ID)";
+ variant (spare,cSG_ID) "FIELDORDER(msb)";
+ variant (cSG_ID) "FIELDLENGTH(27)";
+};
+
+//7.7.97
+type record CSG_MembershipIndication
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 cMI_Value,
+ BIT7 spare
+} with { variant "PRESENCE(type_gtpc = 'C5'O)";
+ variant (lengthf) "LENGTHTO(cMI_Value,spare)";
+}
+
+//7.7.98
+type record APN_AMBR
+{
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ LIN4_BO_LAST aPN_AMBR_Uplink,
+ LIN4_BO_LAST aPN_AMBR_Downlink
+} with { variant "PRESENCE(type_gtpc = 'C6'O)";
+ variant (lengthf) "LENGTHTO(aPN_AMBR_Uplink,aPN_AMBR_Downlink)";
+}
+
+//7.7.99
+type record UE_Network_Capability {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring ue_network_capability
+} with {
+ variant "PRESENCE(type_gtpc = 'C7'O)";
+ variant (lengthf) "LENGTHTO(ue_network_capability)";
+}
+
+//7.7.100
+type record UE_AMBR {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ LIN4_BO_LAST subscribed_ue_ambr_uplink,
+ LIN4_BO_LAST subscribed_ue_ambr_downlink,
+ LIN4_BO_LAST authorized_ue_ambr_uplink optional,
+ LIN4_BO_LAST authorized_ue_ambr_downlink optional
+} with {
+ variant "PRESENCE(type_gtpc = 'C8'O)";
+ variant (lengthf) "LENGTHTO(subscribed_ue_ambr_uplink,subscribed_ue_ambr_downlink,authorized_ue_ambr_uplink,authorized_ue_ambr_downlink)";
+}
+
+//7.7.101
+type record APN_AMBR_NSAPI {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf (9),
+ HEX1 nsapi,
+ HEX1 spare,
+ LIN4_BO_LAST authorized_apn_ambr_uplink,
+ LIN4_BO_LAST authorized_apn_ambr_downlink
+} with {
+ variant "PRESENCE(type_gtpc = 'C9'O)";
+ variant (lengthf) "LENGTHTO(spare, nsapi,authorized_apn_ambr_uplink,authorized_apn_ambr_downlink)";
+}
+
+//7.7.102
+type record GGSN_BackOffTime {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT5 timerValue,
+ BIT3 timerUnit,
+ octetstring explicitly_specified optional
+} with {
+ variant "PRESENCE(type_gtpc = 'CA'O)";
+ variant (lengthf) "LENGTHTO(timerValue, timerUnit, explicitly_specified)";
+}
+
+//7.7.103
+type record SignallingPriorityIndication {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 lapi,
+ BIT7 spare,
+ octetstring explicitly_specified optional
+} with {
+ variant "PRESENCE(type_gtpc = 'CB'O)";
+ variant (lengthf) "LENGTHTO(lapi, spare, explicitly_specified)";
+}
+
+//7.7.104
+type record SignallingPriorityIndication_NSAPI {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 nsapi,
+ BIT7 spare1,
+ BIT1 lapi,
+ BIT7 spare2,
+ octetstring explicitly_specified optional
+} with {
+ variant "PRESENCE(type_gtpc = 'CC'O)";
+ variant (lengthf) "LENGTHTO(nsapi, spare1, lapi, spare2, explicitly_specified)";
+}
+
+//7.7.105
+type record Higher_Bitrates_Than_16Mbps_Flag {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf (1),
+ LIN1 flag
+} with {
+ variant "PRESENCE(type_gtpc = 'CD'O)";
+ variant (lengthf) "LENGTHTO(flag)";
+}
+
+//7.7.106
+// (void)
+
+//7.7.107
+type record SRVCC_MM_Context {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ LIN1 mobile_station_classmark2_len,
+ octetstring mobile_station_classmark2,
+ LIN1 mobile_station_classmark3_len,
+ octetstring mobile_station_classmark3,
+ LIN1 supported_codec_list_len,
+ octetstring supported_codec_list,
+ octetstring explicitly_specified optional
+} with {
+ variant "PRESENCE(type_gtpc = 'CF'O)";
+ variant (lengthf) "LENGTHTO(mobile_station_classmark2_len, mobile_station_classmark2,
+ mobile_station_classmark3_len, mobile_station_classmark3,
+ supported_codec_list_len, supported_codec_list,
+ explicitly_specified)";
+ variant (mobile_station_classmark2_len) "LENGTHTO(mobile_station_classmark2)";
+ variant (mobile_station_classmark3_len) "LENGTHTO(mobile_station_classmark3)";
+ variant (supported_codec_list_len) "LENGTHTO(supported_codec_list)";
+}
+
+
+//7.7.108
+type record SRVCC_Flags {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 ics,
+ BIT7 spare,
+ octetstring explicitly_specified optional
+} with {
+ variant "PRESENCE(type_gtpc = 'D0'O)";
+ variant (lengthf) "LENGTHTO(ics, spare, explicitly_specified)";
+}
+
+//7.7.109
+type record STN_SR {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 nanpi,
+ Digits digits
+} with {
+ variant "PRESENCE(type_gtpc = 'D1'O)";
+ variant (lengthf) "LENGTHTO(nanpi, digits)";
+}
+
+type record of HEX1 Digits;
+
+//7.7.110
+type record C_MSISDN {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring msisdn
+} with {
+ variant "PRESENCE(type_gtpc = 'D2'O)";
+ variant (lengthf) "LENGTHTO(msisdn)";
+}
+
+//7.7.111
+type record Extended_RANAP_Cause {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ integer extended_ranap_cause (1..512),
+ octetstring explicitly_specified optional
+} with {
+ variant "PRESENCE(type_gtpc = 'D3'O)";
+ variant (lengthf) "LENGTHTO(extended_ranap_cause, explicitly_specified)";
+ variant (extended_ranap_cause) "FIELDLENGTH(16), COMP(nosign), BYTEORDER(last)"
+}
+
+//7.7.112
+type record ENodeB_ID {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT1 eNodeB_type,
+ ENodeB_IDs eNodeB_ID
+} with {
+ variant "PRESENCE(type_gtpc = 'D4'O)";
+ variant (lengthf) "LENGTHTO(eNodeB_type, eNodeB_ID)";
+ variant "CROSSTAG(macroENodeB_ID, eNodeB_type = '00'O;
+ homeENodeB_ID, eNodeB_type = '01'O;)"
+}
+
+type union ENodeB_IDs
+{
+ HomeENodeB_ID homeENodeB_ID,
+ MacroENodeB_ID macroENodeB_ID
+}
+
+type record MacroENodeB_ID
+{
+ HEX1 mcc1,
+ HEX1 mcc2,
+ HEX1 mcc3,
+ HEX1 mnc3,
+ HEX1 mnc1,
+ HEX1 mnc2,
+ BIT4 spare,
+ bitstring macroENodeB_ID length(20),
+ OCT2 tac
+} with {
+ variant (spare,macroENodeB_ID) "FIELDORDER(msb)";
+ variant (macroENodeB_ID) "FIELDLENGTH(20)";
+}
+
+type record HomeENodeB_ID
+{
+ HEX1 mcc1,
+ HEX1 mcc2,
+ HEX1 mcc3,
+ HEX1 mnc3,
+ HEX1 mnc1,
+ HEX1 mnc2,
+ BIT4 spare,
+ bitstring homeENodeB_ID length(28),
+ OCT2 tac
+} with {
+ variant (spare,homeENodeB_ID) "FIELDORDER(msb)";
+ variant (homeENodeB_ID) "FIELDLENGTH(28)";
+}
+
+//7.7.113
+type record SelectionMode_NSAPI {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT4 nsapi,
+ BIT4 spare1,
+ BIT2 selectionMode,
+ BIT6 spare2
+} with {
+ variant "PRESENCE(type_gtpc = 'D5'O)";
+ variant (lengthf) "LENGTHTO(nsapi, spare1, selectionMode, spare2)";
+}
+
+//7.7.114
+type record ULI_Timestamp {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ OCT4 uliTimestampValue,
+ octetstring explicitly_specified optional
+} with {
+ variant "PRESENCE(type_gtpc = 'D6'O)";
+ variant (lengthf) "LENGTHTO(uliTimestampValue, explicitly_specified)";
+}
+
+//7.7.115
+type record LHN_ID_NSAPI {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT4 nsapi,
+ BIT4 spare,
+ octetstring lHN_ID optional
+} with {
+ variant "PRESENCE(type_gtpc = 'D7'O)";
+ variant (lengthf) "LENGTHTO(nsapi, spare, lHN_ID)";
+}
+
+//7.7.116
+type record CN_OperatorSelectionEntity {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT2 selectionEntity,
+ BIT6 spare,
+ octetstring explicitly_specified optional
+} with {
+ variant "PRESENCE(type_gtpc = 'D8'O)";
+ variant (lengthf) "LENGTHTO(selectionEntity, spare, explicitly_specified)";
+}
+
+//7.7.117
+type record UE_UsageType {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ LIN4_BO_LAST uE_UsageTypeValue
+ } with {
+ variant "PRESENCE(type_gtpc = 'D9'O)";
+ variant (lengthf) "LENGTHTO(uE_UsageTypeValue)";
+}
+
+//7.7.118
+type record ExtendedCommonFlagsII {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ BIT1 pnsi,
+ BIT1 dtci,
+ BIT6 spare,
+ octetstring explicitly_specified optional
+ } with {
+ variant "PRESENCE(type_gtpc = 'DA'O)";
+ variant (lengthf) "LENGTHTO(pnsi, dtci, spare, explicitly_specified)";
+}
+
+//7.7.119
+type record NodeIdentifier {
+ OCT1 type_gtpc,
+ LIN2_BO_LAST lengthf,
+ octetstring nodeIdentifier
+ } with {
+ variant "PRESENCE(type_gtpc = 'DB'O)";
+ variant (lengthf) "LENGTHTO( nodeIdentifier)";
+}
+
+/////////////////////////////
+// Message Type Values
+// 7.1 Table 1
+/////////////////////////////
+type OCT1 MessageType_gtpc;
+
+// 0 For future use. Shall not be sent. If received, shall be treated as an
+// Unknown message
+
+const MessageType_gtpc echoRequest := '01'O;
+const MessageType_gtpc echoResponse := '02'O;
+const MessageType_gtpc versionNotSupported := '03'O;
+
+// 4 - 7: For GTP'
+
+// 8 - 15 for future use. Shall not be sent.
+// If received, shall be treated as an Unknown message
+
+const MessageType_gtpc createPDPContextRequest := '10'O;
+const MessageType_gtpc createPDPContextResponse := '11'O;
+const MessageType_gtpc updatePDPContextRequest := '12'O;
+const MessageType_gtpc updatePDPContextResponse := '13'O;
+const MessageType_gtpc deletePDPContextRequest := '14'O;
+const MessageType_gtpc deletePDPContextResponse := '15'O;
+const MessageType_gtpc initiatePDPContextActivationRequest := '16'O;
+const MessageType_gtpc initiatePDPContextActivationResponse := '17'O;
+
+// 24 - 25 for future use.
+// Shall not be sent. If received, shall be treated as an Unknown message
+
+// 26 for GTP-U only
+
+const MessageType_gtpc pduNotificationRequest := '1B'O;
+const MessageType_gtpc pduNotificationResponse := '1C'O;
+const MessageType_gtpc pduNotificationRejectRequest := '1D'O;
+const MessageType_gtpc pduNotificationRejectResponse := '1E'O;
+
+const MessageType_gtpc supportedExtHeadersNotification := '1F'O;
+const MessageType_gtpc sendRoutingInfoForGPRSRequest := '20'O;
+const MessageType_gtpc sendRoutingInfoForGPRSResponse := '21'O;
+const MessageType_gtpc failureReportRequest := '22'O;
+const MessageType_gtpc failureReportResponse := '23'O;
+const MessageType_gtpc noteMS_GPRSPresentRequest := '24'O;
+const MessageType_gtpc noteMS_GPRSPresentResponse := '25'O;
+
+// 38 - 47 for future use. Shall not be sent.
+// If received, shall be treated as an Unknown message
+
+const MessageType_gtpc identificationRequest := '30'O;
+const MessageType_gtpc identificationResponse := '31'O;
+const MessageType_gtpc sgsnContextRequest := '32'O;
+const MessageType_gtpc sgsnContextResponse := '33'O;
+const MessageType_gtpc sgsnContextAcknowledge := '34'O;
+const MessageType_gtpc forwardRelocationRequest := '35'O;
+const MessageType_gtpc forwardRelocationResponse := '36'O;
+const MessageType_gtpc forwardRelocationComplete := '37'O;
+const MessageType_gtpc relocationCancelRequest := '38'O;
+const MessageType_gtpc relocationCancelResponse := '39'O;
+const MessageType_gtpc forwardSRNSContext := '3A'O;
+const MessageType_gtpc forwardRelocationCompleteAcknowledge := '3B'O;
+const MessageType_gtpc forwardSRNSContextAcknowledge := '3C'O;
+const MessageType_gtpc ueRegistrationQueryRequest := '3D'O;
+const MessageType_gtpc ueRegistrationQueryResponse := '3E'O;
+
+// 63 - 69 for future use. Shall not be sent. If received, shall be treated as
+// an Unknown message
+
+const MessageType_gtpc rANInformationRelay := '46'O;
+
+// 71 -95 for future use. Shall not be sent. If received, shall be treated as
+// an Unknown message
+
+const MessageType_gtpc mBMSNotificationRequest := '60'O;
+const MessageType_gtpc mBMSNotificationResponse := '61'O;
+const MessageType_gtpc mBMSNotificationRejectRequest := '62'O;
+const MessageType_gtpc mBMSNotificationRejectResponse := '63'O;
+const MessageType_gtpc createMBMSContextRequest := '64'O;
+const MessageType_gtpc createMBMSContextResponse := '65'O;
+const MessageType_gtpc updateMBMSContextRequest := '66'O;
+const MessageType_gtpc updateMBMSContextResponse := '67'O;
+const MessageType_gtpc deleteMBMSContextRequest := '68'O;
+const MessageType_gtpc deleteMBMSContextResponse := '69'O;
+
+// 106-111 for future use. Shall not be sent. If received, shall be treated as
+// an Unknown message
+
+const MessageType_gtpc mBMSRegistrationRequest := '70'O;
+const MessageType_gtpc mBMSRegistrationResponse := '71'O;
+const MessageType_gtpc mBMSDeRegistrationRequest := '72'O;
+const MessageType_gtpc mBMSDeRegistrationResponse := '73'O;
+
+const MessageType_gtpc mBMSSessionStartRequest := '74'O;
+const MessageType_gtpc mBMSSessionStartResponse := '75'O;
+const MessageType_gtpc mBMSSessionStopRequest := '76'O;
+const MessageType_gtpc mBMSSessionStopResponse := '77'O;
+
+const MessageType_gtpc mBMSSessionUpdateRequest := '78'O;
+const MessageType_gtpc mBMSSessionUpdateResponse := '79'O;
+
+// 122 - 127 for future use. Shall not be sent.
+// If received, shall be treated as an Unknown message
+
+const MessageType_gtpc mS_InfoChangeNotificationRequest := '80'O;
+const MessageType_gtpc mS_InfoChangeNotificationResponse := '81'O
+
+// 130 - 239 for future use. Shall not be sent.
+// If received, shall be treated as an Unknown message
+
+// 240 - 241 not used in GTP-C
+
+// 242 - 254 for future use. Shall not be sent.
+// If received, shall be treated as an Unknown message
+
+// 255 not used in GTP-C
+
+const MessageType_gtpc g_PDU := 'FF'O;
+
+
+/////////////////////////////
+// GTP-C messages
+/////////////////////////////
+// Echo Request - 7.2.1
+type record EchoRequest {
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Echo Response - 7.2.2
+type record EchoResponse {
+ Recovery_gtpc recovery,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Version Not Supported - 7.2.3
+type record VersionNotSupported {
+};
+
+// Supported Extension Headers Notification - 7.2.4
+type record SupportedExtensionHeadersNotification {
+ ExtensionHeaderTypeList_gtpc extensionHeaderTypeList
+} with {variant ""};
+
+// Create PDP Context Request - 7.3.1
+type record CreatePDPContextRequest {
+ IMSI_gtpc imsi optional,
+ RoutingAreaIdentity rai optional,
+ Recovery_gtpc recovery optional,
+ SelectionMode selectionMode optional,
+ TeidDataI teidDataI,
+ TeidControlPlane teidControlPlane optional,
+ NSAPI_GTPC nsapi,
+ NSAPI_GTPC linked_nsapi optional,
+ ChargingCharacteristics_GTPC charging_char optional,
+ TraceRef trace_ref optional,
+ GTP_TraceType trace_type optional,
+ EndUserAddress endUserAddress optional,
+ AccessPointName accessPointName optional,
+ ProtConfigOptions protConfigOptions optional,
+ GSN_Address_GTPC sgsn_addr_signalling,
+ GSN_Address_GTPC sgsn_addr_traffic,
+ MSISDN msisdn optional,
+ QualityOfServiceProfile qualityOfServiceProfile,
+ TrafficFlowTemplate tft optional,
+ GTP_TriggerID triggerId optional,
+ OMCIdentity omcId optional,
+ CommonFlags commonFlags optional,
+ APN_Restriction aPN_Restriction optional,
+ RATType ratType optional,
+ UserLocationInformation userLocationInformation optional,
+ MS_TimeZone mS_TimeZone optional,
+ IMEISV_gtpc imeisv optional,
+ CamelChargingInformationContainer camelChargingInformationContainer optional,
+ AdditionalTraceInfo additionalTraceInfo optional,
+ CorrelationID correlationID optional,
+ EvolvedAllocationRetentionPriorityI evolvedAllocationRetentionPriorityI optional,
+ ExtendedCommonFlags extendedCommonFlags optional,
+ UserCSGInformation userCSGInformation optional,
+ APN_AMBR aPN_AMBR optional,
+ SignallingPriorityIndication signallingPriorityIndication optional,
+ CN_OperatorSelectionEntity cN_OperatorSelectionEntity optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Create PDP Context Response - 7.3.2
+type record CreatePDPContextResponse {
+ Cause_gtpc cause,
+ ReorderingRequired reorderingRequired optional,
+ Recovery_gtpc recovery optional,
+ TeidDataI teidDataI optional,
+ TeidControlPlane teidControlPlane optional,
+ NSAPI_GTPC nsapi optional,
+ ChargingID chargingID optional,
+ EndUserAddress endUserAddress optional,
+ ProtConfigOptions protConfigOptions optional,
+ GSN_Address_GTPC ggsn_addr_controlPlane optional,
+ GSN_Address_GTPC ggsn_addr_traffic optional,
+ GSN_Address_GTPC alt_ggsn_addr_controlPane optional,
+ GSN_Address_GTPC alt_ggsn_addr_traffic optional,
+ QualityOfServiceProfile qualityOfServiceProfile optional,
+ CommonFlags commonFlags optional,
+ APN_Restriction aPN_Restriction optional,
+ MS_InfoChangeReportingAction mS_InfoChangeReportingAction optional,
+ BearerControlMode bearerControlMode optional,
+ EvolvedAllocationRetentionPriorityI evolvedAllocationRetentionPriorityI optional,
+ ExtendedCommonFlags extendedCommonFlag optional,
+ CSGInfoReportingAction csg_information_reporting_action optional,
+ APN_AMBR aPN_AMBR optional,
+ GGSN_BackOffTime gGSN_BackOffTime optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+
+// Update PDP Context Request - 7.3.3
+type union UpdatePDPContextRequest {
+ UpdatePDPContextRequestSGSN updatePDPContextRequestSGSN,
+ UpdatePDPContextRequestGGSN updatePDPContextRequestGGSN,
+ UpdatePDPContextRequestCGW updatePDPContextRequestCGW
+};
+
+//from SGSN
+type record UpdatePDPContextRequestSGSN {
+ IMSI_gtpc imsi optional,
+ RoutingAreaIdentity rai optional,
+ Recovery_gtpc recovery optional,
+ TeidDataI teidDataI,
+ TeidControlPlane teidControlPlane optional,
+ NSAPI_GTPC nsapi,
+ TraceRef trace_ref optional,
+ GTP_TraceType trace_type optional,
+ ProtConfigOptions protConfigOptions optional,
+ GSN_Address_GTPC sgsn_addr_controlPlane,
+ GSN_Address_GTPC sgsn_addr_traffic,
+ GSN_Address_GTPC alt_ggsn_addr_controlPane optional,
+ GSN_Address_GTPC alt_ggsn_addr_traffic optional,
+ QualityOfServiceProfile qualityOfServiceProfile,
+ TrafficFlowTemplate tft optional,
+ GTP_TriggerID triggerId optional,
+ OMCIdentity omcId optional,
+ CommonFlags commonFlags optional,
+ RATType ratType optional,
+ UserLocationInformation userLocationInformation optional,
+ MS_TimeZone mS_TimeZone optional,
+ AdditionalTraceInfo additionalTraceInfo optional,
+ DirectTunnelFlags directTunnelFlags optional,
+ EvolvedAllocationRetentionPriorityI evolvedAllocationRetentionPriorityI optional,
+ ExtendedCommonFlags extendedCommonFlags optional,
+ UserCSGInformation userCSGInformation optional,
+ APN_AMBR aPN_AMBR optional,
+ SignallingPriorityIndication signallingPriorityIndication optional,
+ CN_OperatorSelectionEntity cN_OperatorSelectionEntity optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+//from GGSN
+type record UpdatePDPContextRequestGGSN {
+ IMSI_gtpc imsi optional,
+ Recovery_gtpc recovery optional,
+ NSAPI_GTPC nsapi,
+ EndUserAddress endUserAddress optional,
+ ProtConfigOptions protConfigOptions optional,
+ QualityOfServiceProfile qualityOfServiceProfile optional,
+ TrafficFlowTemplate tft optional,
+ CommonFlags commonFlags optional,
+ APN_Restriction aPN_Restriction optional,
+ MS_InfoChangeReportingAction mS_InfoChangeReportingAction optional,
+ DirectTunnelFlags directTunnelFlags optional,
+ BearerControlMode bearerControlMode optional,
+ EvolvedAllocationRetentionPriorityI evolvedAllocationRetentionPriorityI optional,
+ ExtendedCommonFlags extendedCommonFlags optional,
+ CSGInfoReportingAction cSGInfoReportingAction optional,
+ APN_AMBR aPN_AMBR optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+//from CGW
+type record UpdatePDPContextRequestCGW {
+ IMSI_gtpc imsi optional,
+ Recovery_gtpc recovery optional,
+ NSAPI_GTPC nsapi,
+ EndUserAddress endUserAddress optional,
+ ProtConfigOptions protConfigOptions optional,
+ QualityOfServiceProfile qualityOfServiceProfile optional,
+ TrafficFlowTemplate tft optional,
+ CommonFlags commonFlags optional,
+ APN_Restriction aPN_Restriction optional,
+ MS_InfoChangeReportingAction mS_InfoChangeReportingAction optional,
+ DirectTunnelFlags directTunnelFlags optional,
+ BearerControlMode bearerControlMode optional,
+ EvolvedAllocationRetentionPriorityI evolvedAllocationRetentionPriorityI optional,
+ CSGInfoReportingAction cSGInfoReportingAction optional,
+ APN_AMBR aPN_AMBR optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Update PDP Context Response - 7.3.4
+type union UpdatePDPContextResponse {
+ UpdatePDPContextResponseSGSN updatePDPContextResponseSGSN,
+ UpdatePDPContextResponseGGSN updatePDPContextResponseGGSN,
+ UpdatePDPContextResponseCGW updatePDPContextResponseCGW
+};
+
+//from GGSN
+type record UpdatePDPContextResponseGGSN {
+ Cause_gtpc cause,
+ Recovery_gtpc recovery optional,
+ TeidDataI teidDataI optional,
+ TeidControlPlane teidControlPlane optional,
+ ChargingID chargingID optional,
+ ProtConfigOptions protConfigOptions optional,
+ GSN_Address_GTPC ggsn_addr_controlPlane optional,
+ GSN_Address_GTPC ggsn_addr_traffic optional,
+ GSN_Address_GTPC alt_ggsn_addr_controlPane optional,
+ GSN_Address_GTPC alt_ggsn_addr_traffic optional,
+ QualityOfServiceProfile qualityOfServiceProfile optional,
+ CommonFlags commonFlags optional,
+ APN_Restriction aPN_Restriction optional,
+ MS_InfoChangeReportingAction mS_InfoChangeReportingAction optional,
+ BearerControlMode bearerControlMode optional,
+ EvolvedAllocationRetentionPriorityI evolvedAllocationRetentionPriorityI optional,
+ CSGInfoReportingAction csg_information_reporting_action optional,
+ APN_AMBR aPN_AMBR optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+//from CGW
+type record UpdatePDPContextResponseCGW {
+ Cause_gtpc cause,
+ Recovery_gtpc recovery optional,
+ TeidDataI teidDataI optional,
+ TeidControlPlane teidControlPlane optional,
+ ChargingID chargingID optional,
+ ProtConfigOptions protConfigOptions optional,
+ GSN_Address_GTPC ggsn_addr_controlPlane optional,
+ GSN_Address_GTPC ggsn_addr_traffic optional,
+ GSN_Address_GTPC alt_ggsn_addr_controlPane optional,
+ GSN_Address_GTPC alt_ggsn_addr_traffic optional,
+ QualityOfServiceProfile qualityOfServiceProfile optional,
+ CommonFlags commonFlags optional,
+ APN_Restriction aPN_Restriction optional,
+ MS_InfoChangeReportingAction mS_InfoChangeReportingAction optional,
+ BearerControlMode bearerControlMode optional,
+ EvolvedAllocationRetentionPriorityI evolvedAllocationRetentionPriorityI optional,
+ APN_AMBR aPN_AMBR optional,
+ ChargingGatewayAddress chargingGatewayAddress optional,
+ ChargingGatewayAddress alt_chargingGatewayAddress optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+//from SGSN
+type record UpdatePDPContextResponseSGSN {
+ Cause_gtpc cause,
+ Recovery_gtpc recovery optional,
+ TeidDataI teidDataI optional,
+ ProtConfigOptions protConfigOptions optional,
+ GSN_Address_GTPC sgsn_addr_traffic optional,
+ QualityOfServiceProfile qualityOfServiceProfile optional,
+ UserLocationInformation userLocationInformation optional,
+ MS_TimeZone mS_TimeZone optional,
+ DirectTunnelFlags directTunnelFlags optional,
+ EvolvedAllocationRetentionPriorityI evolvedAllocationRetentionPriorityI optional,
+ APN_AMBR aPN_AMBR optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+
+// Delete PDP Context Request - 7.3.5
+type record DeletePDPContextRequest {
+ Cause_gtpc cause optional,
+ TearDownInd tearDownIndicator optional,
+ NSAPI_GTPC nsapi,
+ ProtConfigOptions protConfigOptions optional,
+ UserLocationInformation userLocationInformation optional,
+ MS_TimeZone mS_TimeZone optional,
+ ExtendedCommonFlags extendedCommonFlags optional,
+ ULI_Timestamp uLI_Timestamp optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Delete PDP Context Response - 7.3.6
+type record DeletePDPContextResponse {
+ Cause_gtpc cause,
+ ProtConfigOptions protConfigOptions optional,
+ UserLocationInformation userLocationInformation optional,
+ MS_TimeZone mS_TimeZone optional,
+ ULI_Timestamp uLI_Timestamp optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// PDU Notification Request - 7.3.8
+type record PDU_NotificationRequest {
+ IMSI_gtpc imsi,
+ TeidControlPlane teidControlPlane,
+ EndUserAddress endUserAddress,
+ AccessPointName accessPointName,
+ ProtConfigOptions protConfigOptions optional,
+ GSN_Address_GTPC ggsn_addr_controlPlane,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// PDU Notification Response - 7.3.9
+type record PDU_NotificationResponse {
+ Cause_gtpc cause,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// PDU Notification Reject Request - 7.3.10
+type record PDU_NotificationRejectRequest {
+ Cause_gtpc cause,
+ TeidControlPlane teidControlPlane,
+ EndUserAddress endUserAddress,
+ AccessPointName accessPointName,
+ ProtConfigOptions protConfigOptions optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// PDU Notification Reject Response - 7.3.11
+type record PDU_NotificationRejectResponse {
+ Cause_gtpc cause,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Initiate PDP Context Activation Request 7.3.12
+type record InitiatePDPContextActivationRequest
+{
+ NSAPI_GTPC linkedNSAPI,
+ ProtConfigOptions protConfigOptions optional,
+ QualityOfServiceProfile qualityOfServiceProfile,
+ TrafficFlowTemplate tft optional,
+ CorrelationID correlationID,
+ EvolvedAllocationRetentionPriorityI evolvedAllocationRetentionPriorityI optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Initiate PDP Context Activation Response 7.3.13
+type record InitiatePDPContextActivationResponse
+{
+ Cause_gtpc cause,
+ ProtConfigOptions protConfigOptions optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Send Routeing Information for GPRS Request - 7.4.1
+type record SendRouteingInformationForGPRSRequest {
+ IMSI_gtpc imsi,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Send Routeing Information for GPRS Response - 7.4.2
+type record SendRouteingInformationForGPRSResponse {
+ Cause_gtpc cause,
+ IMSI_gtpc imsi,
+ MAP_Cause map_Cause optional,
+ MSNotReachableReason mS_not_ReachableReason optional,
+ GSN_Address_GTPC gsn_Address optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Failure Report Request - 7.4.3
+type record FailureReportRequest {
+ IMSI_gtpc imsi,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Failure Report Response - 7.4.4
+type record FailureReportResponse {
+ Cause_gtpc cause,
+ MAP_Cause map_Cause optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Note MS GPRS Present Request - 7.4.5
+type record NoteMS_GPRSPresentRequest {
+ IMSI_gtpc imsi,
+ GSN_Address_GTPC gsn_Address,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Note MS GPRS Present Response - 7.4.6
+type record NoteMS_GPRSPresentResponse {
+ Cause_gtpc cause,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Identification Request - 7.5.1
+type record IdentificationRequest {
+ RoutingAreaIdentity routingAreaIdentity,
+ PacketTMSI packetTMSI,
+ PTMSI_Signature ptmsi_Signature optional,
+ GSN_Address_GTPC sgsn_addr_controlPlane optional,
+ HopCounter_gtpc hopCounter optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Identification Response - 7.5.2
+type record IdentificationResponse {
+ Cause_gtpc cause,
+ IMSI_gtpc imsi optional,
+ AuthenticationTriplet_GTPC_SetOf authenticationTriplet optional,
+ AuthenticationQuintuplet_GTPC authenticationQuintuplet optional,
+ AuthenticationQuintuplet_GTPC authenticationQuintuplet2 optional,
+ AuthenticationQuintuplet_GTPC authenticationQuintuplet3 optional,
+ AuthenticationQuintuplet_GTPC authenticationQuintuplet4 optional,
+ AuthenticationQuintuplet_GTPC authenticationQuintuplet5 optional,
+ UE_UsageType uE_UsageType optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// SGSN Context Request - 7.5.3
+type record SGSN_ContextRequest {
+ IMSI_gtpc imsi optional,
+ RoutingAreaIdentity routingAreaIdentity ,
+ TLLI tlli optional,
+ PacketTMSI packetTMSI optional,
+ PTMSI_Signature ptmsi_Signature optional,
+ MS_Validated ms_Validated optional,
+ TeidControlPlane teidControlPlane,
+ GSN_Address_GTPC sgsn_addr_controlPlane,
+ GSN_Address_GTPC alternative_sgsn_addr_controlPlane optional,
+ SGSN_Number sGSN_Number optional,
+ RATType ratType optional,
+ HopCounter_gtpc hopCounter optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// SGSN Context Response - 7.5.4
+ type record SGSN_ContextResponse
+{
+ Cause_gtpc cause,
+ IMSI_gtpc imsi optional,
+ TeidControlPlane teidControlPlane optional,
+ RABContext_List rabContext optional,
+ RadioPrioritySMS radioPrioritySMS optional,
+ RadioPriority_List radioPriority optional,
+ PacketFlowID_List packetFlowID optional,
+ ChargingCharacteristics_List_GTPC charging_char optional,
+ MM_Context mm_Context optional,
+ PDP_Context_GTPC_List pdp_Context optional,
+ GSN_Address_GTPC sgsn_addr_controlPlane optional,
+ PDPContextPriorization pdpContextPriorization optional,
+ RadioPriorityLCS radioPriority_LCS optional,
+ MBMS_UE_Context_List mBMS_UE_Context optional,
+ RFSP_Index subscribedRFSP_Index optional,
+ RFSP_Index rFSP_IndexInUse optional,
+ FullyQualifiedDomainName_List colocatedGGSN_PGW_FQDN optional,
+ EvolvedAllocationRetentionPriorityII_List evolvedAllocationRetentionPriorityII optional,
+ ExtendedCommonFlags extendedCommonFlags optional,
+ UE_Network_Capability ue_network_capability optional,
+ UE_AMBR ue_ambr optional,
+ APN_AMBR_NSAPI apn_ambr_nsapi optional,
+ SignallingPriorityIndication_NSAPI signallingPriorityIndication_nsapi optional,
+ Higher_Bitrates_Than_16Mbps_Flag higher_bitrates_than_16mbps_flag optional,
+ SelectionMode_NSAPI selectionMode_nsapi optional,
+ LHN_ID_NSAPI localHomeNetworkID_nsapi optional,
+ UE_UsageType uE_UsageType optional,
+ ExtendedCommonFlagsII extendedCommonFlagsII optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+
+// SGSN Context Acknowledge - 7.5.5
+type record SGSN_ContextAcknowledge {
+ Cause_gtpc cause,
+ TeidDataII_List teidDataII optional,
+ GSN_Address_GTPC sgsn_AddressForUserTraffic optional,
+ SGSN_Number sgsn_Number optional,
+ NodeIdentifier nodeIdentifier optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Forward Relocation Request - 7.5.6
+type record ForwardRelocationRequest {
+ IMSI_gtpc imsi optional,
+ TeidControlPlane teidControlPlane,
+ RANAPCause ranapCause,
+ PacketFlowID_List packetFlowID optional,
+ ChargingCharacteristics_List_GTPC charging_char optional,
+ MM_Context mmContext,
+ PDP_Context_GTPC_List pdpContext optional,
+ GSN_Address_GTPC sgsn_addr_controlPlane,
+ TargetIdentification targetId,
+ UTRANTransparentContainer transpContainer,
+ PDPContextPriorization pdpContextPriorization optional,
+ MBMS_UE_Context_List mBMS_UE_Context optional,
+ Selected_PLMN_ID selected_PLMN_ID optional,
+ BSS_Container bSS_Container optional,
+ Cell_Identification_gtpc cell_Identification optional,
+ BSSGP_Cause_gtpc bSSGP_Cause_gtpc optional,
+ PS_HandoverXIDParameters_List pS_HandoverXIDParameters optional,
+ DirectTunnelFlags directTunnelFlags optional,
+ ReliableInterRATHandoverInfo reliableInterRATHandoverInfo optional,
+ RFSP_Index subscribedRFSP_Index optional,
+ RFSP_Index rFSP_IndexInUse optional,
+ FullyQualifiedDomainName_List colocatedGGSN_PGW_FQDN optional,
+ EvolvedAllocationRetentionPriorityII_List evolvedAllocationRetentionPriorityII optional,
+ ExtendedCommonFlags extendedCommonFlags optional,
+ CSG_Id cSG_Id optional,
+ CSG_MembershipIndication cSG_MembershipIndication optional,
+ UE_Network_Capability ue_network_capability optional,
+ UE_AMBR ue_ambr optional,
+ APN_AMBR_NSAPI apn_ambr_nsapi optional,
+ SignallingPriorityIndication_NSAPI signallingPriorityIndication_nsapi optional,
+ Higher_Bitrates_Than_16Mbps_Flag higher_bitrates_than_16mbps_flag optional,
+ SRVCC_MM_Context srvcc_mm_context optional,
+ SRVCC_Flags srvcc_flags optional,
+ STN_SR stn_sr optional,
+ C_MSISDN c_msisdn optional,
+ Extended_RANAP_Cause extended_ranap_cause optional,
+ ENodeB_ID eNodeB_ID optional,
+ SelectionMode_NSAPI selectionMode_nsapi optional,
+ UE_UsageType uE_UsageType optional,
+ ExtendedCommonFlagsII extendedCommonFlagsII optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional //to be compatible with GTP 9.11.0
+};
+
+
+
+
+// Forward Relocation Response - 7.5.7
+type record ForwardRelocationResponse {
+ Cause_gtpc cause,
+ TeidControlPlane teidControlPlane optional,
+ TeidDataII_List teidDataII optional,
+ RANAPCause ranapCause optional,
+ GSN_Address_GTPC sgsn_addr_controlPlane optional,
+ GSN_Address_GTPC sgsn_addr_traffic optional,
+ UTRANTransparentContainer transpContainer optional,
+ RABSetupInformation_List rabSetupInfo optional,
+ AdditionalRABSetupInformation_List additionalRABSetupInfo optional,
+ SGSN_Number sGSN_Number optional,
+ BSS_Container bSS_Container optional,
+ BSSGP_Cause_gtpc bSSGP_Cause_gtpc optional,
+ ListOfSetupPFCs_gtpc listOfSetupPFCs_gtpc optional,
+ Extended_RANAP_Cause extended_ranap_cause optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Forward Relocation Complete - 7.5.8
+type record ForwardRelocationComplete {
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Relocation Cancel Request - 7.5.9
+type record RelocationCancelRequest {
+ IMSI_gtpc imsi optional,
+ IMEISV_gtpc imeisv_gtpc optional,
+ ExtendedCommonFlags extended_common_flags optional,
+ Extended_RANAP_Cause extended_ranap_cause optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Relocation Cancel Response - 7.5.10
+type record RelocationCancelResponse {
+ Cause_gtpc cause,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Forward Relocation Complete Acknowledge - 7.5.11
+type record ForwardRelocationCompleteAcknowledge {
+ Cause_gtpc cause,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// 60 Forward SRNS Context Acknowledge - 7.5.12
+type record ForwardSRNSContextAcknowledge {
+ Cause_gtpc cause,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Forward SRNS Context - 7.5.13
+type record ForwardSRNSContext {
+ RABContext_List rabContext,
+ SourceRNC_PDCP_ContextInfo sourceRNC_PDCP_ContextInfo optional,
+ PDU_Numbers_List pDU_Numbers optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// RAN InformationRelay - 7.5.14.1
+type record RANInformationRelay{
+ RANTransparentContainer transparentContainer,
+ RIM_RoutingAddress rIM_RoutingAddress optional,
+ RIM_RoutingAddress_Discriminator rIM_RoutingAddress_Discriminator optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// UE Registration Query Request - 7.5.15
+type record UERegistrationQueryRequest {
+ IMSI_gtpc imsi,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// UE Registration Query Response - 7.5.16
+type record UERegistrationQueryResponse {
+ Cause_gtpc cause,
+ IMSI_gtpc imsi,
+ Selected_PLMN_ID selected_PLMN_ID optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// MBMS Notification Request - 7.5A.1.1
+type record MBMSNotificationRequest
+{
+ IMSI_gtpc imsi,
+ TeidControlPlane teidControlPlane,
+ NSAPI_GTPC nsapi,
+ EndUserAddress endUserAddress,
+ AccessPointName accessPointName,
+ GSN_Address_GTPC ggsn_addr_controlPlane,
+ MBMS_ProtocolConfigurationOptions mBMS_ProtocolConfigurationOptions optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// MBMS Notification Response - 7.5A.1.2
+type record MBMSNotificationResponse
+{
+ Cause_gtpc cause,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// MBMS Notification Reject Request - 7.5A.1.3
+type record MBMSNotificationRejectRequest
+{
+ Cause_gtpc cause,
+ TeidControlPlane teidControlPlane,
+ NSAPI_GTPC nsapi,
+ EndUserAddress endUserAddress,
+ AccessPointName accessPointName,
+ GSN_Address_GTPC sgsn_addr_controlPlane optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// MBMS Notification Reject Response - 7.5A.1.4
+type record MBMSNotificationRejectResponse
+{
+ Cause_gtpc cause,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// Create MBMS Context Request - 7.5A.1.5
+type record CreateMBMSContextRequest
+{
+ IMSI_gtpc imsi optional,
+ RoutingAreaIdentity rai,
+ Recovery_gtpc recovery optional,
+ SelectionMode selectionMode optional,
+ TeidControlPlane teidControlPlane optional,
+ TraceRef trace_ref optional,
+ GTP_TraceType trace_type optional,
+ EndUserAddress endUserAddress,
+ AccessPointName accessPointName,
+ GSN_Address_GTPC sGSNAddressForSignalling,
+ MSISDN msisdn optional,
+ GTP_TriggerID triggerId optional,
+ OMCIdentity omcId optional,
+ RATType ratType optional,
+ UserLocationInformation userLocationInformation optional,
+ MS_TimeZone mS_TimeZone optional,
+ IMEISV_gtpc imeisv optional,
+ MBMS_ProtocolConfigurationOptions mBMS_ProtocolConfigurationOptions optional,
+ AdditionalTraceInfo additionalTraceInfo optional,
+ Enhanced_NSAPI enhanced_NSAPI,
+ AdditionalMBMSTraceInfo additionalMBMSTraceInfo optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Create MBMS Context Response - 7.5A.1.6
+type record CreateMBMSContextResponse
+{
+ Cause_gtpc cause,
+ Recovery_gtpc recovery optional,
+ TeidControlPlane teidControlPlane optional,
+ ChargingID chargingID optional,
+ GSN_Address_GTPC ggsn_addr_controlPlane optional,
+ GSN_Address_GTPC alternative_ggsn_addr_controlPlane optional,
+ MBMS_ProtocolConfigurationOptions mBMS_ProtocolConfigurationOptions optional,
+ ChargingGatewayAddress chargingGatewayAddress optional,
+ ChargingGatewayAddress alt_chargingGatewayAddress optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Update MBMS Context Request - 7.5A.1.7
+type record UpdateMBMSContextRequest
+{
+ RoutingAreaIdentity rai,
+ Recovery_gtpc recovery optional,
+ TeidControlPlane teidControlPlane optional,
+ TraceRef trace_ref optional,
+ GTP_TraceType trace_type optional,
+ GSN_Address_GTPC sgsn_addr_controlPlane,
+ GSN_Address_GTPC alternative_sgsn_addr_controlPlane optional,
+ GTP_TriggerID triggerId optional,
+ OMCIdentity omcId optional,
+ RATType ratType optional,
+ UserLocationInformation userLocationInformation optional,
+ MS_TimeZone mS_TimeZone optional,
+ AdditionalTraceInfo additionalTraceInfo optional,
+ Enhanced_NSAPI enhanced_NSAPI,
+ AdditionalMBMSTraceInfo additionalMBMSTraceInfo optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Update MBMS Context Response - 7.5A.1.8
+type record UpdateMBMSContextResponse
+{
+ Cause_gtpc cause,
+ Recovery_gtpc recovery optional,
+ TeidControlPlane teidControlPlane optional,
+ ChargingID chargingID optional,
+ GSN_Address_GTPC ggsn_addr_controlPlane optional,
+ GSN_Address_GTPC alternative_ggsn_addr_controlPlane optional,
+ ChargingGatewayAddress chargingGatewayAddress optional,
+ ChargingGatewayAddress alt_chargingGatewayAddress optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Delete MBMS Context Request - 7.5A.1.9
+type record DeleteMBMSContextRequest
+{
+ IMSI_gtpc imsi optional,
+ TeidControlPlane teidControlPlane optional,
+ EndUserAddress endUserAddress optional,
+ AccessPointName accessPointName optional,
+ MBMS_ProtocolConfigurationOptions mBMS_ProtocolConfigurationOptions optional,
+ Enhanced_NSAPI enhanced_NSAPI optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// Delete MBMS Context Response - 7.5A.1.10
+type record DeleteMBMSContextResponse
+{
+ Cause_gtpc cause,
+ MBMS_ProtocolConfigurationOptions mBMS_ProtocolConfigurationOptions optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// MBMS Registration Request - 7.5A.2.1
+type record MBMSRegistrationRequest_gtpc
+{
+ TeidControlPlane teidControlPlane optional,
+ EndUserAddress endUserAddress,
+ AccessPointName accessPointName,
+ GSN_Address_GTPC sgsn_addr_controlPlane optional,
+ GSN_Address_GTPC alternative_sgsn_addr_controlPlane optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// MBMS Registration Response - 7.5A.2.2
+type record MBMSRegistrationResponse_gtpc
+{
+ Cause_gtpc cause,
+ TeidControlPlane teidControlPlane optional,
+ GSN_Address_GTPC ggsn_addr_controlPlane optional,
+ TMGI_gtpc tMGI optional,
+ RequiredMBMS_BearerCapabilities reqMBMS_BearerCapabilities optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// MBMS De-registration Request - 7.5A.2.3
+type record MBMSDeRegistrationRequest
+{
+ EndUserAddress endUserAddress,
+ AccessPointName accessPointName,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// MBMS De-Registration Response - 7.5A.2.4
+type record MBMSDeRegistrationResponse
+{
+ Cause_gtpc cause,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+
+// MBMS Session Start Request 7.5A.2.5
+type record MBMSSessionStartRequest
+{
+ Recovery_gtpc recovery optional,
+ TeidControlPlane teidControlPlane optional,
+ EndUserAddress endUserAddress,
+ AccessPointName accessPointName,
+ GSN_Address_GTPC ggsn_addr_controlPlane optional,
+ GSN_Address_GTPC alternative_ggsn_addr_controlPlane optional,
+ QualityOfServiceProfile qualityOfServiceProfile,
+ CommonFlags commonFlags,
+ TMGI_gtpc tMGI,
+ MBMS_ServiceArea mBMS_ServiceArea,
+ MBMS_SessionIdentifier mBMS_SessionIdentifier optional,
+ MBMS_2G_3G_Indicator mBMS_2G_3G_Indicator,
+ MBMS_SessionDuration mBMS_SessionDuration,
+ MBMS_SessionRepetitionNumber mBMS_SessionRepetitionNumber optional,
+ MBMS_TimeToDataTransfer mBMS_TimeToDataTransfer,
+ MBMS_FlowID mBMS_FlowID optional,
+ MBMS_IPMulticastDistribution mBMS_IPMulticastDistribution optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// 117 MBMS Session Start Response 7.5A.2.6
+type record MBMSSessionStartResponse_gtpc
+{
+ Cause_gtpc cause,
+ Recovery_gtpc recovery optional,
+ TeidDataI teidDataI optional,
+ TeidControlPlane teidControlPlane optional,
+ GSN_Address_GTPC sgsn_addr_controlPlane optional,
+ GSN_Address_GTPC sgsn_addr_traffic optional,
+ GSN_Address_GTPC alt_sgsn_addr_traffic optional,
+ MBMS_DistributionAcknowledgement mBMS_DistributionAcknowledgement optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// MBMS Session Stop Request - 7.5A.2.7
+type record MBMSSessionStopRequest
+{
+ EndUserAddress endUserAddress,
+ AccessPointName accessPointName,
+ MBMS_FlowID mBMS_FlowID optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// MBMS Session Stop Response - 7.5A.2.8
+type record MBMSSessionStopResponse_gtpc
+{
+ Cause_gtpc cause,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+}
+
+// MBMS Session Update Request - 7.5A.2.9
+type record MBMSSessionUpdateRequest
+{
+ TeidControlPlane teidControlPlane optional,
+ EndUserAddress endUserAddress,
+ AccessPointName accessPointName,
+ GSN_Address_GTPC ggsn_addr_controlPlane optional,
+ TMGI_gtpc tMGI,
+ MBMS_ServiceArea mBMS_ServiceArea,
+ MBMS_SessionIdentifier mBMS_SessionIdentifier optional,
+ MBMS_SessionDuration mBMS_SessionDuration,
+ MBMS_SessionRepetitionNumber mBMS_SessionRepetitionNumber optional,
+ MBMS_FlowID mBMS_FlowID optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// MBMS Session Update Response - 7.5A.2.10
+type record MBMSSessionUpdateResponse
+{
+ Cause_gtpc cause,
+ TeidDataI teidDataI optional,
+ TeidControlPlane teidControlPlane optional,
+ GSN_Address_GTPC sgsn_addr_DataI optional,
+ GSN_Address_GTPC sgsn_addr_controlPlane optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// MS Info Change Notification Request 7.5B.1.1
+type record MS_InfoChangeNotificationRequest
+{
+ IMSI_gtpc imsi optional,
+ NSAPI_GTPC linkedNSAPI optional,
+ RATType ratType,
+ UserLocationInformation userLocationInformation optional,
+ IMEISV_gtpc imeisv_gtpc optional,
+ ExtendedCommonFlags extended_common_flags optional,
+ UserCSGInformation userCSGInformation optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+// MS Info Change Notification Response 7.5B.1.2
+type record MS_InfoChangeNotificationResponse
+{
+ Cause_gtpc cause,
+ IMSI_gtpc imsi optional,
+ NSAPI_GTPC linkedNSAPI optional,
+ IMEISV_gtpc imeisv_gtpc optional,
+ MS_InfoChangeReportingAction mS_InfoChangeReportingAction optional,
+ CSGInfoReportingAction cSGInfoReportingAction optional,
+ PrivateExtension_gtpc_List private_extension_gtpc optional
+};
+
+type union GTPC_PDUs {
+ EchoRequest echoRequest,
+ EchoResponse echoResponse,
+ VersionNotSupported versionNotSupported,
+ CreatePDPContextRequest createPDPContextRequest,
+ CreatePDPContextResponse createPDPContextResponse,
+ UpdatePDPContextRequest updatePDPContextRequest,
+ UpdatePDPContextResponse updatePDPContextResponse,
+ DeletePDPContextRequest deletePDPContextRequest,
+ DeletePDPContextResponse deletePDPContextResponse,
+ PDU_NotificationRequest pdu_NotificationRequest,
+ PDU_NotificationResponse pdu_NotificationResponse,
+ PDU_NotificationRejectRequest pdu_NotificationRejectRequest,
+ PDU_NotificationRejectResponse pdu_NotificationRejectResponse,
+ InitiatePDPContextActivationRequest initiatePDPContextActivationRequest,
+ InitiatePDPContextActivationResponse initiatePDPContextActivationResponse,
+ SupportedExtensionHeadersNotification supportedExtensionHeadersNotification,
+ SendRouteingInformationForGPRSRequest sendRouteingInformationForGPRSRequest,
+ SendRouteingInformationForGPRSResponse sendRouteingInformationForGPRSResponse,
+ FailureReportRequest failureReportRequest,
+ FailureReportResponse failureReportResponse,
+ NoteMS_GPRSPresentRequest noteMS_GPRSPresentRequest,
+ NoteMS_GPRSPresentResponse noteMS_GPRSPresentResponse,
+ IdentificationRequest identificationRequest,
+ IdentificationResponse identificationResponse,
+ SGSN_ContextRequest sgsn_ContextRequest,
+ SGSN_ContextResponse sgsn_ContextResponse,
+ SGSN_ContextAcknowledge sgsn_ContextAcknowledge,
+ ForwardRelocationRequest forwardRelocationRequest,
+ ForwardRelocationResponse forwardRelocationResponse,
+ ForwardRelocationComplete forwardRelocationComplete,
+ RelocationCancelRequest relocationCancelRequest,
+ RelocationCancelResponse relocationCancelResponse,
+ ForwardSRNSContext forwardSRNSContext,
+ ForwardRelocationCompleteAcknowledge forwardRelocationCompleteAcknowledge,
+ ForwardSRNSContextAcknowledge forwardSRNSContextAcknowledge,
+ UERegistrationQueryRequest uERegistrationQueryRequest,
+ UERegistrationQueryResponse uERegistrationQueryResponse,
+ RANInformationRelay ranInformationRelay,
+ MBMSNotificationRequest mBMSNotificationRequest,
+ MBMSNotificationResponse mBMSNotificationResponse,
+ MBMSNotificationRejectRequest mBMSNotificationRejectRequest,
+ MBMSNotificationRejectResponse mBMSNotificationRejectResponse,
+ CreateMBMSContextRequest createMBMSContextRequest,
+ CreateMBMSContextResponse createMBMSContextResponse,
+ UpdateMBMSContextRequest updateMBMSContextRequest,
+ UpdateMBMSContextResponse updateMBMSContextResponse,
+ DeleteMBMSContextRequest deleteMBMSContextRequest,
+ DeleteMBMSContextResponse deleteMBMSContextResponse,
+ MBMSRegistrationRequest_gtpc mBMSRegistrationRequest,
+ MBMSRegistrationResponse_gtpc mBMSRegistrationResponse,
+ MBMSDeRegistrationRequest mBMSDeRegistrationRequest,
+ MBMSDeRegistrationResponse mBMSDeRegistrationResponse,
+ MBMSSessionStartRequest mBMSSessionStartRequest,
+ MBMSSessionStartResponse_gtpc mBMSSessionStartResponse,
+ MBMSSessionStopRequest mBMSSessionStopRequest,
+ MBMSSessionStopResponse_gtpc mBMSSessionStopResponse,
+ MBMSSessionUpdateRequest mBMSSessionUpdateRequest,
+ MBMSSessionUpdateResponse mBMSSessionUpdateResponse,
+ MS_InfoChangeNotificationRequest mS_InfoChangeNotificationRequest,
+ MS_InfoChangeNotificationResponse mS_InfoChangeNotificationResponse
+} with { variant ""};
+
+
+/////////////////////////////
+// PDU definition
+/////////////////////////////
+type record PDU_GTPC {
+ BIT1 pn_bit,
+ BIT1 s_bit,
+ BIT1 e_bit,
+ BIT1 spare,
+ BIT1 pt,
+ BIT3 version,
+ OCT1 messageType,
+ LIN2_BO_LAST lengthf,
+ OCT4 teid,
+ GTPC_Header_optional_part opt_part optional,
+ GTPC_PDUs gtpc_pdu
+} with {
+ variant (lengthf) "LENGTHTO(opt_part, gtpc_pdu)";
+ variant (opt_part) "PRESENCE({pn_bit = '1'B, s_bit = '1'B, e_bit = '1'B})";
+ variant (gtpc_pdu) "CROSSTAG( echoRequest, messageType = '01'O;
+ echoResponse, messageType = '02'O;
+ versionNotSupported, messageType = '03'O;
+ createPDPContextRequest, messageType = '10'O;
+ createPDPContextResponse, messageType = '11'O;
+ updatePDPContextRequest, messageType = '12'O;
+ updatePDPContextResponse, messageType = '13'O;
+ deletePDPContextRequest, messageType = '14'O;
+ deletePDPContextResponse, messageType = '15'O;
+ initiatePDPContextActivationRequest, messageType = '16'O;
+ initiatePDPContextActivationResponse, messageType = '17'O;
+ pdu_NotificationRequest, messageType = '1B'O;
+ pdu_NotificationResponse, messageType = '1C'O;
+ pdu_NotificationRejectRequest, messageType = '1D'O;
+ pdu_NotificationRejectResponse, messageType = '1E'O;
+ supportedExtensionHeadersNotification, messageType ='1F'O;
+ sendRouteingInformationForGPRSRequest, messageType = '20'O;
+ sendRouteingInformationForGPRSResponse, messageType = '21'O;
+ failureReportRequest, messageType = '22'O;
+ failureReportResponse, messageType = '23'O;
+ noteMS_GPRSPresentRequest, messageType = '24'O;
+ noteMS_GPRSPresentResponse, messageType = '25'O;
+ identificationRequest, messageType = '30'O;
+ identificationResponse, messageType = '31'O;
+ sgsn_ContextRequest, messageType = '32'O;
+ sgsn_ContextResponse, messageType = '33'O;
+ sgsn_ContextAcknowledge, messageType = '34'O;
+ forwardRelocationRequest, messageType = '35'O;
+ forwardRelocationResponse, messageType = '36'O;
+ forwardRelocationComplete, messageType = '37'O;
+ relocationCancelRequest, messageType = '38'O;
+ relocationCancelResponse, messageType = '39'O;
+ forwardSRNSContext, messageType = '3A'O;
+ forwardRelocationCompleteAcknowledge, messageType = '3B'O;
+ forwardSRNSContextAcknowledge, messageType = '3C'O;
+ uERegistrationQueryRequest, messageType = '3D'O;
+ uERegistrationQueryResponse, messageType = '3F'O;
+ ranInformationRelay, messageType = '46'O;
+ mBMSNotificationRequest, messageType = '60'O;
+ mBMSNotificationResponse, messageType = '61'O;
+ mBMSNotificationRejectRequest, messageType = '62'O;
+ mBMSNotificationRejectResponse, messageType = '63'O;
+ createMBMSContextRequest, messageType = '64'O;
+ createMBMSContextResponse, messageType = '65'O;
+ updateMBMSContextRequest, messageType = '66'O;
+ updateMBMSContextResponse, messageType = '67'O;
+ deleteMBMSContextRequest, messageType = '68'O;
+ deleteMBMSContextResponse, messageType = '69'O;
+ mBMSRegistrationRequest, messageType = '70'O;
+ mBMSRegistrationResponse, messageType = '71'O;
+ mBMSDeRegistrationRequest, messageType = '72'O;
+ mBMSDeRegistrationResponse, messageType = '73'O;
+ mBMSSessionStartRequest, messageType = '74'O;
+ mBMSSessionStartResponse, messageType = '75'O;
+ mBMSSessionStopRequest, messageType = '76'O;
+ mBMSSessionStopResponse, messageType = '77'O;
+ mBMSSessionUpdateRequest, messageType = '78'O;
+ mBMSSessionUpdateResponse, messageType = '79'O;
+ mS_InfoChangeNotificationRequest, messageType = '80'O;
+ mS_InfoChangeNotificationResponse, messageType = '81'O
+ )";
+};
+
+type record GTPC_Header_optional_part {
+ OCT2 sequenceNumber,
+ OCT1 npduNumber,
+ OCT1 nextExtHeader,
+ GTPC_ExtensionHeader_List gTPC_extensionHeader_List optional
+}
+
+type record of GTPC_ExtensionHeader GTPC_ExtensionHeader_List;
+
+type record GTPC_ExtensionHeader {
+ integer lengthfield,
+ octetstring content,
+ octetstring nextExtHeader length(1)
+} with { variant (lengthfield) "LENGTHTO(lengthfield,content,nextExtHeader)";
+ variant (lengthfield) "UNIT(32)";
+};
+
+}//end of module
+with {
+extension "version R2A"
+encode "RAW"
+}
+
diff --git a/src/GTPU_EncDec.cc b/src/GTPU_EncDec.cc
new file mode 100644
index 0000000..703f2b1
--- /dev/null
+++ b/src/GTPU_EncDec.cc
@@ -0,0 +1,118 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: GTPU_EncDec.cc
+// Rev: R2A
+// Prodnr: CNL 113 843
+// Contact: http://ttcn.ericsson.se
+// Reference: 3GPP TS 29.060 v13.5.0
+
+#include "GTPU_Types.hh"
+
+namespace GTPU__Types {
+
+// find the length of the optional part and decode optional part into OPT_PART
+int find_optpart_length(const unsigned char * opt_part_ptr,GTPU__Header__optional__part& OPT_PART)// pointer to opt part start
+{
+ int opt_part_length = 4; // mandatory minimum length of opt_part
+ OPT_PART.sequenceNumber() = OCTETSTRING(2,opt_part_ptr);
+ OPT_PART.npduNumber() = OCTETSTRING(1,opt_part_ptr+2);
+ OPT_PART.nextExtHeader() = OCTETSTRING(1,opt_part_ptr+3);
+ OPT_PART.gTPU__extensionHeader__List() = OMIT_VALUE;
+
+ int i = 0;
+ bool opt_part_end = false;
+ while(!opt_part_end)
+ {
+ if (opt_part_ptr[opt_part_length-1] != 0x00) // 0x00 means end of optional part
+ {
+ unsigned char lengthfield = opt_part_ptr[opt_part_length];
+
+ OPT_PART.gTPU__extensionHeader__List()()[i].lengthfield() = lengthfield;
+ OPT_PART.gTPU__extensionHeader__List()()[i].content() =
+ OCTETSTRING(4*lengthfield-2,opt_part_ptr + opt_part_length +1);
+ OPT_PART.gTPU__extensionHeader__List()()[i].nextExtHeader() =
+ OCTETSTRING(1,opt_part_ptr + opt_part_length + 4*lengthfield - 1);
+
+ opt_part_length = opt_part_length + 4*lengthfield;
+ i++;
+ }
+ else
+ {opt_part_end = true;}
+ }
+
+ return opt_part_length;
+}
+
+//////////////////////////////////
+// Decoding function for GTPC__DialoguePDU
+//////////////////////////////////
+PDU__GTPU dec__PDU__GTPU(const OCTETSTRING& udp__pdu)
+{
+ TTCN_Buffer buf;
+ PDU__GTPU pdu;
+
+ const unsigned char *gtpu_message = (const unsigned char *) udp__pdu;
+
+ int opt_part_length = 0;
+ if ( gtpu_message[0] & 0x07 ) // opt_part is present
+ {
+ GTPU__Header__optional__part OPT_PART;
+
+ // find the length of the optional part and decode optional part into OPT_PART
+ opt_part_length = find_optpart_length(gtpu_message+8,OPT_PART);
+ if( ((gtpu_message[2] << 8) + gtpu_message[3] - opt_part_length) < 0 )
+ {TTCN_error("Decoding error, lengthf field is shorter that decoded length of opt_part");};
+
+ // build PDU without optional part
+ unsigned int gtpu_IEs_length = (gtpu_message[2] << 8) + gtpu_message[3] - opt_part_length;
+ unsigned char gtpuBuf[8 + gtpu_IEs_length];
+ memcpy(gtpuBuf,gtpu_message,8);
+ memcpy(gtpuBuf+8,gtpu_message+8+opt_part_length,gtpu_IEs_length);
+
+ // substitute dummy bits (indicating there is no optional part)
+ gtpuBuf[0] = gtpuBuf[0] & 0xf8;
+
+ // substitute dummy length (not including optional part)
+ gtpuBuf[2] = (gtpu_IEs_length & 0xff00) >> 8;
+ gtpuBuf[3] = gtpu_IEs_length & 0xff;
+
+ // RAW decoding
+ buf.put_s(8 + gtpu_IEs_length,gtpuBuf);
+ pdu.decode(PDU__GTPU_descr_, buf, TTCN_EncDec::CT_RAW);
+ buf.clear();
+
+ // put back the original values
+ unsigned char pn = gtpu_message[0] & 0x01;
+ pdu.pn__bit() = BITSTRING(1,&pn);
+
+ unsigned char s = (gtpu_message[0] & 0x02) >> 1;
+ pdu.s__bit() = BITSTRING(1,&s);
+
+ unsigned char e = (gtpu_message[0] & 0x04) >> 2;
+ pdu.e__bit() = BITSTRING(1,&e);
+
+ pdu.lengthf() = (gtpu_message[2] << 8) + gtpu_message[3];
+
+ pdu.opt__part() = OPT_PART;
+
+ return pdu;
+ }
+ else // opt_part is not present
+ {
+ buf.put_os(udp__pdu);
+ pdu.decode(PDU__GTPU_descr_, buf, TTCN_EncDec::CT_RAW);
+ buf.clear();
+ return pdu;
+ }
+} // end of function
+
+
+}//namespace
diff --git a/src/GTPU_Types.ttcn b/src/GTPU_Types.ttcn
new file mode 100644
index 0000000..6b3879a
--- /dev/null
+++ b/src/GTPU_Types.ttcn
@@ -0,0 +1,188 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: GTPU_Types.ttcn
+// Rev: R2A
+// 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 R2A"
+encode "RAW"
+}
+