First code commit
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..3534f2f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,277 @@
+Eclipse Public License - v 2.0
+
+ THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a) in the case of the initial Contributor, the initial content
+ Distributed under this Agreement, and
+
+ b) in the case of each subsequent Contributor:
+ i) changes to the Program, and
+ ii) additions to the Program;
+ where such changes and/or additions to the Program originate from
+ and are Distributed by that particular Contributor. A Contribution
+ "originates" from a Contributor if it was added to the Program by
+ such Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+
+"Contributor" means any person or entity that Distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which
+are necessarily infringed by the use or sale of its Contribution alone
+or when combined with the Program.
+
+"Program" means the Contributions Distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement
+or any Secondary License (as applicable), including Contributors.
+
+"Derivative Works" shall mean any work, whether in Source Code or other
+form, that is based on (or derived from) the Program and for which the
+editorial revisions, annotations, elaborations, or other modifications
+represent, as a whole, an original work of authorship.
+
+"Modified Works" shall mean any work in Source Code or other form that
+results from an addition to, deletion from, or modification of the
+contents of the Program, including, for purposes of clarity any new file
+in Source Code form that contains any contents of the Program. Modified
+Works shall not include works that contain only declarations,
+interfaces, types, classes, structures, or files of the Program solely
+in each case in order to link to, bind by name, or subclass the Program
+or Modified Works thereof.
+
+"Distribute" means the acts of a) distributing or b) making available
+in any manner that enables the transfer of a copy.
+
+"Source Code" means the form of a Program preferred for making
+modifications, including but not limited to software source code,
+documentation source, and configuration files.
+
+"Secondary License" means either the GNU General Public License,
+Version 2.0, or any later versions of that license, including any
+exceptions or additional permissions as identified by the initial
+Contributor.
+
+2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, Distribute and sublicense the Contribution of such
+ Contributor, if any, and such Derivative Works.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in Source Code or other form. This patent license shall
+ apply to the combination of the Contribution and the Program if, at
+ the time the Contribution is added by the Contributor, such addition
+ of the Contribution causes such combination to be covered by the
+ Licensed Patents. The patent license shall not apply to any other
+ combinations which include the Contribution. No hardware per se is
+ licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the
+ rights and licenses granted hereunder, each Recipient hereby
+ assumes sole responsibility to secure any other intellectual
+ property rights needed, if any. For example, if a third party
+ patent license is required to allow Recipient to Distribute the
+ Program, it is Recipient's responsibility to acquire that license
+ before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has
+ sufficient copyright rights in its Contribution, if any, to grant
+ the copyright license set forth in this Agreement.
+
+ e) Notwithstanding the terms of any Secondary License, no
+ Contributor makes additional grants to any Recipient (other than
+ those set forth in this Agreement) as a result of such Recipient's
+ receipt of the Program under the terms of a Secondary License
+ (if permitted under the terms of Section 3).
+
+3. REQUIREMENTS
+
+3.1 If a Contributor Distributes the Program in any form, then:
+
+ a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ i) effectively disclaims on behalf of all other Contributors all
+ warranties and conditions, express and implied, including
+ warranties or conditions of title and non-infringement, and
+ implied warranties or conditions of merchantability and fitness
+ for a particular purpose;
+
+ ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special,
+ incidental and consequential damages, such as lost profits;
+
+ iii) does not attempt to limit or alter the recipients' rights
+ in the Source Code under section 3.2; and
+
+ iv) requires any subsequent distribution of the Program by any
+ party to be under a license that satisfies the requirements
+ of this section 3.
+
+3.2 When the Program is Distributed as Source Code:
+
+ a) it must be made available under this Agreement, or if the
+ Program (i) is combined with other material in a separate file or
+ files made available under a Secondary License, and (ii) the initial
+ Contributor attached to the Source Code the notice described in
+ Exhibit A of this Agreement, then the Program may be made available
+ under the terms of such Secondary Licenses, and
+
+ b) a copy of this Agreement must be included with each copy of
+ the Program.
+
+3.3 Contributors may not remove or alter any copyright, patent,
+trademark, attribution notices, disclaimers of warranty, or limitations
+of liability ("notices") contained within the Program from any copy of
+the Program which they Distribute, provided that Contributors may add
+their own appropriate notices.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While this
+license is intended to facilitate the commercial use of the Program,
+the Contributor who includes the Program in a commercial product
+offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes
+the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every
+other Contributor ("Indemnified Contributor") against any losses,
+damages and costs (collectively "Losses") arising from claims, lawsuits
+and other legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program
+in a commercial product offering. The obligations in this section do not
+apply to any claims or Losses relating to any actual or alleged
+intellectual property infringement. In order to qualify, an Indemnified
+Contributor must: a) promptly notify the Commercial Contributor in
+writing of such claim, and b) allow the Commercial Contributor to control,
+and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may
+participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those performance
+claims and warranties, and if a court requires any other Contributor to
+pay any damages as a result, the Commercial Contributor must pay
+those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
+BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
+TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
+PURPOSE. Each Recipient is solely responsible for determining the
+appropriateness of using and distributing the Program and assumes all
+risks associated with its exercise of rights under this Agreement,
+including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs
+or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
+SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other software
+or hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably practicable.
+However, Recipient's obligations under this Agreement and any licenses
+granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and
+may only be modified in the following manner. The Agreement Steward
+reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. The Eclipse Foundation
+is the initial Agreement Steward. The Eclipse Foundation may assign the
+responsibility to serve as the Agreement Steward to a suitable separate
+entity. Each new version of the Agreement will be given a distinguishing
+version number. The Program (including Contributions) may always be
+Distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is published,
+Contributor may elect to Distribute the Program (including its
+Contributions) under the new version.
+
+Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+receives no rights or licenses to the intellectual property of any
+Contributor under this Agreement, whether expressly, by implication,
+estoppel or otherwise. All rights in the Program not expressly granted
+under this Agreement are reserved. Nothing in this Agreement is intended
+to be enforceable by any entity that is not a Contributor or Recipient.
+No third-party beneficiary rights are created under this Agreement.
+
+Exhibit A - Form of Secondary Licenses Notice
+
+"This Source Code may also be made available under the following
+Secondary Licenses when the conditions for such availability set forth
+in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+version(s), and exceptions or additional permissions here}."
+
+ Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+
+ If it is not possible or desirable to put the notice in a particular
+ file, then You may include the notice in a location (such as a LICENSE
+ file in a relevant directory) where a recipient would be likely to
+ look for such a notice.
+
+ You may add additional accurate notices of copyright ownership.
\ No newline at end of file
diff --git a/PFCP_v15.1.0_CNL113875.tpd b/PFCP_v15.1.0_CNL113875.tpd
new file mode 100644
index 0000000..0c281d3
--- /dev/null
+++ b/PFCP_v15.1.0_CNL113875.tpd
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>PFCP_v15.1.0_CNL113875</ProjectName>
+ <ReferencedProjects>
+ <ReferencedProject name="ProtocolModules_Common" projectLocationURI="../COMMON/ProtocolModules_Common.tpd"/>
+ </ReferencedProjects>
+ <Files>
+ <FileResource projectRelativePath="PFCP_Types.ttcn" relativeURI="src/PFCP_Types.ttcn"/>
+ </Files>
+ <ActiveConfiguration>Default</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/PFCP_v15.1.0_CNL113875</targetExecutable>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ </Configurations>
+</TITAN_Project_File_Information>
diff --git a/doc/PFCP_v15.1.0_CNL113875_1551.doc b/doc/PFCP_v15.1.0_CNL113875_1551.doc
new file mode 100644
index 0000000..d5f05b1
--- /dev/null
+++ b/doc/PFCP_v15.1.0_CNL113875_1551.doc
Binary files differ
diff --git a/doc/PFCP_v15.1.0_CNL113875_PRI.doc b/doc/PFCP_v15.1.0_CNL113875_PRI.doc
new file mode 100644
index 0000000..a49ac68
--- /dev/null
+++ b/doc/PFCP_v15.1.0_CNL113875_PRI.doc
Binary files differ
diff --git a/src/PFCP_Types.ttcn b/src/PFCP_Types.ttcn
new file mode 100644
index 0000000..9d04290
--- /dev/null
+++ b/src/PFCP_Types.ttcn
@@ -0,0 +1,2294 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2000-2018 Ericsson Telecom AB
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v2.0
+// which accompanies this distribution, and is available at
+// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: PFCP_Types.ttcn
+// Description: PFCP protocol module
+// Rev: <RnXnn>
+// Prodnr: CNL 113 875
+// Contact: http://ttcn.ericsson.se
+// Reference: 3GPP TS 29.244 v15.1.0
+//
+
+module PFCP_Types{
+
+import from General_Types all;
+
+external function enc_PDU_PFCP(in PDU_PFCP pdu) return octetstring
+with { extension "prototype(convert)" extension "encode(RAW)" }
+
+external function dec_PDU_PFCP(in octetstring stream) return PDU_PFCP
+with { extension "prototype(convert)" extension "decode(RAW)" }
+
+external function enc_PDU_PFCP_fast(in PDU_PFCP pdu, out octetstring stream)
+with { extension "prototype(fast) encode(RAW)" }
+
+external function dec_PDU_PFCP_backtrack(in octetstring stream, out PDU_PFCP pdu) return integer
+with { extension "prototype(backtrack) decode(RAW)" }
+
+
+// Information Elements
+
+// 8.2.1 Cause
+type record Cause {
+ LIN2_BO_LAST elementIdentifier(19),
+ LIN2_BO_LAST lengthIndicator,
+ OCT1 causeValue
+} with {
+ variant "PRESENCE (elementIdentifier = 19; )"
+ variant (lengthIndicator) "LENGTHTO(causeValue )"
+}
+
+//8.2.2 Source Interface
+type record Source_Interface {
+ LIN2_BO_LAST elementIdentifier(20),
+ LIN2_BO_LAST lengthIndicator,
+ INT4b interfacevalue,
+ BIT4 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 20; )"
+ variant (lengthIndicator) "LENGTHTO(interfacevalue, spare)"
+}
+
+// 8.2.3 F-TEID
+type record F_TEID {
+ LIN2_BO_LAST elementIdentifier(21),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 v4,
+ BIT1 v6,
+ BIT1 ch,
+ BIT1 chid,
+ BIT4 spare,
+ OCT4 teid optional,
+ OCT4 ipv4_address optional,
+ OCT16 ipv6_address optional,
+ OCT1 choose_id optional
+} with {
+ variant (ipv4_address) "PRESENCE (v4 = '1'B )"
+ variant (ipv6_address) "PRESENCE (v6 = '1'B )"
+ variant (choose_id) "PRESENCE (chid = '1'B )"
+ variant "PRESENCE (elementIdentifier = 21; )"
+ variant (lengthIndicator) "LENGTHTO(v4,v6,ch,chid,spare,teid,ipv4_address,ipv6_address,choose_id)"
+}
+
+// 8.2.4 PDN Instance
+type Network_Instance PDN_Instance
+type record Network_Instance {
+ LIN2_BO_LAST elementIdentifier(22),
+ LIN2_BO_LAST lengthIndicator,
+ octetstring pdn_instance
+} with {
+ variant "PRESENCE (elementIdentifier = 22; )"
+ variant (lengthIndicator) "LENGTHTO(pdn_instance )"
+}
+
+// 8.2.5 SDF Filter
+type record SDF_Filter {
+ LIN2_BO_LAST elementIdentifier(23),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 fd,
+ BIT1 ttc,
+ BIT1 spi,
+ BIT1 fl,
+ BIT1 bid,
+ BIT11 spare,
+ LIN2_BO_LAST lengthFlowDesc optional,
+ octetstring flow_description optional,
+ OCT2 ToS_Traffic_Class optional,
+ OCT4 security_parameter_index optional,
+ OCT3 flow_label optional,
+ LIN4_BO_LAST SDF_filter_id optional
+} with {
+ variant "PRESENCE (elementIdentifier = 23; )"
+ variant (lengthFlowDesc) "PRESENCE (fd = '1'B )"
+ variant (flow_description) "PRESENCE (fd = '1'B )"
+ variant (ToS_Traffic_Class) "PRESENCE (ttc = '1'B )"
+ variant (SDF_filter_id) "PRESENCE (bid = '1'B )"
+ variant (security_parameter_index) "PRESENCE (spi = '1'B )"
+ variant (flow_label) "PRESENCE (fl = '1'B )"
+ variant (lengthFlowDesc) "LENGTHTO(flow_description)"
+ variant (lengthIndicator) "LENGTHTO(fd,ttc,spi,fl,bid,spare,lengthFlowDesc,flow_description,ToS_Traffic_Class,security_parameter_index,flow_label, SDF_filter_id)"
+}
+
+type record of SDF_Filter SDF_Filter_list;
+
+// 8.2.6 Application ID
+type record Application_ID {
+ LIN2_BO_LAST elementIdentifier(24),
+ LIN2_BO_LAST lengthIndicator,
+ octetstring application_id
+} with {
+ variant "PRESENCE (elementIdentifier = 24; )"
+ variant (lengthIndicator) "LENGTHTO(application_id )"
+}
+
+// 8.2.7 Gate Status
+type record Gate_Status {
+ LIN2_BO_LAST elementIdentifier(25),
+ LIN2_BO_LAST lengthIndicator,
+ INT2b dl_gate,
+ INT2b ul_gate,
+ BIT4 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 25; )"
+ variant (lengthIndicator) "LENGTHTO(dl_gate,ul_gate,spare )"
+}
+
+// 8.2.8 MBR
+type record MBR {
+ LIN2_BO_LAST elementIdentifier(26),
+ LIN2_BO_LAST lengthIndicator,
+ OCT5 ul_mbr,
+ OCT5 dl_mbr
+} with {
+ variant "PRESENCE (elementIdentifier = 26; )"
+ variant (lengthIndicator) "LENGTHTO(ul_mbr,dl_mbr )"
+}
+
+// 8.2.9 GBR
+type record GBR {
+ LIN2_BO_LAST elementIdentifier(27),
+ LIN2_BO_LAST lengthIndicator,
+ OCT5 ul_gbr,
+ OCT5 dl_gbr
+} with {
+ variant "PRESENCE (elementIdentifier = 27; )"
+ variant (lengthIndicator) "LENGTHTO(ul_gbr,dl_gbr )"
+}
+
+
+// 8.2.10 QER Correlation ID
+type record QER_Correlation_ID {
+ LIN2_BO_LAST elementIdentifier(28),
+ LIN2_BO_LAST lengthIndicator,
+ octetstring qer
+} with {
+ variant "PRESENCE (elementIdentifier = 28; )"
+ variant (lengthIndicator) "LENGTHTO(qer )"
+}
+
+// 8.2.11 Precedence
+type record Precedence {
+ LIN2_BO_LAST elementIdentifier(29),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST precedence_value
+} with {
+ variant "PRESENCE (elementIdentifier = 29; )"
+ variant (lengthIndicator) "LENGTHTO(precedence_value )"
+}
+
+// 8.2.12 DL Transport Level Marking
+type record DL_Transport_Level_Marking {
+ LIN2_BO_LAST elementIdentifier(30),
+ LIN2_BO_LAST lengthIndicator,
+ OCT2 ToS_traffic_class
+} with {
+ variant "PRESENCE (elementIdentifier = 30; )"
+ variant (lengthIndicator) "LENGTHTO( ToS_traffic_class)"
+}
+
+// 8.2.13 Volume Threshold
+type record Volume_Threshold {
+ LIN2_BO_LAST elementIdentifier(31),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 tovol,
+ BIT1 ulvol,
+ BIT1 dlvol,
+ BIT5 spare,
+ LIN8_BO_LAST total_volume optional,
+ LIN8_BO_LAST uplink_volume optional,
+ LIN8_BO_LAST downlink_volume optional
+} with {
+ variant "PRESENCE (elementIdentifier = 31; )"
+ variant (total_volume) "PRESENCE ( tovol= '1'B )"
+ variant (uplink_volume) "PRESENCE ( ulvol= '1'B )"
+ variant (downlink_volume) "PRESENCE ( dlvol= '1'B )"
+ variant (lengthIndicator) "LENGTHTO(tovol,ulvol,dlvol,spare,total_volume,uplink_volume,downlink_volume )"
+}
+
+// 8.2.14 Time Threshold
+type record Time_Threshold {
+ LIN2_BO_LAST elementIdentifier(32),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST time_threshold
+} with {
+ variant "PRESENCE (elementIdentifier = 32; )"
+ variant (lengthIndicator) "LENGTHTO(time_threshold )"
+}
+
+// 8.2.15 Monitoring Time
+type record Monitoring_Time {
+ LIN2_BO_LAST elementIdentifier(33),
+ LIN2_BO_LAST lengthIndicator,
+ OCT4 monitoring_time
+} with {
+ variant "PRESENCE (elementIdentifier = 33; )"
+ variant (lengthIndicator) "LENGTHTO(monitoring_time )"
+}
+
+// 8.2.16 Subsequent Volume Threshold
+type record Subsequent_Volume_Threshold {
+ LIN2_BO_LAST elementIdentifier(34),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 tovol,
+ BIT1 ulvol,
+ BIT1 dlvol,
+ BIT5 spare,
+ LIN8_BO_LAST total_volume optional,
+ LIN8_BO_LAST uplink_volume optional,
+ LIN8_BO_LAST downlink_volume optional
+} with {
+ variant "PRESENCE (elementIdentifier = 34; )"
+ variant (total_volume) "PRESENCE ( tovol= '1'B )"
+ variant (uplink_volume) "PRESENCE ( ulvol= '1'B )"
+ variant (downlink_volume) "PRESENCE ( dlvol= '1'B )"
+ variant (lengthIndicator) "LENGTHTO(tovol,ulvol,dlvol,spare,total_volume,uplink_volume,downlink_volume )"
+}
+
+// 8.2.17 Subsequent Time Threshold
+type record Subsequent_Time_Threshold {
+ LIN2_BO_LAST elementIdentifier(35),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST time_threshold
+} with {
+ variant "PRESENCE (elementIdentifier = 35; )"
+ variant (lengthIndicator) "LENGTHTO(time_threshold )"
+}
+
+// 8.2.18 Inactivity Detection Time
+type record Inactivity_Detection_Time {
+ LIN2_BO_LAST elementIdentifier(36),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST inactivity_detection_time
+} with {
+ variant "PRESENCE (elementIdentifier = 36; )"
+ variant (lengthIndicator) "LENGTHTO(inactivity_detection_time )"
+}
+
+// 8.2.19 Reporting Triggers
+type record Reporting_Triggers {
+ LIN2_BO_LAST elementIdentifier(37),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 perio,
+ BIT1 volth,
+ BIT1 timth,
+ BIT1 quhti,
+ BIT1 start_,
+ BIT1 stop_,
+ BIT1 droth,
+ BIT1 liusa,
+ BIT1 volqu,
+ BIT1 timqu,
+ BIT1 envcl,
+ BIT5 spare
+
+} with {
+ variant "PRESENCE (elementIdentifier = 37; )"
+ variant (lengthIndicator) "LENGTHTO( perio,volth,timth,quhti,start_,stop_,droth,liusa,volqu,timqu,envcl,spare)"
+}
+
+// 8.2.20 Redirect Information
+type record Redirect_Information {
+ LIN2_BO_LAST elementIdentifier(38),
+ LIN2_BO_LAST lengthIndicator,
+ INT4b redirect_address_type,
+ LIN2_BO_LAST addresslength,
+ octetstring redirect_server_address
+} with {
+ variant "PRESENCE (elementIdentifier = 38; )"
+ variant (addresslength) "LENGTHTO(redirect_server_address)"
+ variant (lengthIndicator) "LENGTHTO( redirect_address_type,addresslength,redirect_server_address)"
+}
+
+// 8.2.21 Report Type
+type record Report_Type {
+ LIN2_BO_LAST elementIdentifier(39),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 dldr,
+ BIT1 usar,
+ BIT1 erir,
+ BIT1 upir,
+ BIT4 spare
+
+} with {
+ variant "PRESENCE (elementIdentifier = 39; )"
+ variant (lengthIndicator) "LENGTHTO( dldr,usar,erir,upir,spare)"
+}
+
+//8.2.22 Offending IE
+type record Offending_IE {
+ LIN2_BO_LAST elementIdentifier(40),
+ LIN2_BO_LAST lengthIndicator,
+ LIN2_BO_LAST offendingIE
+} with {
+ variant "PRESENCE (elementIdentifier = 40; )"
+ variant (lengthIndicator) "LENGTHTO( offendingIE)"
+}
+
+// 8.2.23 Forwarding Policy
+type record Forwarding_Policy {
+ LIN2_BO_LAST elementIdentifier(41),
+ LIN2_BO_LAST lengthIndicator,
+ LIN1 policyIdlength,
+ octetstring forwarding_policy_id length(0..255)
+} with {
+ variant "PRESENCE (elementIdentifier = 41; )"
+ variant (policyIdlength) "LENGTHTO( forwarding_policy_id)"
+ variant (lengthIndicator) "LENGTHTO( policyIdlength,forwarding_policy_id)"
+}
+
+// 8.2.24 Destination Interface
+type record Destination_Interface {
+ LIN2_BO_LAST elementIdentifier(42),
+ LIN2_BO_LAST lengthIndicator,
+ INT4b interface_value,
+ BIT4 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 42; )"
+ variant (lengthIndicator) "LENGTHTO(interface_value,spare )"
+}
+
+// 8.2.25 UP Function Features
+type record UP_Function_Features {
+ LIN2_BO_LAST elementIdentifier(43),
+ LIN2_BO_LAST lengthIndicator,
+ BIT8 oct5,
+ BIT8 oct6
+} with {
+ variant "PRESENCE (elementIdentifier = 43; )"
+ variant (lengthIndicator) "LENGTHTO(oct5,oct6 )"
+}
+
+// 8.2.26 Apply Action
+type record Apply_Action {
+ LIN2_BO_LAST elementIdentifier(44),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 drop,
+ BIT1 forw,
+ BIT1 buff,
+ BIT1 nocp,
+ BIT1 dupl,
+ BIT3 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 44; )"
+ variant (lengthIndicator) "LENGTHTO(drop,forw,buff,nocp,dupl,spare)"
+}
+
+// 8.2.27 Downlink Data Service
+type record Downlink_Data_Service_Information {
+ LIN2_BO_LAST elementIdentifier(45),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 ppi,
+ BIT7 spare,
+ BIT6 ppi_value optional,
+ BIT2 spare2 optional
+} with {
+ variant "PRESENCE (elementIdentifier = 45; )"
+ variant (ppi_value) "PRESENCE(ppi = '1'B)"
+ variant (spare) "PRESENCE(ppi = '1'B)"
+ variant (lengthIndicator) "LENGTHTO(ppi,spare,ppi_value,spare2)"
+}
+
+// 8.2.28 Downlink Data Notification Delay
+type record Downlink_Data_Notification_Delay {
+ LIN2_BO_LAST elementIdentifier(46),
+ LIN2_BO_LAST lengthIndicator,
+ INT1 delay_value
+} with {
+ variant "PRESENCE (elementIdentifier = 46; )"
+ variant (lengthIndicator) "LENGTHTO(delay_value)"
+}
+
+// 8.2.29 DL Buffering Duration
+type record DL_Buffering_Duration {
+ LIN2_BO_LAST elementIdentifier(47),
+ LIN2_BO_LAST lengthIndicator,
+ BIT5 timer_value,
+ BIT3 timer_unit
+} with {
+ variant "PRESENCE (elementIdentifier = 47; )"
+ variant (lengthIndicator) "LENGTHTO(timer_value,timer_unit)"
+}
+
+// 8.2.30 DL Buffering Suggested Packet Count
+type record DL_Buffering_Suggested_Packet_Count {
+ LIN2_BO_LAST elementIdentifier(48),
+ LIN2_BO_LAST lengthIndicator,
+ octetstring packet_count_value
+} with {
+ variant "PRESENCE (elementIdentifier = 48; )"
+ variant (lengthIndicator) "LENGTHTO(packet_count_value)"
+}
+
+// 8.2.31 PFCPSMReq-Flags
+type record PFCPSMReq_Flags {
+ LIN2_BO_LAST elementIdentifier(49),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 drobu,
+ BIT1 sndem,
+ BIT1 qaurr,
+ BIT5 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 49; )"
+ variant (lengthIndicator) "LENGTHTO(drobu,sndem,qaurr,spare)"
+}
+
+// 8.2.32 PFCPSMRsp-Flags
+type record PFCPSMRsp_Flags {
+ LIN2_BO_LAST elementIdentifier(50),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 drobu,
+ BIT7 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 50; )"
+ variant (lengthIndicator) "LENGTHTO(drobu,spare)"
+}
+
+// 8.2.33 Sequence Number
+type record Sequence_Number {
+ LIN2_BO_LAST elementIdentifier(52),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST sequence_number
+} with {
+ variant "PRESENCE (elementIdentifier = 52; )"
+ variant (lengthIndicator) "LENGTHTO(sequence_number)"
+}
+
+// 8.2.34 Metric
+type record Metric {
+ LIN2_BO_LAST elementIdentifier(53),
+ LIN2_BO_LAST lengthIndicator,
+ OCT1 metric
+} with {
+ variant "PRESENCE (elementIdentifier = 53; )"
+ variant (lengthIndicator) "LENGTHTO(metric)"
+}
+
+// 8.2.35 Timer
+type record Timer_IE {
+ LIN2_BO_LAST elementIdentifier(55),
+ LIN2_BO_LAST lengthIndicator,
+ BIT5 timer_value,
+ BIT3 timer_unit
+} with {
+ variant "PRESENCE (elementIdentifier = 55; )"
+ variant (lengthIndicator) "LENGTHTO(timer_value,timer_unit)"
+}
+
+// 8.2.36 PDR ID
+type record PDR_ID {
+ LIN2_BO_LAST elementIdentifier(56),
+ LIN2_BO_LAST lengthIndicator,
+ OCT2 rule_id
+} with {
+ variant "PRESENCE (elementIdentifier = 56; )"
+ variant (lengthIndicator) "LENGTHTO(rule_id)"
+}
+
+// 8.2.37 F-SEID
+type record F_SEID {
+ LIN2_BO_LAST elementIdentifier(57),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 v6,
+ BIT1 v4,
+ BIT6 spare,
+ OCT8 seid,
+ OCT4 ipv4_address optional,
+ OCT16 ipv6_address optional
+} with {
+ variant (ipv4_address) "PRESENCE (v4 = '1'B )"
+ variant (ipv6_address) "PRESENCE (v6 = '1'B )"
+ variant "PRESENCE (elementIdentifier = 57; )"
+ variant (lengthIndicator) "LENGTHTO(v4,v6,spare,seid,ipv4_address,ipv6_address)"
+}
+
+// 8.2.38 Node ID
+type record Node_ID {
+ LIN2_BO_LAST elementIdentifier(60),
+ LIN2_BO_LAST lengthIndicator,
+ INT4b node_id_type,
+ BIT4 spare,
+ octetstring node_id_value
+} with {
+ variant "PRESENCE (elementIdentifier = 60; )"
+ variant (lengthIndicator) "LENGTHTO(node_id_type,spare,node_id_value)"
+}
+
+// 8.2.39 PFD Contents
+type record PFD_Contents {
+ LIN2_BO_LAST elementIdentifier(61),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 fd,
+ BIT1 url_flag,
+ BIT1 dn,
+ BIT1 cp,
+ BIT12 spare,
+ LIN2_BO_LAST lengthFlowDesc optional,
+ octetstring flow_description optional,
+ LIN2_BO_LAST lengthurl optional,
+ octetstring url optional,
+ LIN2_BO_LAST lengthdomain_name optional,
+ octetstring domain_name optional,
+ LIN2_BO_LAST lengthcustom_pfd optional,
+ octetstring custom_pfd optional
+} with {
+ variant "PRESENCE (elementIdentifier = 61; )"
+
+ variant (lengthFlowDesc) "PRESENCE (fd = '1'B )"
+ variant (flow_description) "PRESENCE (fd = '1'B )"
+ variant (lengthFlowDesc) "LENGTHTO(flow_description)"
+
+ variant (lengthurl) "PRESENCE (url_flag = '1'B )"
+ variant (url) "PRESENCE (url_flag = '1'B )"
+ variant (lengthurl) "LENGTHTO(url)"
+
+ variant (lengthdomain_name) "PRESENCE (dn = '1'B )"
+ variant (domain_name) "PRESENCE (dn = '1'B )"
+ variant (lengthdomain_name) "LENGTHTO(domain_name)"
+
+ variant (lengthcustom_pfd) "PRESENCE (cp = '1'B )"
+ variant (custom_pfd) "PRESENCE (cp = '1'B )"
+ variant (lengthcustom_pfd) "LENGTHTO(custom_pfd)"
+
+ variant (lengthIndicator) "LENGTHTO(fd,url_flag,dn,cp,spare,lengthFlowDesc,flow_description,lengthurl,url,lengthdomain_name,domain_name,lengthcustom_pfd,custom_pfd )"
+}
+
+// 8.2.40 Measurement Method
+type record Measurement_Method {
+ LIN2_BO_LAST elementIdentifier(62),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 durat,
+ BIT1 volum,
+ BIT1 event,
+ BIT5 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 62; )"
+ variant (lengthIndicator) "LENGTHTO(durat,volum,event,spare)"
+}
+
+// 8.2.41 Usage Report Trigger
+type record Usage_Report_Trigger {
+ LIN2_BO_LAST elementIdentifier(63),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 perio,
+ BIT1 volth,
+ BIT1 timth,
+ BIT1 quhti,
+ BIT1 start_,
+ BIT1 stop_,
+ BIT1 droth,
+ BIT1 immer,
+ BIT1 volqu,
+ BIT1 timqu,
+ BIT1 liusa,
+ BIT1 termr,
+ BIT1 monit,
+ BIT1 envcl,
+ BIT2 spare
+
+} with {
+ variant "PRESENCE (elementIdentifier = 63; )"
+ variant (lengthIndicator) "LENGTHTO( perio,volth,timth,quhti,start_,stop_,droth,immer,volqu,timqu,liusa,termr,monit,envcl,spare)"
+}
+
+
+// 8.2.42 Measurement Period
+type record Measurement_Period {
+ LIN2_BO_LAST elementIdentifier(64),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST period
+} with {
+ variant "PRESENCE (elementIdentifier = 64; )"
+ variant (lengthIndicator) "LENGTHTO(period)"
+}
+
+// 8.2.43 Fully qualified PDN Connection Set Identifier (FQ-CSID)
+type record FQ_CSID {
+ LIN2_BO_LAST elementIdentifier(65),
+ LIN2_BO_LAST lengthIndicator,
+ INT4b num_of_CSIDs,
+ INT4b node_id_type,
+ union {
+ OCT4 ipv4,
+ OCT16 ipv6,
+ OCT4 addr
+ } node_address,
+ record of OCT2 pdn_id_list
+} with {
+ variant "PRESENCE (elementIdentifier = 65; )"
+ variant (node_address) "CROSSTAG(ipv4,node_id_type=0; ipv6,node_id_type=1;addr,node_id_type=2; )"
+ variant (num_of_CSIDs) "LENGTHTO(pdn_id_list),UNIT(elements)"
+ variant (lengthIndicator) "LENGTHTO(num_of_CSIDs,node_id_type,node_address,pdn_id_list)"
+}
+
+type record of FQ_CSID FQ_CSID_list;
+
+// 8.2.44 Volume Measurement
+type record Volume_Measurement {
+ LIN2_BO_LAST elementIdentifier(66),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 tovol,
+ BIT1 ulvol,
+ BIT1 dlvol,
+ BIT5 spare,
+ LIN8_BO_LAST total_volume optional,
+ LIN8_BO_LAST uplink_volume optional,
+ LIN8_BO_LAST downlink_volume optional
+} with {
+ variant "PRESENCE (elementIdentifier = 66; )"
+ variant (total_volume) "PRESENCE ( tovol= '1'B )"
+ variant (uplink_volume) "PRESENCE ( ulvol= '1'B )"
+ variant (downlink_volume) "PRESENCE ( dlvol= '1'B )"
+ variant (lengthIndicator) "LENGTHTO(tovol,ulvol,dlvol,spare,total_volume,uplink_volume,downlink_volume )"
+}
+
+// 8.2.45 Duration Measurement
+type record Duration_Measurement {
+ LIN2_BO_LAST elementIdentifier(67),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST duration
+} with {
+ variant "PRESENCE (elementIdentifier = 67; )"
+ variant (lengthIndicator) "LENGTHTO(duration )"
+}
+
+// 8.2.46 Time of First Packet
+type record Time_of_First_Packet {
+ LIN2_BO_LAST elementIdentifier(69),
+ LIN2_BO_LAST lengthIndicator,
+ OCT4 time_of_packet
+} with {
+ variant "PRESENCE (elementIdentifier = 69; )"
+ variant (lengthIndicator) "LENGTHTO(time_of_packet )"
+}
+
+// 8.2.47 Time of Last Packet
+type record Time_of_Last_Packet {
+ LIN2_BO_LAST elementIdentifier(70),
+ LIN2_BO_LAST lengthIndicator,
+ OCT4 time_of_packet
+} with {
+ variant "PRESENCE (elementIdentifier = 70; )"
+ variant (lengthIndicator) "LENGTHTO(time_of_packet )"
+}
+
+// 8.2.48 Quota Holding Time
+type record Quota_Holding_Time {
+ LIN2_BO_LAST elementIdentifier(71),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST time_value
+} with {
+ variant "PRESENCE (elementIdentifier = 71; )"
+ variant (lengthIndicator) "LENGTHTO(time_value )"
+}
+
+// 8.2.49 Dropped DL Traffic Threshold
+type record Dropped_DL_Traffic_Threshold {
+ LIN2_BO_LAST elementIdentifier(72),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 dlpa,
+ BIT7 spare,
+ LIN8_BO_LAST packets optional
+} with {
+ variant "PRESENCE (elementIdentifier = 72; )"
+ variant (packets) "PRESENCE (dlpa = '1'B; )"
+ variant (lengthIndicator) "LENGTHTO( dlpa,spare,packets)"
+}
+
+// 8.2.50 Volume Quota
+type record Volume_Quota {
+ LIN2_BO_LAST elementIdentifier(73),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 tovol,
+ BIT1 ulvol,
+ BIT1 dlvol,
+ BIT5 spare,
+ LIN8_BO_LAST total_volume optional,
+ LIN8_BO_LAST uplink_volume optional,
+ LIN8_BO_LAST downlink_volume optional
+} with {
+ variant "PRESENCE (elementIdentifier = 73; )"
+ variant (total_volume) "PRESENCE ( tovol= '1'B )"
+ variant (uplink_volume) "PRESENCE ( ulvol= '1'B )"
+ variant (downlink_volume) "PRESENCE ( dlvol= '1'B )"
+ variant (lengthIndicator) "LENGTHTO(tovol,ulvol,dlvol,spare,total_volume,uplink_volume,downlink_volume )"
+}
+
+// 8.2.51 Time Quota
+type record Time_Quota {
+ LIN2_BO_LAST elementIdentifier(74),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST time_value
+} with {
+ variant "PRESENCE (elementIdentifier = 74; )"
+ variant (lengthIndicator) "LENGTHTO(time_value )"
+}
+
+// 8.2.52 Start Time
+type record Start_Time {
+ LIN2_BO_LAST elementIdentifier(75),
+ LIN2_BO_LAST lengthIndicator,
+ OCT4 start_time
+} with {
+ variant "PRESENCE (elementIdentifier = 75; )"
+ variant (lengthIndicator) "LENGTHTO(start_time )"
+}
+
+// 8.2.53 End Time
+type record End_Time {
+ LIN2_BO_LAST elementIdentifier(76),
+ LIN2_BO_LAST lengthIndicator,
+ OCT4 end_time
+} with {
+ variant "PRESENCE (elementIdentifier = 76; )"
+ variant (lengthIndicator) "LENGTHTO(end_time )"
+}
+
+// 8.2.54 URR ID
+type record URR_ID {
+ LIN2_BO_LAST elementIdentifier(81),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST id_value
+} with {
+ variant "PRESENCE (elementIdentifier = 81; )"
+ variant (lengthIndicator) "LENGTHTO(id_value )"
+}
+
+type record of URR_ID URR_ID_list;
+
+// 8.2.55 Linked URR ID
+type record Linked_URR_ID {
+ LIN2_BO_LAST elementIdentifier(82),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST id_value
+} with {
+ variant "PRESENCE (elementIdentifier = 82; )"
+ variant (lengthIndicator) "LENGTHTO(id_value )"
+}
+
+// 8.2.56 Outer Header Creation
+type record Outer_Header_Creation {
+ LIN2_BO_LAST elementIdentifier(84),
+ LIN2_BO_LAST lengthIndicator,
+ BIT8 ohc_description_oct5,
+ BIT8 ohc_description_oct6,
+ OCT4 teid optional,
+ OCT4 ipv4 optional,
+ OCT16 ipv6 optional,
+ OCT2 udp_port optional
+} with {
+ variant "PRESENCE (elementIdentifier = 84; )"
+ variant (teid) "PRESENCE({ohc_description_oct5 = '00000001'B, ohc_description_oct5 = '00000010'B, ohc_description_oct5 = '00000011'B})"
+ variant (ipv4) "PRESENCE({ohc_description_oct5 = '00000001'B, ohc_description_oct5 = '00000100'B, ohc_description_oct5 = '00000011'B})"
+ variant (ipv6) "PRESENCE({ohc_description_oct5 = '00000010'B, ohc_description_oct5 = '00001000'B, ohc_description_oct5 = '00000011'B})"
+ variant (lengthIndicator) "LENGTHTO(ohc_description_oct5,ohc_description_oct6,teid,ipv4,ipv6,udp_port )"
+}
+
+// 8.2.57 BAR ID
+type record BAR_ID {
+ LIN2_BO_LAST elementIdentifier(88),
+ LIN2_BO_LAST lengthIndicator,
+ OCT1 id_value
+} with {
+ variant "PRESENCE (elementIdentifier = 88; )"
+ variant (lengthIndicator) "LENGTHTO(id_value )"
+}
+
+// 8.2.58 CP Function Features
+type record CP_Function_Features {
+ LIN2_BO_LAST elementIdentifier(89),
+ LIN2_BO_LAST lengthIndicator,
+ OCT1 features
+} with {
+ variant "PRESENCE (elementIdentifier = 89; )"
+ variant (lengthIndicator) "LENGTHTO( features)"
+}
+
+// 8.2.59 Usage Information
+type record Usage_Information {
+ LIN2_BO_LAST elementIdentifier(90),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 bef,
+ BIT1 aft,
+ BIT1 uae,
+ BIT1 ube,
+ BIT4 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 90; )"
+ variant (lengthIndicator) "LENGTHTO(bef,aft,uae,ube,spare)"
+}
+
+// 8.2.60 Application Instance ID
+type record Application_Instance_ID {
+ LIN2_BO_LAST elementIdentifier(91),
+ LIN2_BO_LAST lengthIndicator,
+ octetstring id_value
+} with {
+ variant "PRESENCE (elementIdentifier = 91; )"
+ variant (lengthIndicator) "LENGTHTO(id_value )"
+}
+
+// 8.2.61 Flow Information
+type record Flow_Information {
+ LIN2_BO_LAST elementIdentifier(92),
+ LIN2_BO_LAST lengthIndicator,
+ INT3b flow_direction,
+ BIT5 spare,
+ LIN2_BO_LAST lengthFlowDesc,
+ octetstring flow_description
+} with {
+ variant "PRESENCE (elementIdentifier = 92; )"
+ variant (lengthFlowDesc) "LENGTHTO(flow_description)"
+ variant (lengthIndicator) "LENGTHTO(flow_direction,spare,lengthFlowDesc,flow_description )"
+}
+
+// 8.2.62 UE IP Address
+type record UE_IP_Address {
+ LIN2_BO_LAST elementIdentifier(93),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 v6,
+ BIT1 v4,
+ BIT1 sd,
+ BIT5 spare,
+ OCT4 ipv4_address optional,
+ OCT16 ipv6_address optional
+} with {
+ variant (ipv4_address) "PRESENCE (v4 = '1'B )"
+ variant (ipv6_address) "PRESENCE (v6 = '1'B )"
+ variant "PRESENCE (elementIdentifier = 93; )"
+ variant (lengthIndicator) "LENGTHTO(v4,v6,sd,spare,ipv4_address,ipv6_address)"
+}
+
+// 8.2.63 Packet Rate
+type record Packet_Rate {
+ LIN2_BO_LAST elementIdentifier(94),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 ulpr,
+ BIT1 dlpr,
+ BIT6 spare,
+ BIT3 uplink_time_unit optional,
+ BIT5 spare2 optional,
+ LIN2_BO_LAST max_uplink_rate optional,
+ BIT3 downlink_time_unit optional,
+ BIT5 spare3 optional,
+ LIN2_BO_LAST max_donwlink_rate optional
+} with {
+ variant (uplink_time_unit,spare2,max_uplink_rate) "PRESENCE (ulpr = '1'B )"
+ variant (downlink_time_unit,spare3,max_donwlink_rate) "PRESENCE (dlpr = '1'B )"
+ variant "PRESENCE (elementIdentifier = 94; )"
+ variant (lengthIndicator) "LENGTHTO(ulpr,dlpr,spare,uplink_time_unit,spare2,max_uplink_rate,downlink_time_unit,spare3,max_donwlink_rate)"
+}
+
+// 8.2.64 Outer Header Removal
+type record Outer_Header_Removal {
+ LIN2_BO_LAST elementIdentifier(95),
+ LIN2_BO_LAST lengthIndicator,
+ INT1 ohc_description
+} with {
+ variant "PRESENCE (elementIdentifier = 95; )"
+ variant (lengthIndicator) "LENGTHTO(ohc_description )"
+}
+
+// 8.2.65 Recovery Time Stamp
+type record Recovery_Time_Stamp {
+ LIN2_BO_LAST elementIdentifier(96),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST time_value
+} with {
+ variant "PRESENCE (elementIdentifier = 96; )"
+ variant (lengthIndicator) "LENGTHTO(time_value )"
+}
+
+// 8.2.66 DL Flow Level Marking
+type record DL_Flow_Level_Marking {
+ LIN2_BO_LAST elementIdentifier(97),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 ttc,
+ BIT1 sci,
+ BIT6 spare,
+ OCT2 tos optional,
+ OCT2 sci_val optional
+} with {
+ variant (tos) "PRESENCE (ttc = '1'B )"
+ variant (sci_val) "PRESENCE (sci = '1'B )"
+ variant "PRESENCE (elementIdentifier = 97; )"
+ variant (lengthIndicator) "LENGTHTO(ttc,sci,spare,tos,sci_val)"
+}
+
+// 8.2.67 Header Enrichment
+type record Header_Enrichment {
+ LIN2_BO_LAST elementIdentifier(98),
+ LIN2_BO_LAST lengthIndicator,
+ INT5b header_type,
+ BIT3 spare,
+ INT1 header_name_length,
+ octetstring header_name,
+ INT1 header_val_length,
+ octetstring header_val
+} with {
+ variant "PRESENCE (elementIdentifier = 98; )"
+ variant (header_val_length) "LENGTHTO( header_val)"
+ variant (header_name_length) "LENGTHTO( header_name)"
+ variant (lengthIndicator) "LENGTHTO(header_type,spare,header_name_length,header_name,header_val_length,header_val)"
+}
+
+// 8.2.68 Measurement Information
+type record Measurement_Information {
+ LIN2_BO_LAST elementIdentifier(100),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 mbqe,
+ BIT1 inam,
+ BIT1 radi,
+ BIT5 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 100; )"
+ variant (lengthIndicator) "LENGTHTO(mbqe,inam,radi,spare)"
+}
+
+// 8.2.69 Node Report Type
+type record Node_Report_Type {
+ LIN2_BO_LAST elementIdentifier(101),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 upfr,
+ BIT7 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 101; )"
+ variant (lengthIndicator) "LENGTHTO(upfr,spare)"
+}
+
+// 8.2.70 Remote GTP-U Peer
+type record Remote_GTP_U_Peer {
+ LIN2_BO_LAST elementIdentifier(103),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 v4,
+ BIT1 v6,
+ BIT6 spare,
+ OCT4 ipv4_address optional,
+ OCT16 ipv6_address optional
+} with {
+ variant (ipv4_address) "PRESENCE (v4 = '1'B )"
+ variant (ipv6_address) "PRESENCE (v6 = '1'B )"
+ variant "PRESENCE (elementIdentifier = 103; )"
+ variant (lengthIndicator) "LENGTHTO(v4,v6,spare,ipv4_address,ipv6_address)"
+}
+
+// 8.2.71 UR-SEQN
+type record UR_SEQN {
+ LIN2_BO_LAST elementIdentifier(104),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST ur_seqn
+} with {
+ variant "PRESENCE (elementIdentifier = 104; )"
+ variant (lengthIndicator) "LENGTHTO( ur_seqn)"
+}
+
+// 8.2.72 Activate Predefined Rules
+type record Activate_Predefined_Rules {
+ LIN2_BO_LAST elementIdentifier(106),
+ LIN2_BO_LAST lengthIndicator,
+ octetstring rule_bame
+} with {
+ variant "PRESENCE (elementIdentifier = 106; )"
+ variant (lengthIndicator) "LENGTHTO( rule_bame)"
+}
+
+// 8.2.73 Deactivate Predefined Rules
+type record Deactivate_Predefined_Rules {
+ LIN2_BO_LAST elementIdentifier(107),
+ LIN2_BO_LAST lengthIndicator,
+ octetstring rule_bame
+} with {
+ variant "PRESENCE (elementIdentifier = 107; )"
+ variant (lengthIndicator) "LENGTHTO( rule_bame)"
+}
+
+// 8.2.74 FAR ID
+type record FAR_ID {
+ LIN2_BO_LAST elementIdentifier(108),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST id_value
+} with {
+ variant "PRESENCE (elementIdentifier = 108; )"
+ variant (lengthIndicator) "LENGTHTO(id_value )"
+}
+
+// 8.2.75 QER ID
+type record QER_ID {
+ LIN2_BO_LAST elementIdentifier(109),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST id_value
+} with {
+ variant "PRESENCE (elementIdentifier = 109; )"
+ variant (lengthIndicator) "LENGTHTO(id_value )"
+}
+
+type record of QER_ID QER_ID_list;
+
+// 8.2.76 OCI Flags
+type record OCI_Flags {
+ LIN2_BO_LAST elementIdentifier(110),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 aoci,
+ BIT7 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 110; )"
+ variant (lengthIndicator) "LENGTHTO(aoci,spare)"
+}
+
+// 8.2.77 PFCP Association Release Request
+type record PFCP_Association_Release_Request_IE {
+ LIN2_BO_LAST elementIdentifier(111),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 sarr,
+ BIT7 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 111; )"
+ variant (lengthIndicator) "LENGTHTO(sarr,spare)"
+}
+
+// 8.2.78 Graceful Release Period
+type record Graceful_Release_Period {
+ LIN2_BO_LAST elementIdentifier(112),
+ LIN2_BO_LAST lengthIndicator,
+ BIT5 timer_value,
+ BIT3 timer_unit
+} with {
+ variant "PRESENCE (elementIdentifier = 112; )"
+ variant (lengthIndicator) "LENGTHTO(timer_value,timer_unit)"
+}
+
+// 8.2.79 PDN Type
+type record PDN_Type {
+ LIN2_BO_LAST elementIdentifier(113),
+ LIN2_BO_LAST lengthIndicator,
+ INT3b pdn_type,
+ BIT5 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 113; )"
+ variant (lengthIndicator) "LENGTHTO(pdn_type,spare)"
+}
+
+// 8.2.80 Failed Rule ID
+type record Failed_Rule_ID {
+ LIN2_BO_LAST elementIdentifier(114),
+ LIN2_BO_LAST lengthIndicator,
+ INT5b rule_id_type,
+ BIT3 spare,
+ octetstring rule_id_val
+} with {
+ variant "PRESENCE (elementIdentifier = 114; )"
+ variant (lengthIndicator) "LENGTHTO(rule_id_type,spare,rule_id_val)"
+}
+
+// 8.2.81 Time Quota Mechanism
+type record Time_Quota_Mechanism {
+ LIN2_BO_LAST elementIdentifier(115),
+ LIN2_BO_LAST lengthIndicator,
+ INT2b btit,
+ BIT6 spare,
+ LIN4_BO_LAST base_time_interval
+} with {
+ variant "PRESENCE (elementIdentifier = 115; )"
+ variant (lengthIndicator) "LENGTHTO(btit,spare,base_time_interval)"
+}
+
+// 8.2.82 UP_IP_Resource_Information
+type record UP_IP_Resource_Information {
+ LIN2_BO_LAST elementIdentifier(116),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 v4,
+ BIT1 v6,
+ INT3b teidri,
+ BIT1 assoni,
+ BIT2 spare,
+ OCT1 teid_range optional,
+ OCT4 ipv4_address optional,
+ OCT16 ipv6_address optional,
+ octetstring network_instance optional
+} with {
+ variant (ipv4_address) "PRESENCE(v4 = '1'B)"
+ variant (ipv6_address) "PRESENCE(v6 = '1'B)"
+ variant (network_instance) "PRESENCE(assoni = '1'B)"
+ variant (teid_range) "PRESENCE({teidri=1,teidri=2,teidri=3,teidri=4,teidri=5,teidri=6,teidri=7})"
+ variant "PRESENCE (elementIdentifier = 116; )"
+ variant (lengthIndicator) "LENGTHTO(v4,v6,teidri,assoni,spare,teid_range,ipv4_address,ipv6_address,network_instance)"
+}
+
+type record of UP_IP_Resource_Information UP_IP_Resource_Information_list;
+
+// 8.2.83 UP_Inactivity_Timer
+type record UP_Inactivity_Timer {
+ LIN2_BO_LAST elementIdentifier(117),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST UP_inactivity_timer
+} with {
+ variant "PRESENCE (elementIdentifier = 117; )"
+ variant (lengthIndicator) "LENGTHTO(UP_inactivity_timer)"
+}
+
+// 8.2.84 Multiplier
+type record Multiplier {
+ LIN2_BO_LAST elementIdentifier(119),
+ LIN2_BO_LAST lengthIndicator,
+ integer value_digits,
+ integer exponent
+} with {
+ variant "PRESENCE (elementIdentifier = 119; )"
+ variant (value_digits) "FIELDLENGTH(64), BYTEORDER(last)"
+ variant (exponent) "FIELDLENGTH(32), BYTEORDER(last)"
+ variant (lengthIndicator) "LENGTHTO(value_digits,exponent)"
+}
+
+// 8.2.85 Aggregated_URR_ID_IE
+type record Aggregated_URR_ID {
+ LIN2_BO_LAST elementIdentifier(120),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST id_value
+} with {
+ variant "PRESENCE (elementIdentifier = 120; )"
+ variant (lengthIndicator) "LENGTHTO(id_value)"
+}
+
+// 8.2.86 Subsequent_Volume_Quota
+type record Subsequent_Volume_Quota {
+ LIN2_BO_LAST elementIdentifier(121),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 tovol,
+ BIT1 ulvol,
+ BIT1 dlvol,
+ BIT5 spare,
+ LIN8_BO_LAST total_volume optional,
+ LIN8_BO_LAST uplink_volume optional,
+ LIN8_BO_LAST downlink_volume optional
+} with {
+ variant "PRESENCE (elementIdentifier = 121; )"
+ variant (total_volume) "PRESENCE ( tovol= '1'B )"
+ variant (uplink_volume) "PRESENCE ( ulvol= '1'B )"
+ variant (downlink_volume) "PRESENCE ( dlvol= '1'B )"
+ variant (lengthIndicator) "LENGTHTO(tovol,ulvol,dlvol,spare,total_volume,uplink_volume,downlink_volume )"
+}
+
+// 8.2.87 Subsequent_Time_Quota
+type record Subsequent_Time_Quota {
+ LIN2_BO_LAST elementIdentifier(122),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST time_qouta_value
+} with {
+ variant "PRESENCE (elementIdentifier = 122; )"
+ variant (lengthIndicator) "LENGTHTO(time_qouta_value)"
+}
+
+// 8.2.88 RQI
+type record RQI {
+ LIN2_BO_LAST elementIdentifier(123),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 rqi,
+ BIT7 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 123; )"
+ variant (lengthIndicator) "LENGTHTO(rqi,spare)"
+}
+
+// 8.2.89 QFI
+type record QFI {
+ LIN2_BO_LAST elementIdentifier(124),
+ LIN2_BO_LAST lengthIndicator,
+ octetstring qfi_value
+} with {
+ variant "PRESENCE (elementIdentifier = 124; )"
+ variant (lengthIndicator) "LENGTHTO(qfi_value)"
+}
+
+
+// 8.2.90 Query URR Reference
+type record Query_URR_Reference {
+ LIN2_BO_LAST elementIdentifier(125),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST query_URR_reference_value
+} with {
+ variant "PRESENCE (elementIdentifier = 125; )"
+ variant (lengthIndicator) "LENGTHTO(query_URR_reference_value)"
+}
+
+// 8.2.91 Additional Usage Reports Information
+type record Additional_Usage_Reports_Information {
+ LIN2_BO_LAST elementIdentifier(126),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 auri,
+ integer no_aur_value
+} with {
+ variant "PRESENCE (elementIdentifier = 126; )"
+ variant (auri,no_aur_value) "FIELDORDER(msb)"
+ variant (no_aur_value) "FIELDLENGTH(15), COMP(nosign), BYTEORDER(last)"
+ variant (lengthIndicator) "LENGTHTO(auri,no_aur_value)"
+}
+
+
+// 8.2.92 Traffic Endpoint ID
+type record Traffic_Endpoint_ID {
+ LIN2_BO_LAST elementIdentifier(131),
+ LIN2_BO_LAST lengthIndicator,
+ INT1 endpoint_id
+} with {
+ variant "PRESENCE (elementIdentifier = 131; )"
+ variant (lengthIndicator) "LENGTHTO(endpoint_id)"
+}
+
+// 8.2.93 MAC address
+type record MAC_address {
+ LIN2_BO_LAST elementIdentifier(133),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 sour,
+ BIT1 dest,
+ BIT1 usou,
+ BIT1 udes,
+ BIT4 spare,
+ OCT6 source_mac_adress optional,
+ OCT6 dest_mac_adress optional,
+ OCT6 upper_source_mac_adress optional,
+ OCT6 upper_dest_mac_adress optional
+} with {
+ variant "PRESENCE (elementIdentifier = 133; )"
+ variant (source_mac_adress) "PRESENCE(sour='1'B)"
+ variant (dest_mac_adress) "PRESENCE(dest='1'B)"
+ variant (upper_dest_mac_adress) "PRESENCE(udes='1'B)"
+ variant (upper_source_mac_adress) "PRESENCE(usou='1'B)"
+ variant (lengthIndicator) "LENGTHTO(sour,dest,usou,udes,spare,source_mac_adress,dest_mac_adress,upper_source_mac_adress,upper_dest_mac_adress)"
+}
+
+
+// 8.2.94 C-Tag
+type record C_TAG {
+ LIN2_BO_LAST elementIdentifier(134),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 pcp,
+ BIT1 dei,
+ BIT1 vid,
+ BIT5 spare,
+ BIT3 pcp_value,
+ BIT1 dei_flag,
+ BIT12 c_vid_value
+} with {
+ variant "PRESENCE (elementIdentifier = 134; )"
+ variant (lengthIndicator) "LENGTHTO(pcp,dei,vid,spare,pcp_value,dei_flag,c_vid_value)"
+}
+
+// 8.2.95 S-Tag
+type record S_TAG {
+ LIN2_BO_LAST elementIdentifier(135),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 pcp,
+ BIT1 dei,
+ BIT1 vid,
+ BIT5 spare,
+ BIT3 pcp_value,
+ BIT1 dei_flag,
+ BIT12 c_vid_value
+} with {
+ variant "PRESENCE (elementIdentifier = 135; )"
+ variant (lengthIndicator) "LENGTHTO(pcp,dei,vid,spare,pcp_value,dei_flag,c_vid_value)"
+}
+
+// 8.2.96 Ether Type
+type record Ether_Type {
+ LIN2_BO_LAST elementIdentifier(136),
+ LIN2_BO_LAST lengthIndicator,
+ OCT2 ethertype
+} with {
+ variant "PRESENCE (elementIdentifier = 136; )"
+ variant (lengthIndicator) "LENGTHTO(ethertype)"
+}
+
+// 8.2.97 Proxying
+type record Proxying {
+ LIN2_BO_LAST elementIdentifier(137),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 arp,
+ BIT1 ins,
+ BIT6 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 137; )"
+ variant (lengthIndicator) "LENGTHTO(arp,ins,spare)"
+}
+
+// 8.2.98 Ether Filter ID
+type record Ethernet_Filter_ID {
+ LIN2_BO_LAST elementIdentifier(138),
+ LIN2_BO_LAST lengthIndicator,
+ LIN4_BO_LAST ether_filter_ID_value
+} with {
+ variant "PRESENCE (elementIdentifier = 138; )"
+ variant (lengthIndicator) "LENGTHTO(ether_filter_ID_value)"
+}
+// 8.2.99 Ethernet Filter Properties
+type record Ethernet_Filter_Properties {
+ LIN2_BO_LAST elementIdentifier(139),
+ LIN2_BO_LAST lengthIndicator,
+ BIT1 bide,
+ BIT7 spare
+} with {
+ variant "PRESENCE (elementIdentifier = 139; )"
+ variant (lengthIndicator) "LENGTHTO(bide,spare)"
+}
+
+
+// Message Header
+// 7.2
+type record PDU_PFCP {
+ BIT1 s_flag,
+ BIT1 mp,
+ BIT3 spare,
+ INT3b version,
+ INT1 message_type,
+ LIN2_BO_LAST lengthIndicator,
+ OCT8 seid optional,
+ LIN3_BO_LAST sequence_number,
+ BIT4 spare2,
+ BIT4 mp_or_spare, // valid only if mp == '1'B, should be '0000'B otherwise
+ PFCP_message_body message_body
+} with {
+ variant (seid) "PRESENCE(s_flag = '1'B)"
+ variant (lengthIndicator) "LENGTHTO(seid,sequence_number,spare2,mp_or_spare,message_body)"
+ variant (message_body) " CROSSTAG(
+ heartbeat_request, message_type = 1;
+ heartbeat_response, message_type = 2;
+ pfcp_PFD_management_request, message_type = 3;
+ pfcp_PFD_management_response, message_type = 4;
+ pfcp_association_setup_request, message_type = 5;
+ pfcp_association_setup_response, message_type = 6;
+ pfcp_association_update_request, message_type = 7;
+ pfcp_association_update_response, message_type = 8;
+ pfcp_association_release_request, message_type = 9;
+ pfcp_association_release_response, message_type = 10;
+ pfcp_version_not_supported_response, message_type = 11;
+ pfcp_node_report_request, message_type = 12;
+ pfcp_node_report_response, message_type = 13;
+ pfcp_session_set_deletion_request, message_type = 14;
+ pfcp_session_set_deletion_response, message_type = 15;
+ pfcp_session_establishment_request, message_type = 50;
+ pfcp_session_establishment_response, message_type = 51;
+ pfcp_session_modification_request, message_type = 52;
+ pfcp_session_modification_response, message_type = 53;
+ pfcp_session_deletion_request, message_type = 54;
+ pfcp_session_deletion_response, message_type = 55;
+ pfcp_session_report_request, message_type = 56;
+ pfcp_session_report_response, message_type = 57;
+ )"
+}
+
+// 7.4 PFCP Node Related Messages
+
+// 7.4.2.1 Heartbeat Request
+type set Heartbeat_Request {
+ Recovery_Time_Stamp recovery_time_stamp
+}
+
+// 7.4.2.1 Heartbeat Response
+type set Heartbeat_Response {
+ Recovery_Time_Stamp recovery_time_stamp
+}
+
+// 7.4.3.2 PFCP PFD Management Request
+type set PFCP_PFD_Management_Request {
+ record of Application_IDs_PFDs application_IDs_PFDs_list optional
+} with {
+ variant (application_IDs_PFDs_list) "REPEATABLE(yes)"
+}
+
+// 7.4.3.1-2 Application ID's PFDs
+type record Application_IDs_PFDs {
+ LIN2_BO_LAST elementIdentifier(58),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Application_ID application_id,
+ record of PFD PFDs optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 58; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+ variant (grouped_ie.PFDs) "REPEATABLE(yes)"
+}
+
+// 7.4.3.1-3
+type record PFD {
+ LIN2_BO_LAST elementIdentifier(59),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ record of PFD_Contents PFD_Contents_list
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 59; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+ variant (grouped_ie.PFD_Contents_list) "REPEATABLE(yes)"
+}
+
+// 7.4.3.2 PFCP PFD Management Response
+type set PFCP_PFD_Management_Response {
+ Cause cause,
+ Offending_IE offending_ie optional
+}
+
+// 7.4.4.1 PFCP Association Setup Request
+type set PFCP_Association_Setup_Request{
+ Node_ID node_id,
+ Recovery_Time_Stamp time_stamp,
+ UP_Function_Features up_function_features optional,
+ CP_Function_Features cp_function_features optional,
+ UP_IP_Resource_Information_list UP_IP_resource_list optional
+} with {
+ variant (UP_IP_resource_list) "REPEATABLE(yes)"
+}
+
+
+// 7.4.4.2 PFCP Association Setup Response
+type set PFCP_Association_Setup_Response{
+ Node_ID node_id,
+ Cause cause,
+ Recovery_Time_Stamp time_stamp,
+ UP_Function_Features up_function_features optional,
+ CP_Function_Features cp_function_features optional,
+ UP_IP_Resource_Information_list UP_IP_resource_list optional
+} with {
+ variant (UP_IP_resource_list) "REPEATABLE(yes)"
+}
+
+
+// 7.4.4.3 PFCP Association Update Request
+type set PFCP_Association_Update_Request{
+ Node_ID node_id,
+ UP_Function_Features up_function_features optional,
+ CP_Function_Features cp_function_features optional,
+ PFCP_Association_Release_Request_IE sarr optional,
+ Graceful_Release_Period graceful_release_period optional,
+ UP_IP_Resource_Information_list UP_IP_resource_list optional
+} with {
+ variant (UP_IP_resource_list) "REPEATABLE(yes)"
+}
+
+// 7.4.4.4 PFCP Association Setup Response
+type set PFCP_Association_Update_Response{
+ Node_ID node_id,
+ Cause cause,
+ UP_Function_Features up_function_features optional,
+ CP_Function_Features cp_function_features optional
+}
+
+// 7.4.4.5 PFCP Association Release Request
+type set PFCP_Association_Release_Request{
+ Node_ID node_id
+}
+
+// 7.4.4.6 PFCP Association Release Response
+type set PFCP_Association_Release_Response{
+ Node_ID node_id,
+ Cause cause
+}
+
+// 7.4.4.7 PFCP Version Not Supported Response
+type set PFCP_Version_Not_Supported_Response{
+}
+
+// 7.4.5.1 PFCP Node Report Request
+type set PFCP_Node_Report_Request{
+ Node_ID node_id,
+ Node_Report_Type node_report_type,
+ User_Plane_Path_Failure_Report failure_report optional
+}
+
+// User Plane Path Failure IE within PFCP Node Report Request
+type record User_Plane_Path_Failure_Report {
+ LIN2_BO_LAST elementIdentifier(102),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ record of Remote_GTP_U_Peer remote_GTP_U_peer_list
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 102; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+ variant (grouped_ie.remote_GTP_U_peer_list) "REPEATABLE(yes)"
+}
+
+// 7.4.5.2 PFCP Node Report Response
+type set PFCP_Node_Report_Response{
+ Node_ID node_id,
+ Cause cause,
+ Offending_IE offending_IE optional
+}
+
+// 7.4.6.1 PFCP Session Set Deletion Request
+type set PFCP_Session_Set_Deletion_Request{
+ Node_ID node_id,
+ FQ_CSID_list node_list optional
+} with {
+ variant (node_list) "REPEATABLE(yes)"
+}
+
+// 7.4.6.2 PFCP Session Set Deletion Response
+type set PFCP_Session_Set_Deletion_Response{
+ Node_ID node_id,
+ Cause cause,
+ Offending_IE offending_IE optional
+}
+
+// 7.5.2 PFCP Session Establishment Request
+type set PFCP_Session_Establishment_Request{
+ Node_ID node_id,
+ F_SEID CP_F_SEID,
+ Create_PDR_list create_PDR_list,
+ Create_FAR_list create_FAR_list,
+ Create_URR_list create_URR_list optional,
+ Create_QER_list create_QER_list optional,
+ Create_BAR create_BAR optional,
+ record of Create_Traffic_Endpoint create_traffic_endpoint_list optional,
+ PDN_Type pdn_type optional,
+ FQ_CSID_list node_list optional,
+ UP_Inactivity_Timer up_inactivity_timer optional
+} with {
+ variant (create_PDR_list) "REPEATABLE(yes)"
+ variant (create_FAR_list) "REPEATABLE(yes)"
+ variant (create_URR_list) "REPEATABLE(yes)"
+ variant (create_QER_list) "REPEATABLE(yes)"
+ variant (node_list) "REPEATABLE(yes)"
+}
+
+type record Create_Traffic_Endpoint {
+ LIN2_BO_LAST elementIdentifier(127),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Traffic_Endpoint_ID traffic_endpint_id,
+ F_TEID local_F_TEID optional,
+ Network_Instance network_instance optional,
+ UE_IP_Address ue_ip_address optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 127; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Create_PDR{
+ LIN2_BO_LAST elementIdentifier(1),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ PDR_ID pdr_id,
+ Precedence precedence optional,
+ PDI_IE pdi,
+ Outer_Header_Removal outer_header_removal optional,
+ record of FAR_ID FAR_ID_list optional,
+ URR_ID_list uRR_ID_list optional,
+ QER_ID_list qER_ID_list optional,
+ Activate_Predefined_Rules activate_predefined_rules optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 1; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+ variant (grouped_ie.FAR_ID_list) "REPEATABLE(yes)"
+ variant (grouped_ie.uRR_ID_list) "REPEATABLE(yes)"
+ variant (grouped_ie.qER_ID_list) "REPEATABLE(yes)"
+}
+
+type record of Create_PDR Create_PDR_list;
+
+type record PDI_IE {
+ LIN2_BO_LAST elementIdentifier(2),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Source_Interface source_interface,
+ F_TEID local_F_TEID optional,
+ PDN_Instance pdn_instance optional,
+ UE_IP_Address ue_ip_address optional,
+ Traffic_Endpoint_ID traffic_endpoint_id optional,
+ SDF_Filter_list sdf_filter_list optional,
+ Application_ID application_id optional,
+ record of Ethernet_Packet_Filter ethernet_packet_filter_list optional,
+ record of QFI qfi_list optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 2; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+ variant (grouped_ie.sdf_filter_list) "REPEATABLE(yes)"
+ variant (grouped_ie.ethernet_packet_filter_list) "REPEATABLE(yes)"
+ variant (grouped_ie.qfi_list) "REPEATABLE(yes)"
+}
+
+type record Ethernet_Packet_Filter {
+ LIN2_BO_LAST elementIdentifier(132),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Ethernet_Filter_ID ethernet_filter_id optional,
+ Ethernet_Filter_Properties ethernet_filter_properties optional,
+ MAC_address mac_address optional,
+ Ether_Type ethertype optional,
+ C_TAG c_tag optional,
+ S_TAG s_tag optional,
+ SDF_Filter_list sdf_filter_list optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 132; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+ variant (grouped_ie.sdf_filter_list) "REPEATABLE(yes)"
+}
+
+type record of Create_FAR Create_FAR_list;
+
+type record Create_FAR{
+ LIN2_BO_LAST elementIdentifier(3),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ FAR_ID far_id,
+ Apply_Action apply_action,
+ Forwarding_Parameters forwarding_parameters optional,
+ Duplicating_Parameters duplicating_parameters optional,
+ BAR_ID bar_id optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 3; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Forwarding_Parameters {
+ LIN2_BO_LAST elementIdentifier(4),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Destination_Interface destination_interface,
+ PDN_Instance pdn_Instance optional,
+ Redirect_Information redirect_information optional,
+ Outer_Header_Creation outer_header_creation optional,
+ DL_Transport_Level_Marking transport_level_marking optional,
+ Forwarding_Policy forwarding_policy optional,
+ Header_Enrichment header_enrichment optional,
+ Traffic_Endpoint_ID traffic_endpoint_ID optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 4; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Duplicating_Parameters {
+ LIN2_BO_LAST elementIdentifier(5),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Destination_Interface destination_interface,
+ Outer_Header_Creation outer_header_creation optional,
+ DL_Transport_Level_Marking transport_level_marking optional,
+ Forwarding_Policy forwarding_policy optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 5; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Create_URR{
+ LIN2_BO_LAST elementIdentifier(6),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ URR_ID urr_id,
+ Measurement_Method measurement_method,
+ Reporting_Triggers reporting_triggers,
+ Measurement_Period measurement_period optional,
+ Volume_Threshold volume_threshold optional,
+ Volume_Quota volume_quota optional,
+ Time_Threshold time_threshold optional,
+ Time_Quota time_quota optional,
+ Quota_Holding_Time quota_holding_time optional,
+ Dropped_DL_Traffic_Threshold dropped_dl_traffic_threshold optional,
+ Monitoring_Time monitoring_time optional,
+ Subsequent_Volume_Threshold subsequent_volume_threshold optional,
+ Subsequent_Time_Threshold subsequent_time_threshold optional,
+ Subsequent_Volume_Quota subsequent_volume_quota optional,
+ Subsequent_Time_Quota subsequent_time_quota optional,
+ Inactivity_Detection_Time inactivity_detection_time optional,
+ Linked_URR_ID linked_urr_id optional,
+ Measurement_Information measurement_information optional,
+ Time_Quota_Mechanism time_qouta_mechanism optional,
+ Aggregated_URR_list aggregated_urrs optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 6; )"
+ variant (grouped_ie.aggregated_urrs) "REPEATABLE(yes)"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record of Create_URR Create_URR_list;
+
+type record Aggregated_URR{
+ LIN2_BO_LAST elementIdentifier(118),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Aggregated_URR_ID aggregated_urr_id,
+ Multiplier multiplier
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 118; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+type record of Aggregated_URR Aggregated_URR_list;
+
+type record Create_QER{
+ LIN2_BO_LAST elementIdentifier(7),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ QER_ID qer_id,
+ QER_Correlation_ID qer_correlation_id optional,
+ Gate_Status gate_status,
+ MBR mbr optional,
+ GBR gbr optional,
+ Packet_Rate packet_rate optional,
+ DL_Transport_Level_Marking dl_transport_level_marking optional,
+ QFI qfi optional,
+ RQI rqi optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 7; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record of Create_QER Create_QER_list;
+
+type record Create_BAR{
+ LIN2_BO_LAST elementIdentifier(85),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ BAR_ID bar_id,
+ Downlink_Data_Notification_Delay downlink_data_notification_delay optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 85; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+// 7.5.3 PFCP Session Establishment Response
+type set PFCP_Session_Establishment_Response {
+ Node_ID node_id,
+ Cause cause,
+ Offending_IE offending_ie optional,
+ F_SEID UP_F_SEID,
+ record of Created_PDR created_PDR_list,
+ Load_Control_Information load_control_information optional,
+ Overload_Control_Information overload_control_information optional,
+ FQ_CSID_list node_list optional,
+ Failed_Rule_ID failed_rule_id optional,
+ record of Created_Traffic_Endpoint created_traffic_endpoint_list optional
+} with {
+ variant (created_PDR_list) "REPEATABLE(yes)"
+ variant (node_list) "REPEATABLE(yes)"
+ variant (created_traffic_endpoint_list) "REPEATABLE(yes)"
+}
+
+type record Created_PDR{
+ LIN2_BO_LAST elementIdentifier(8),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ PDR_ID pdr_id,
+ F_TEID local_F_TEID optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 8; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Load_Control_Information{
+ LIN2_BO_LAST elementIdentifier(50),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Sequence_Number sequence_number,
+ Metric local_metric
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 50; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Overload_Control_Information{
+ LIN2_BO_LAST elementIdentifier(54),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Sequence_Number sequence_number,
+ Metric overload_reduction_metric,
+ Timer_IE period_of_validity,
+ OCI_Flags oci_flags
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 54; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Created_Traffic_Endpoint {
+ LIN2_BO_LAST elementIdentifier(128),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Traffic_Endpoint_ID traffic_endpint_id,
+ F_TEID local_F_TEID optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 128; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+// 7.5.4 PFCP Session Modification Request
+type set PFCP_Session_Modification_Request {
+ F_SEID f_seid optional,
+ record of Remove_PDR remove_PDR_list optional,
+ record of Remove_FAR remove_FAR_list optional,
+ record of Remove_URR remove_URR_list optional,
+ record of Remove_QER remove_QER_list optional,
+ Remove_BAR remove_BAR optional,
+ Remove_Traffic_Endpoint remove_traffic_endpoint optional,
+ Create_PDR_list create_PDR_list optional,
+ Create_FAR_list create_FAR_list optional,
+ Create_URR_list create_URR_list optional,
+ Create_QER_list create_QER_list optional,
+ Create_BAR create_BAR optional,
+ Create_Traffic_Endpoint create_traffic_endpoint optional,
+ record of Update_PDR update_PDR_list optional,
+ record of Update_FAR update_FAR_list optional,
+ record of Update_URR update_URR_list optional,
+ record of Update_QER update_QER_list optional,
+ Update_BAR update_BAR optional,
+ Update_Traffic_Endpoint update_traffic_endpoint optional,
+ PFCPSMReq_Flags pfcpSMReq_flags optional,
+ record of Query_URR query_URR_list optional,
+ FQ_CSID_list node_list optional,
+ UP_Inactivity_Timer up_inactivity_timer optional,
+ Query_URR_Reference querry_urr_reference optional
+} with {
+ variant (remove_PDR_list) "REPEATABLE(yes)"
+ variant (remove_FAR_list) "REPEATABLE(yes)"
+ variant (remove_URR_list) "REPEATABLE(yes)"
+ variant (remove_QER_list) "REPEATABLE(yes)"
+ variant (update_PDR_list) "REPEATABLE(yes)"
+ variant (update_FAR_list) "REPEATABLE(yes)"
+ variant (update_URR_list) "REPEATABLE(yes)"
+ variant (update_QER_list) "REPEATABLE(yes)"
+ variant (query_URR_list) "REPEATABLE(yes)"
+ variant (create_PDR_list) "REPEATABLE(yes)"
+ variant (create_FAR_list) "REPEATABLE(yes)"
+ variant (create_URR_list) "REPEATABLE(yes)"
+ variant (create_QER_list) "REPEATABLE(yes)"
+ variant (node_list) "REPEATABLE(yes)"
+}
+
+type record Update_PDR{
+ LIN2_BO_LAST elementIdentifier(9),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ PDR_ID pdr_id,
+ Outer_Header_Removal outer_header_removal optional,
+ Precedence precedence optional,
+ PDI_IE pdi optional,
+ FAR_ID far_id optional,
+ URR_ID_list uRR_ID_list optional,
+ QER_ID_list qER_ID_list optional,
+ Activate_Predefined_Rules activate_predefined_rules optional,
+ Deactivate_Predefined_Rules deactivate_predefined_rules optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 9; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+ variant (grouped_ie.uRR_ID_list) "REPEATABLE(yes)"
+ variant (grouped_ie.qER_ID_list) "REPEATABLE(yes)"
+}
+
+type record Update_FAR{
+ LIN2_BO_LAST elementIdentifier(10),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ FAR_ID far_id,
+ Apply_Action apply_action optional,
+ Update_Forwarding_Parameters forwarding_parameters optional,
+ Update_Duplicating_Parameters duplicating_parameters optional,
+ BAR_ID bar_id optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 10; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Update_Forwarding_Parameters {
+ LIN2_BO_LAST elementIdentifier(11),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Destination_Interface destination_interface optional,
+ PDN_Instance pdn_Instance optional,
+ Redirect_Information redirect_information optional,
+ Outer_Header_Creation outer_header_creation optional,
+ DL_Transport_Level_Marking transport_level_marking optional,
+ Forwarding_Policy forwarding_policy optional,
+ Header_Enrichment header_enrichment optional,
+ PFCPSMReq_Flags pfcpSMReq_flags optional,
+ Traffic_Endpoint_ID traffic_endpoint_id optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 11; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Update_Duplicating_Parameters {
+ LIN2_BO_LAST elementIdentifier(105),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Destination_Interface destination_interface optional,
+ Outer_Header_Creation outer_header_creation optional,
+ DL_Transport_Level_Marking transport_level_marking optional,
+ Forwarding_Policy forwarding_policy optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 105; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Update_URR{
+ LIN2_BO_LAST elementIdentifier(13),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ URR_ID urr_id,
+ Measurement_Method measurement_method optional,
+ Reporting_Triggers reporting_triggers optional,
+ Measurement_Period measurement_period optional,
+ Volume_Threshold volume_threshold optional,
+ Volume_Quota volume_quota optional,
+ Time_Threshold time_threshold optional,
+ Time_Quota time_quota optional,
+ Quota_Holding_Time quota_holding_time optional,
+ Dropped_DL_Traffic_Threshold dropped_dl_traffic_threshold optional,
+ Monitoring_Time monitoring_time optional,
+ Subsequent_Volume_Threshold subsequent_volume_threshold optional,
+ Subsequent_Time_Threshold subsequent_time_threshold optional,
+ Subsequent_Volume_Quota subsequent_volume_quota optional,
+ Subsequent_Time_Quota subsequent_time_quota optional,
+ Inactivity_Detection_Time inactivity_detection_time optional,
+ Linked_URR_ID linked_urr_id optional,
+ Measurement_Information measurement_information optional,
+ Time_Quota_Mechanism time_qouta_mechanism optional,
+ Aggregated_URR_list aggregated_urrs optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 13; )"
+ variant (grouped_ie.aggregated_urrs) "REPEATABLE(yes)"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Update_QER{
+ LIN2_BO_LAST elementIdentifier(14),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ QER_ID qer_id,
+ QER_Correlation_ID qer_correlation_id optional,
+ Gate_Status gate_status optional,
+ MBR mbr optional,
+ GBR gbr optional,
+ Packet_Rate packet_rate optional,
+ DL_Flow_Level_Marking dl_flow_level_marking optional,
+ QFI qfi optional,
+ RQI rqi optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 14; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Update_BAR{
+ LIN2_BO_LAST elementIdentifier(86),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ BAR_ID bar_id,
+ Downlink_Data_Notification_Delay downlink_data_notification_delay optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 86; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Remove_PDR{
+ LIN2_BO_LAST elementIdentifier(15),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ PDR_ID pdr_id
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 15; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Remove_FAR{
+ LIN2_BO_LAST elementIdentifier(16),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ FAR_ID far_id
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 16; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Remove_URR{
+ LIN2_BO_LAST elementIdentifier(17),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ URR_ID urr_id
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 17; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Remove_QER{
+ LIN2_BO_LAST elementIdentifier(18),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ QER_ID qer_id
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 18; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Query_URR{
+ LIN2_BO_LAST elementIdentifier(77),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ URR_ID urr_id
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 77; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Remove_BAR{
+ LIN2_BO_LAST elementIdentifier(87),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ BAR_ID bar_id
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 87; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Update_Traffic_Endpoint {
+ LIN2_BO_LAST elementIdentifier(129),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Traffic_Endpoint_ID traffic_endpint_id,
+ F_TEID local_F_TEID optional,
+ Network_Instance network_instance optional,
+ UE_IP_Address ue_ip_address optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 129; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Remove_Traffic_Endpoint {
+ LIN2_BO_LAST elementIdentifier(130),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Traffic_Endpoint_ID traffic_endpint_id
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 130; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+// 7.5.5 PFCP Session Modification Response
+type set PFCP_Session_Modification_Response {
+ Cause cause,
+ Offending_IE offending_IE optional,
+ Created_PDR created_PDR optional,
+ Load_Control_Information load_control_information optional,
+ Overload_Control_Information overload_control_information optional,
+ record of Usage_Report_Modification_Response usage_report optional,
+ Failed_Rule_ID failed_rule_id optional,
+ Additional_Usage_Reports_Information additional_usage_reports_information optional,
+ Created_Traffic_Endpoint created_updated_traffic_endpoint optional
+} with {
+ variant (usage_report) "REPEATABLE(yes)"
+}
+
+type record Usage_Report_Modification_Response {
+ LIN2_BO_LAST elementIdentifier(78),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ URR_ID urr_id,
+ UR_SEQN ur_seqn,
+ Usage_Report_Trigger usage_report_trigger,
+ Start_Time start_time optional,
+ End_Time end_time optional,
+ Volume_Measurement volume_measurement optional,
+ Duration_Measurement duration_measurement optional,
+ Time_of_First_Packet time_of_first_packet optional,
+ Time_of_Last_Packet time_of_last_packet optional,
+ Usage_Information usage_information optional,
+ Query_URR_Reference query_urr_reference optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 78; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+// 7.5.6 PFCP Session Deletion Request
+type set PFCP_Session_Deletion_Request{
+}
+
+// 7.5.7 PFCP Session Deletion Response
+type set PFCP_Session_Deletion_Response {
+ Cause cause,
+ Offending_IE offending_IE optional,
+ Load_Control_Information load_control_information optional,
+ Overload_Control_Information overload_control_information optional,
+ record of Usage_Report_Deletion_Response usage_report optional
+} with {
+ variant (usage_report) "REPEATABLE(yes)"
+}
+
+
+type record Usage_Report_Deletion_Response {
+ LIN2_BO_LAST elementIdentifier(79),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ URR_ID urr_id,
+ UR_SEQN ur_seqn,
+ Usage_Report_Trigger usage_report_trigger,
+ Start_Time start_time optional,
+ End_Time end_time optional,
+ Volume_Measurement volume_measurement optional,
+ Duration_Measurement duration_measurement optional,
+ Time_of_First_Packet time_of_first_packet optional,
+ Time_of_Last_Packet time_of_last_packet optional,
+ Usage_Information usage_information optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 79; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+// 7.5.8 PFCP Session Report Request
+type set PFCP_Session_Report_Request {
+ Report_Type report_type,
+ Downlink_Data_Report downlink_data_report optional,
+ record of Usage_Report_Report_Request usage_report optional,
+ Error_Indication_Report error_indication_report optional,
+ Load_Control_Information load_control_information optional,
+ Overload_Control_Information overload_control_information optional,
+ Additional_Usage_Reports_Information additional_usage_reports_information optional
+} with {
+ variant (usage_report) "REPEATABLE(yes)"
+}
+
+type record Downlink_Data_Report {
+ LIN2_BO_LAST elementIdentifier(83),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ record of PDR_ID pdr_id_list,
+ record of Downlink_Data_Service_Information dl_service_information_list optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 83; )"
+ variant (grouped_ie.pdr_id_list) "REPEATABLE(yes)"
+ variant (grouped_ie.dl_service_information_list) "REPEATABLE(yes)"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Usage_Report_Report_Request {
+ LIN2_BO_LAST elementIdentifier(80),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ URR_ID urr_id,
+ UR_SEQN ur_seqn,
+ Usage_Report_Trigger usage_report_trigger,
+ Start_Time start_time optional,
+ End_Time end_time optional,
+ Volume_Measurement volume_measurement optional,
+ Duration_Measurement duration_measurement optional,
+ Application_Detection_Information application_detection_information optional,
+ UE_IP_Address ue_ip_address optional,
+ PDN_Instance pdn_instance optional,
+ Time_of_First_Packet time_of_first_packet optional,
+ Time_of_Last_Packet time_of_last_packet optional,
+ Usage_Information usage_information optional,
+ Query_URR_Reference query_urr_reference optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 80; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Application_Detection_Information {
+ LIN2_BO_LAST elementIdentifier(68),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ Application_ID application_id,
+ Application_Instance_ID application_instance_id optional,
+ Flow_Information flow_information optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 68; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type record Error_Indication_Report {
+ LIN2_BO_LAST elementIdentifier(99),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ record of F_TEID f_teid_list
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 99; )"
+ variant (grouped_ie.f_teid_list) "REPEATABLE(yes)"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+// 7.5.9 PFCP Session Report Response
+type set PFCP_Session_Report_Response {
+ Cause cause,
+ Offending_IE offending_IE optional,
+ Update_BAR_Report_Response update_BAR optional,
+ PFCPSMRsp_Flags pfcpSMRsp_flags optional
+}
+
+type record Update_BAR_Report_Response{
+ LIN2_BO_LAST elementIdentifier(12),
+ LIN2_BO_LAST lengthIndicator,
+ set {
+ BAR_ID bar_id,
+ Downlink_Data_Notification_Delay downlink_data_notification_delay optional,
+ DL_Buffering_Duration dl_buffering_duration optional,
+ DL_Buffering_Suggested_Packet_Count dl_buffering_suggested_packet_count optional
+ } grouped_ie
+} with {
+ variant "PRESENCE (elementIdentifier = 12; )"
+ variant (lengthIndicator) "LENGTHTO(grouped_ie)"
+}
+
+type union PFCP_message_body{
+ Heartbeat_Request heartbeat_request,
+ Heartbeat_Response heartbeat_response,
+ PFCP_PFD_Management_Request pfcp_PFD_management_request,
+ PFCP_PFD_Management_Response pfcp_PFD_management_response,
+ PFCP_Association_Setup_Request pfcp_association_setup_request,
+ PFCP_Association_Setup_Response pfcp_association_setup_response,
+ PFCP_Association_Update_Request pfcp_association_update_request,
+ PFCP_Association_Update_Response pfcp_association_update_response,
+ PFCP_Association_Release_Request pfcp_association_release_request,
+ PFCP_Association_Release_Response pfcp_association_release_response,
+ PFCP_Version_Not_Supported_Response pfcp_version_not_supported_response,
+ PFCP_Node_Report_Request pfcp_node_report_request,
+ PFCP_Node_Report_Response pfcp_node_report_response,
+ PFCP_Session_Set_Deletion_Request pfcp_session_set_deletion_request,
+ PFCP_Session_Set_Deletion_Response pfcp_session_set_deletion_response,
+ PFCP_Session_Establishment_Request pfcp_session_establishment_request,
+ PFCP_Session_Establishment_Response pfcp_session_establishment_response,
+ PFCP_Session_Modification_Request pfcp_session_modification_request,
+ PFCP_Session_Modification_Response pfcp_session_modification_response,
+ PFCP_Session_Deletion_Request pfcp_session_deletion_request,
+ PFCP_Session_Deletion_Response pfcp_session_deletion_response,
+ PFCP_Session_Report_Request pfcp_session_report_request,
+ PFCP_Session_Report_Response pfcp_session_report_response,
+ octetstring dummy
+}
+
+
+} with { encode "RAW"}
diff --git a/test/PFCP_Test.cfg b/test/PFCP_Test.cfg
new file mode 100644
index 0000000..97bf2d5
--- /dev/null
+++ b/test/PFCP_Test.cfg
@@ -0,0 +1,13 @@
+[LOGGING]
+LogFile := "logs/%e.%h-%r.%s"
+FileMask := LOG_ALL | DEBUG | MATCHING
+ConsoleMask := ERROR | WARNING | TESTCASE | STATISTICS | PORTEVENT | USER
+LogSourceInfo := Yes
+AppendFile := No
+TimeStampFormat := DateTime
+LogEventTypes := Yes
+SourceInfoFormat := Single
+LogEntityName := Yes
+
+[EXECUTE]
+PFCP_Test.control
diff --git a/test/PFCP_Test.ttcn b/test/PFCP_Test.ttcn
new file mode 100644
index 0000000..a7fbc8c
--- /dev/null
+++ b/test/PFCP_Test.ttcn
@@ -0,0 +1,54 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2000-2018 Ericsson Telecom AB
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v2.0
+// which accompanies this distribution, and is available at
+// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: PFCP_Test.ttcn
+// Description: PFCP protocol module
+// Rev: <RnXnn>
+// Prodnr: CNL 113 875
+// Contact: http://ttcn.ericsson.se
+// Reference: 3GPP TS 29.244 v15.1.0
+//
+
+module PFCP_Test {
+
+import from PFCP_Test_Templates all;
+import from PFCP_Types all;
+
+type component MAIN_CT {}
+
+testcase tc_PFCP_test () runs on MAIN_CT {
+ var octetstring vl_pfcp_pdu_oct := '21320163000000000000000018400100003C000500
+ 0500030400010055003800020001001D0004000000FF000200260014000100001500020D0000
+ 5D0005026A0000020018000E6170706C69636174696F6E323535005F000100006C0004000000
+ 010051000400000001006D0004000000010001004A003800020002001D0004000000FF000200
+ 200014000101005D0005066A0000020018000E6170706C69636174696F6E323535006C000400
+ 0000020051000400000001006D0004000000010003001C006C000400000001002C0001020004
+ 000B002A000101001E000228FF0003002A006C000400000002002C00010200040019002A0001
+ 000054000A0100B10A0A0E0B000183001E000228FF0006002000510004000000010025000283
+ 00003E000102001F00090100000000004E20000007001B006D0004000000010019000100001A
+ 000A0000001000000000100000710001010039000D02000000007A42386005000304'O;
+
+ var octetstring vl_pfcp_pdu_oct_encoded := enc_PDU_PFCP(valueof(t_PDU_PFCP));
+ var PDU_PFCP vl_pfcp_pdu_decoded_v1 := dec_PDU_PFCP(vl_pfcp_pdu_oct);
+ var PDU_PFCP vl_pfcp_pdu_decoded_v2 := dec_PDU_PFCP(vl_pfcp_pdu_oct_encoded);
+ if (match(vl_pfcp_pdu_decoded_v1, valueof(t_PDU_PFCP)) and
+ match(vl_pfcp_pdu_decoded_v1, vl_pfcp_pdu_decoded_v2))
+ {
+ log("Match OK for PDU_PFCP!");
+ setverdict(pass);
+ } else {
+ log("Match failed for PDU_PFCP!");
+ setverdict(fail);
+ }
+}
+
+control {
+ execute (tc_PFCP_test());
+}
+
+} // end of module
diff --git a/test/PFCP_Test_Templates.ttcn b/test/PFCP_Test_Templates.ttcn
new file mode 100644
index 0000000..3f434b5
--- /dev/null
+++ b/test/PFCP_Test_Templates.ttcn
@@ -0,0 +1,484 @@
+///////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2000-2018 Ericsson Telecom AB
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v2.0
+// which accompanies this distribution, and is available at
+// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: PFCP_Test_Templates.ttcn
+// Description: PFCP protocol module
+// Rev: <RnXnn>
+// Prodnr: CNL 113 875
+// Contact: http://ttcn.ericsson.se
+// Reference: 3GPP TS 29.244 v15.1.0
+//
+
+module PFCP_Test_Templates {
+
+import from PFCP_Types all;
+
+template PDU_PFCP t_PDU_PFCP :=
+{
+ s_flag := '1'B,
+ mp := '0'B,
+ spare := '000'B,
+ version := 1,
+ message_type := 50,
+ lengthIndicator := 355,
+ seid := '0000000000000000'O,
+ sequence_number := 1589249,
+ spare2 := '0000'B,
+ mp_or_spare := '0000'B,
+ message_body :=
+ {
+ pfcp_session_establishment_request :=
+ {
+ node_id :=
+ {
+ elementIdentifier := 60,
+ lengthIndicator := 5,
+ node_id_type := 0,
+ spare := '0000'B,
+ node_id_value := '05000304'O
+ },
+ CP_F_SEID :=
+ {
+ elementIdentifier := 57,
+ lengthIndicator := 13,
+ v6 := '0'B,
+ v4 := '1'B,
+ spare := '000000'B,
+ seid := '000000007A423860'O,
+ ipv4_address := '05000304'O,
+ ipv6_address := omit
+ },
+ create_PDR_list :=
+ {
+ {
+ elementIdentifier := 1,
+ lengthIndicator := 85,
+ grouped_ie :=
+ {
+ pdr_id :=
+ {
+ elementIdentifier := 56,
+ lengthIndicator := 2,
+ rule_id := '0001'O
+ },
+ precedence :=
+ {
+ elementIdentifier := 29,
+ lengthIndicator := 4,
+ precedence_value := 255
+ },
+ pdi :=
+ {
+ elementIdentifier := 2,
+ lengthIndicator := 38,
+ grouped_ie :=
+ {
+ source_interface :=
+ {
+ elementIdentifier := 20,
+ lengthIndicator := 1,
+ interfacevalue := 0,
+ spare := '0000'B
+ },
+ local_F_TEID :=
+ {
+ elementIdentifier := 21,
+ lengthIndicator := 2,
+ v4 := '1'B,
+ v6 := '0'B,
+ ch := '1'B,
+ chid := '1'B,
+ spare := '0000'B,
+ teid := omit,
+ ipv4_address := omit,
+ ipv6_address := omit,
+ choose_id := '00'O
+ },
+ pdn_instance := omit,
+ ue_ip_address :=
+ {
+ elementIdentifier := 93,
+ lengthIndicator := 5,
+ v6 := '0'B,
+ v4 := '1'B,
+ sd := '0'B,
+ spare := '00000'B,
+ ipv4_address := '6A000002'O,
+ ipv6_address := omit
+ },
+ traffic_endpoint_id := omit,
+ sdf_filter_list := omit,
+ application_id :=
+ {
+ elementIdentifier := 24,
+ lengthIndicator := 14,
+ application_id := '6170706C69636174696F6E323535'O
+ },
+ ethernet_packet_filter_list := omit,
+ qfi_list := omit
+ }
+ },
+ outer_header_removal :=
+ {
+ elementIdentifier := 95,
+ lengthIndicator := 1,
+ ohc_description := 0
+ },
+ FAR_ID_list :=
+ {
+ {
+ elementIdentifier := 108,
+ lengthIndicator := 4,
+ id_value := 1
+ }
+ },
+ uRR_ID_list :=
+ {
+ {
+ elementIdentifier := 81,
+ lengthIndicator := 4,
+ id_value := 1
+ }
+ },
+ qER_ID_list :=
+ {
+ {
+ elementIdentifier := 109,
+ lengthIndicator := 4,
+ id_value := 1
+ }
+ },
+ activate_predefined_rules := omit
+ }
+ },
+ {
+ elementIdentifier := 1,
+ lengthIndicator := 74,
+ grouped_ie :=
+ {
+ pdr_id :=
+ {
+ elementIdentifier := 56,
+ lengthIndicator := 2,
+ rule_id := '0002'O
+ },
+ precedence :=
+ {
+ elementIdentifier := 29,
+ lengthIndicator := 4,
+ precedence_value := 255
+ },
+ pdi :=
+ {
+ elementIdentifier := 2,
+ lengthIndicator := 32,
+ grouped_ie :=
+ {
+ source_interface :=
+ {
+ elementIdentifier := 20,
+ lengthIndicator := 1,
+ interfacevalue := 1,
+ spare := '0000'B
+ },
+ local_F_TEID := omit,
+ pdn_instance := omit,
+ ue_ip_address :=
+ {
+ elementIdentifier := 93,
+ lengthIndicator := 5,
+ v6 := '0'B,
+ v4 := '1'B,
+ sd := '1'B,
+ spare := '00000'B,
+ ipv4_address := '6A000002'O,
+ ipv6_address := omit
+ },
+ traffic_endpoint_id := omit,
+ sdf_filter_list := omit,
+ application_id :=
+ {
+ elementIdentifier := 24,
+ lengthIndicator := 14,
+ application_id := '6170706C69636174696F6E323535'O
+ },
+ ethernet_packet_filter_list := omit,
+ qfi_list := omit
+ }
+ },
+ outer_header_removal := omit,
+ FAR_ID_list :=
+ {
+ {
+ elementIdentifier := 108,
+ lengthIndicator := 4,
+ id_value := 2
+ }
+ },
+ uRR_ID_list :=
+ {
+ {
+ elementIdentifier := 81,
+ lengthIndicator := 4,
+ id_value := 1
+ }
+ },
+ qER_ID_list :=
+ {
+ {
+ elementIdentifier := 109,
+ lengthIndicator := 4,
+ id_value := 1
+ }
+ },
+ activate_predefined_rules := omit
+ }
+ }
+ },
+ create_FAR_list :=
+ {
+ {
+ elementIdentifier := 3,
+ lengthIndicator := 28,
+ grouped_ie :=
+ {
+ far_id :=
+ {
+ elementIdentifier := 108,
+ lengthIndicator := 4,
+ id_value := 1
+ },
+ apply_action :=
+ {
+ elementIdentifier := 44,
+ lengthIndicator := 1,
+ drop := '0'B,
+ forw := '1'B,
+ buff := '0'B,
+ nocp := '0'B,
+ dupl := '0'B,
+ spare := '000'B
+ },
+ forwarding_parameters :=
+ {
+ elementIdentifier := 4,
+ lengthIndicator := 11,
+ grouped_ie :=
+ {
+ destination_interface :=
+ {
+ elementIdentifier := 42,
+ lengthIndicator := 1,
+ interface_value := 1,
+ spare := '0000'B
+ },
+ pdn_Instance := omit,
+ redirect_information := omit,
+ outer_header_creation := omit,
+ transport_level_marking :=
+ {
+ elementIdentifier := 30,
+ lengthIndicator := 2,
+ ToS_traffic_class := '28FF'O
+ },
+ forwarding_policy := omit,
+ header_enrichment := omit,
+ traffic_endpoint_ID := omit
+ }
+ },
+ duplicating_parameters := omit,
+ bar_id := omit
+ }
+ },
+ {
+ elementIdentifier := 3,
+ lengthIndicator := 42,
+ grouped_ie :=
+ {
+ far_id :=
+ {
+ elementIdentifier := 108,
+ lengthIndicator := 4,
+ id_value := 2
+ },
+ apply_action :=
+ {
+ elementIdentifier := 44,
+ lengthIndicator := 1,
+ drop := '0'B,
+ forw := '1'B,
+ buff := '0'B,
+ nocp := '0'B,
+ dupl := '0'B,
+ spare := '000'B
+ },
+ forwarding_parameters :=
+ {
+ elementIdentifier := 4,
+ lengthIndicator := 25,
+ grouped_ie :=
+ {
+ destination_interface :=
+ {
+ elementIdentifier := 42,
+ lengthIndicator := 1,
+ interface_value := 0,
+ spare := '0000'B
+ },
+ pdn_Instance := omit,
+ redirect_information := omit,
+ outer_header_creation :=
+ {
+ elementIdentifier := 84,
+ lengthIndicator := 10,
+ ohc_description_oct5 := '00000001'B,
+ ohc_description_oct6 := '00000000'B,
+ teid := 'B10A0A0E'O,
+ ipv4 := '0B000183'O,
+ ipv6 := omit,
+ udp_port := omit
+ },
+ transport_level_marking :=
+ {
+ elementIdentifier := 30,
+ lengthIndicator := 2,
+ ToS_traffic_class := '28FF'O
+ },
+ forwarding_policy := omit,
+ header_enrichment := omit,
+ traffic_endpoint_ID := omit
+ }
+ },
+ duplicating_parameters := omit,
+ bar_id := omit
+ }
+ }
+ },
+ create_URR_list :=
+ {
+ {
+ elementIdentifier := 6,
+ lengthIndicator := 32,
+ grouped_ie :=
+ {
+ urr_id :=
+ {
+ elementIdentifier := 81,
+ lengthIndicator := 4,
+ id_value := 1
+ },
+ measurement_method :=
+ {
+ elementIdentifier := 62,
+ lengthIndicator := 1,
+ durat := '0'B,
+ volum := '1'B,
+ event := '0'B,
+ spare := '00000'B
+ },
+ reporting_triggers :=
+ {
+ elementIdentifier := 37,
+ lengthIndicator := 2,
+ perio := '1'B,
+ volth := '1'B,
+ timth := '0'B,
+ quhti := '0'B,
+ start_ := '0'B,
+ stop_ := '0'B,
+ droth := '0'B,
+ liusa := '1'B,
+ volqu := '0'B,
+ timqu := '0'B,
+ envcl := '0'B,
+ spare := '00000'B
+ },
+ measurement_period := omit,
+ volume_threshold :=
+ {
+ elementIdentifier := 31,
+ lengthIndicator := 9,
+ tovol := '1'B,
+ ulvol := '0'B,
+ dlvol := '0'B,
+ spare := '00000'B,
+ total_volume := 5120000,
+ uplink_volume := omit,
+ downlink_volume := omit
+ },
+ volume_quota := omit,
+ time_threshold := omit,
+ time_quota := omit,
+ quota_holding_time := omit,
+ dropped_dl_traffic_threshold := omit,
+ monitoring_time := omit,
+ subsequent_volume_threshold := omit,
+ subsequent_time_threshold := omit,
+ subsequent_volume_quota := omit,
+ subsequent_time_quota := omit,
+ inactivity_detection_time := omit,
+ linked_urr_id := omit,
+ measurement_information := omit,
+ time_qouta_mechanism := omit,
+ aggregated_urrs := omit
+ }
+ }
+ },
+ create_QER_list :=
+ {
+ {
+ elementIdentifier := 7,
+ lengthIndicator := 27,
+ grouped_ie :=
+ {
+ qer_id :=
+ {
+ elementIdentifier := 109,
+ lengthIndicator := 4,
+ id_value := 1
+ },
+ qer_correlation_id := omit,
+ gate_status :=
+ {
+ elementIdentifier := 25,
+ lengthIndicator := 1,
+ dl_gate := 0,
+ ul_gate := 0,
+ spare := '0000'B
+ },
+ mbr :=
+ {
+ elementIdentifier := 26,
+ lengthIndicator := 10,
+ ul_mbr := '0000001000'O,
+ dl_mbr := '0000001000'O
+ },
+ gbr := omit,
+ packet_rate := omit,
+ dl_transport_level_marking := omit,
+ qfi := omit,
+ rqi := omit
+ }
+ }
+ },
+ create_BAR := omit,
+ create_traffic_endpoint_list := omit,
+ pdn_type :=
+ {
+ elementIdentifier := 113,
+ lengthIndicator := 1,
+ pdn_type := 1,
+ spare := '00000'B
+ },
+ node_list := omit,
+ up_inactivity_timer := omit
+ }
+ }
+};
+
+} // end of module
diff --git a/test/PFCP_v15.1.0_CNL113875.tpd b/test/PFCP_v15.1.0_CNL113875.tpd
new file mode 100644
index 0000000..089883b
--- /dev/null
+++ b/test/PFCP_v15.1.0_CNL113875.tpd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>PFCP_v15.1.0_CNL113875_test</ProjectName>
+ <ReferencedProjects>
+ <ReferencedProject name="PFCP_v15.1.0_CNL113875" projectLocationURI="../PFCP_v15.1.0_CNL113875.tpd"/>
+ </ReferencedProjects>
+ <Files>
+ <FileResource projectRelativePath="PFCP_Test.cfg" relativeURI="PFCP_Test.cfg"/>
+ <FileResource projectRelativePath="PFCP_Test.ttcn" relativeURI="PFCP_Test.ttcn"/>
+ <FileResource projectRelativePath="PFCP_Test_Templates.ttcn" relativeURI="PFCP_Test_Templates.ttcn"/>
+ </Files>
+ <ActiveConfiguration>Default</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/PFCP_v15.1.0_CNL113875_test</targetExecutable>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ </Configuration>
+ </Configurations>
+</TITAN_Project_File_Information>