// This C++ source file was generated by the TTCN-3 compiler // of the TTCN-3 Test Executor version 11.1.0 // The generation of user and time information were disabled by the -D flag. // Copyright (c) 2000-2025 Ericsson Telecom AB // Do not edit this file unless you know what you are doing. /* Including header files */ #include "PFCP_Templates.hh" namespace PFCP__Templates { /* Literal string constants */ const unsigned char bs_1_bits[] = { 0 }, bs_2_bits[] = { 0 }, bs_0_bits[] = { 0 }, bs_5_bits[] = { 0 }, bs_4_bits[] = { 0 }, bs_7_bits[] = { 0 }, bs_6_bits[] = { 128 }, bs_3_bits[] = { 1 }; extern const BITSTRING bs_1(1, bs_1_bits), bs_2(3, bs_2_bits), bs_0(4, bs_0_bits), bs_5(5, bs_5_bits), bs_4(6, bs_4_bits), bs_7(8, bs_7_bits), bs_6(8, bs_6_bits), bs_3(1, bs_3_bits); const unsigned char os_0_octets[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; extern const OCTETSTRING os_0(8, os_0_octets); const unsigned char module_checksum[] = { 0x91, 0x45, 0xe9, 0x1a, 0xf7, 0x4a, 0xdc, 0x47, 0x1b, 0x31, 0xf5, 0x89, 0x1b, 0x1c, 0x00, 0x7e }; /* Global variable definitions */ // No XER for e__PFCP__Cause const TTCN_Typedescriptor_t e__PFCP__Cause_descr_ = { "@PFCP_Templates.e_PFCP_Cause", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; INTEGER const_PFCP__Node__ID__IPv4; const INTEGER& PFCP__Node__ID__IPv4 = const_PFCP__Node__ID__IPv4; INTEGER const_PFCP__Node__ID__IPv6; const INTEGER& PFCP__Node__ID__IPv6 = const_PFCP__Node__ID__IPv6; INTEGER const_PFCP__Node__ID__FQDN; const INTEGER& PFCP__Node__ID__FQDN = const_PFCP__Node__ID__FQDN; INTEGER_template template_tr__PFCP__Node__ID_id__type_defval; const INTEGER_template& tr__PFCP__Node__ID_id__type_defval = template_tr__PFCP__Node__ID_id__type_defval; OCTETSTRING_template template_tr__PFCP__Node__ID_id__value_defval; const OCTETSTRING_template& tr__PFCP__Node__ID_id__value_defval = template_tr__PFCP__Node__ID_id__value_defval; INTEGER_template template_tr__PFCP__Recovery__Timestamp_time__value_defval; const INTEGER_template& tr__PFCP__Recovery__Timestamp_time__value_defval = template_tr__PFCP__Recovery__Timestamp_time__value_defval; PFCP__Types::PDU__PFCP_template template_ts__PDU__PFCP__; const PFCP__Types::PDU__PFCP_template& ts__PDU__PFCP__ = template_ts__PDU__PFCP__; PFCP__Types::PDU__PFCP_template template_tr__PDU__PFCP__; const PFCP__Types::PDU__PFCP_template& tr__PDU__PFCP__ = template_tr__PDU__PFCP__; INTEGER_template template_tr__PFCP__Heartbeat__Req_recovery__time__stamp_defval; const INTEGER_template& tr__PFCP__Heartbeat__Req_recovery__time__stamp_defval = template_tr__PFCP__Heartbeat__Req_recovery__time__stamp_defval; INTEGER_template template_tr__PFCP__Heartbeat__Resp_recovery__time__stamp_defval; const INTEGER_template& tr__PFCP__Heartbeat__Resp_recovery__time__stamp_defval = template_tr__PFCP__Heartbeat__Resp_recovery__time__stamp_defval; PFCP__Types::Node__ID_template template_tr__PFCP__Assoc__Setup__Req_node__id_defval; const PFCP__Types::Node__ID_template& tr__PFCP__Assoc__Setup__Req_node__id_defval = template_tr__PFCP__Assoc__Setup__Req_node__id_defval; PFCP__Types::Node__ID_template template_tr__PFCP__Assoc__Setup__Resp_node__id_defval; const PFCP__Types::Node__ID_template& tr__PFCP__Assoc__Setup__Resp_node__id_defval = template_tr__PFCP__Assoc__Setup__Resp_node__id_defval; PFCP__Types::Cause_template template_tr__PFCP__Assoc__Setup__Resp_cause_defval; const PFCP__Types::Cause_template& tr__PFCP__Assoc__Setup__Resp_cause_defval = template_tr__PFCP__Assoc__Setup__Resp_cause_defval; PFCP__Types::Node__ID_template template_tr__PFCP__Assoc__Release__Req_node__id_defval; const PFCP__Types::Node__ID_template& tr__PFCP__Assoc__Release__Req_node__id_defval = template_tr__PFCP__Assoc__Release__Req_node__id_defval; PFCP__Types::Node__ID_template template_tr__PFCP__Assoc__Release__Resp_node__id_defval; const PFCP__Types::Node__ID_template& tr__PFCP__Assoc__Release__Resp_node__id_defval = template_tr__PFCP__Assoc__Release__Resp_node__id_defval; PFCP__Types::Cause_template template_tr__PFCP__Assoc__Release__Resp_cause_defval; const PFCP__Types::Cause_template& tr__PFCP__Assoc__Release__Resp_cause_defval = template_tr__PFCP__Assoc__Release__Resp_cause_defval; OCTETSTRING_template template_tr__PFCP__F__SEID__ipv4_addr__v4_defval; const OCTETSTRING_template& tr__PFCP__F__SEID__ipv4_addr__v4_defval = template_tr__PFCP__F__SEID__ipv4_addr__v4_defval; OCTETSTRING_template template_tr__PFCP__F__SEID__ipv4_seid_defval; const OCTETSTRING_template& tr__PFCP__F__SEID__ipv4_seid_defval = template_tr__PFCP__F__SEID__ipv4_seid_defval; // No XER for e__PFCP__Src__Iface const TTCN_Typedescriptor_t e__PFCP__Src__Iface_descr_ = { "@PFCP_Templates.e_PFCP_Src_Iface", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; BOOLEAN const_ts__PFCP__UE__IP__Address__v4_is__destination_defval; const BOOLEAN& ts__PFCP__UE__IP__Address__v4_is__destination_defval = const_ts__PFCP__UE__IP__Address__v4_is__destination_defval; OCTETSTRING_template template_ts__PFCP__F__TEID__choose__v4_choose__id_defval; const OCTETSTRING_template& ts__PFCP__F__TEID__choose__v4_choose__id_defval = template_ts__PFCP__F__TEID__choose__v4_choose__id_defval; PFCP__Types::F__TEID_template template_ts__PFCP__PDI_local__F__TEID_defval; const PFCP__Types::F__TEID_template& ts__PFCP__PDI_local__F__TEID_defval = template_ts__PFCP__PDI_local__F__TEID_defval; PFCP__Types::UE__IP__Address_template template_ts__PFCP__PDI_ue__addr__v4_defval; const PFCP__Types::UE__IP__Address_template& ts__PFCP__PDI_ue__addr__v4_defval = template_ts__PFCP__PDI_ue__addr__v4_defval; PFCP__Types::Network__Instance_template template_ts__PFCP__PDI_network__instance_defval; const PFCP__Types::Network__Instance_template& ts__PFCP__PDI_network__instance_defval = template_ts__PFCP__PDI_network__instance_defval; PFCP__Types::F__TEID_template template_tr__PFCP__PDI_local__F__TEID_defval; const PFCP__Types::F__TEID_template& tr__PFCP__PDI_local__F__TEID_defval = template_tr__PFCP__PDI_local__F__TEID_defval; PFCP__Types::UE__IP__Address_template template_tr__PFCP__PDI_ue__addr__v4_defval; const PFCP__Types::UE__IP__Address_template& tr__PFCP__PDI_ue__addr__v4_defval = template_tr__PFCP__PDI_ue__addr__v4_defval; PFCP__Types::Network__Instance_template template_tr__PFCP__PDI_network__instance_defval; const PFCP__Types::Network__Instance_template& tr__PFCP__PDI_network__instance_defval = template_tr__PFCP__PDI_network__instance_defval; BITSTRING const_ts__PFCP__Apply__Action_forw_defval; const BITSTRING& ts__PFCP__Apply__Action_forw_defval = const_ts__PFCP__Apply__Action_forw_defval; BITSTRING const_ts__PFCP__Apply__Action_drop_defval; const BITSTRING& ts__PFCP__Apply__Action_drop_defval = const_ts__PFCP__Apply__Action_drop_defval; BITSTRING const_ts__PFCP__Apply__Action_buff_defval; const BITSTRING& ts__PFCP__Apply__Action_buff_defval = const_ts__PFCP__Apply__Action_buff_defval; BITSTRING_template template_tr__PFCP__Apply__Action_forw_defval; const BITSTRING_template& tr__PFCP__Apply__Action_forw_defval = template_tr__PFCP__Apply__Action_forw_defval; BITSTRING_template template_tr__PFCP__Apply__Action_drop_defval; const BITSTRING_template& tr__PFCP__Apply__Action_drop_defval = template_tr__PFCP__Apply__Action_drop_defval; BITSTRING_template template_tr__PFCP__Apply__Action_buff_defval; const BITSTRING_template& tr__PFCP__Apply__Action_buff_defval = template_tr__PFCP__Apply__Action_buff_defval; PFCP__Types::Apply__Action_template template_ts__PFCP__Apply__Action__FORW; const PFCP__Types::Apply__Action_template& ts__PFCP__Apply__Action__FORW = template_ts__PFCP__Apply__Action__FORW; PFCP__Types::Apply__Action_template template_tr__PFCP__Apply__Action__FORW; const PFCP__Types::Apply__Action_template& tr__PFCP__Apply__Action__FORW = template_tr__PFCP__Apply__Action__FORW; PFCP__Types::Apply__Action_template template_ts__PFCP__Apply__Action__DROP; const PFCP__Types::Apply__Action_template& ts__PFCP__Apply__Action__DROP = template_ts__PFCP__Apply__Action__DROP; PFCP__Types::Apply__Action_template template_tr__PFCP__Apply__Action__DROP; const PFCP__Types::Apply__Action_template& tr__PFCP__Apply__Action__DROP = template_tr__PFCP__Apply__Action__DROP; PFCP__Types::Apply__Action_template template_ts__PFCP__Apply__Action__BUFF; const PFCP__Types::Apply__Action_template& ts__PFCP__Apply__Action__BUFF = template_ts__PFCP__Apply__Action__BUFF; PFCP__Types::Apply__Action_template template_tr__PFCP__Apply__Action__BUFF; const PFCP__Types::Apply__Action_template& tr__PFCP__Apply__Action__BUFF = template_tr__PFCP__Apply__Action__BUFF; // No XER for e__PFCP__Dest__Iface const TTCN_Typedescriptor_t e__PFCP__Dest__Iface_descr_ = { "@PFCP_Templates.e_PFCP_Dest_Iface", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; OCTETSTRING_template template_tr__PFCP__Outer__Header__Creation__GTP__ipv4_remote__teid_defval; const OCTETSTRING_template& tr__PFCP__Outer__Header__Creation__GTP__ipv4_remote__teid_defval = template_tr__PFCP__Outer__Header__Creation__GTP__ipv4_remote__teid_defval; OCTETSTRING_template template_tr__PFCP__Outer__Header__Creation__GTP__ipv4_remote__addr__v4_defval; const OCTETSTRING_template& tr__PFCP__Outer__Header__Creation__GTP__ipv4_remote__addr__v4_defval = template_tr__PFCP__Outer__Header__Creation__GTP__ipv4_remote__addr__v4_defval; // No XER for e__PFCP__Outer__Header__Removal const TTCN_Typedescriptor_t e__PFCP__Outer__Header__Removal_descr_ = { "@PFCP_Templates.e_PFCP_Outer_Header_Removal", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; PFCP__Types::Outer__Header__Creation_template template_ts__PFCP__Forwarding__Parameters_ohc_defval; const PFCP__Types::Outer__Header__Creation_template& ts__PFCP__Forwarding__Parameters_ohc_defval = template_ts__PFCP__Forwarding__Parameters_ohc_defval; PFCP__Types::Network__Instance_template template_ts__PFCP__Forwarding__Parameters_network__instance_defval; const PFCP__Types::Network__Instance_template& ts__PFCP__Forwarding__Parameters_network__instance_defval = template_ts__PFCP__Forwarding__Parameters_network__instance_defval; PFCP__Types::Outer__Header__Creation_template template_tr__PFCP__Forwarding__Parameters_ohc_defval; const PFCP__Types::Outer__Header__Creation_template& tr__PFCP__Forwarding__Parameters_ohc_defval = template_tr__PFCP__Forwarding__Parameters_ohc_defval; PFCP__Types::Network__Instance_template template_tr__PFCP__Forwarding__Parameters_network__instance_defval; const PFCP__Types::Network__Instance_template& tr__PFCP__Forwarding__Parameters_network__instance_defval = template_tr__PFCP__Forwarding__Parameters_network__instance_defval; PFCP__Types::Destination__Interface_template template_ts__PFCP__Update__Forwarding__Parameters_dest__iface_defval; const PFCP__Types::Destination__Interface_template& ts__PFCP__Update__Forwarding__Parameters_dest__iface_defval = template_ts__PFCP__Update__Forwarding__Parameters_dest__iface_defval; PFCP__Types::Outer__Header__Creation_template template_ts__PFCP__Update__Forwarding__Parameters_ohc_defval; const PFCP__Types::Outer__Header__Creation_template& ts__PFCP__Update__Forwarding__Parameters_ohc_defval = template_ts__PFCP__Update__Forwarding__Parameters_ohc_defval; PFCP__Types::Network__Instance_template template_ts__PFCP__Update__Forwarding__Parameters_network__instance_defval; const PFCP__Types::Network__Instance_template& ts__PFCP__Update__Forwarding__Parameters_network__instance_defval = template_ts__PFCP__Update__Forwarding__Parameters_network__instance_defval; PFCP__Types::Destination__Interface_template template_tr__PFCP__Update__Forwarding__Parameters_dest__iface_defval; const PFCP__Types::Destination__Interface_template& tr__PFCP__Update__Forwarding__Parameters_dest__iface_defval = template_tr__PFCP__Update__Forwarding__Parameters_dest__iface_defval; PFCP__Types::Outer__Header__Creation_template template_tr__PFCP__Update__Forwarding__Parameters_ohc_defval; const PFCP__Types::Outer__Header__Creation_template& tr__PFCP__Update__Forwarding__Parameters_ohc_defval = template_tr__PFCP__Update__Forwarding__Parameters_ohc_defval; PFCP__Types::Network__Instance_template template_tr__PFCP__Update__Forwarding__Parameters_network__instance_defval; const PFCP__Types::Network__Instance_template& tr__PFCP__Update__Forwarding__Parameters_network__instance_defval = template_tr__PFCP__Update__Forwarding__Parameters_network__instance_defval; INTEGER_template template_tr__PFCP__FAR__ID_far__id_defval; const INTEGER_template& tr__PFCP__FAR__ID_far__id_defval = template_tr__PFCP__FAR__ID_far__id_defval; INTEGER_template template_tr__PFCP__Create__FAR_far__id_defval; const INTEGER_template& tr__PFCP__Create__FAR_far__id_defval = template_tr__PFCP__Create__FAR_far__id_defval; PFCP__Types::Apply__Action_template template_tr__PFCP__Create__FAR_aa_defval; const PFCP__Types::Apply__Action_template& tr__PFCP__Create__FAR_aa_defval = template_tr__PFCP__Create__FAR_aa_defval; PFCP__Types::Forwarding__Parameters_template template_tr__PFCP__Create__FAR_fp_defval; const PFCP__Types::Forwarding__Parameters_template& tr__PFCP__Create__FAR_fp_defval = template_tr__PFCP__Create__FAR_fp_defval; INTEGER_template template_tr__PFCP__Update__FAR_far__id_defval; const INTEGER_template& tr__PFCP__Update__FAR_far__id_defval = template_tr__PFCP__Update__FAR_far__id_defval; PFCP__Types::Apply__Action_template template_tr__PFCP__Update__FAR_aa_defval; const PFCP__Types::Apply__Action_template& tr__PFCP__Update__FAR_aa_defval = template_tr__PFCP__Update__FAR_aa_defval; PFCP__Types::Update__Forwarding__Parameters_template template_tr__PFCP__Update__FAR_fp_defval; const PFCP__Types::Update__Forwarding__Parameters_template& tr__PFCP__Update__FAR_fp_defval = template_tr__PFCP__Update__FAR_fp_defval; PFCP__Types::Outer__Header__Removal_template template_ts__PFCP__Create__PDR_ohr_defval; const PFCP__Types::Outer__Header__Removal_template& ts__PFCP__Create__PDR_ohr_defval = template_ts__PFCP__Create__PDR_ohr_defval; PFCP__Types::PDI__IE_template template_tr__PFCP__Create__PDR_pdi_defval; const PFCP__Types::PDI__IE_template& tr__PFCP__Create__PDR_pdi_defval = template_tr__PFCP__Create__PDR_pdi_defval; PFCP__Types::Outer__Header__Removal_template template_tr__PFCP__Create__PDR_ohr_defval; const PFCP__Types::Outer__Header__Removal_template& tr__PFCP__Create__PDR_ohr_defval = template_tr__PFCP__Create__PDR_ohr_defval; INTEGER_template template_tr__PFCP__Create__PDR_far__id_defval; const INTEGER_template& tr__PFCP__Create__PDR_far__id_defval = template_tr__PFCP__Create__PDR_far__id_defval; PFCP__Types::Node__ID_template template_tr__PFCP__Session__Est__Req_node__id_defval; const PFCP__Types::Node__ID_template& tr__PFCP__Session__Est__Req_node__id_defval = template_tr__PFCP__Session__Est__Req_node__id_defval; PFCP__Types::F__SEID_template template_tr__PFCP__Session__Est__Req_cp__f__seid_defval; const PFCP__Types::F__SEID_template& tr__PFCP__Session__Est__Req_cp__f__seid_defval = template_tr__PFCP__Session__Est__Req_cp__f__seid_defval; PFCP__Types::Create__PDR__list_template template_tr__PFCP__Session__Est__Req_create__pdr_defval; const PFCP__Types::Create__PDR__list_template& tr__PFCP__Session__Est__Req_create__pdr_defval = template_tr__PFCP__Session__Est__Req_create__pdr_defval; PFCP__Types::Create__FAR__list_template template_tr__PFCP__Session__Est__Req_create__far_defval; const PFCP__Types::Create__FAR__list_template& tr__PFCP__Session__Est__Req_create__far_defval = template_tr__PFCP__Session__Est__Req_create__far_defval; PFCP__Types::Cause_template template_ts__PFCP__Session__Est__Resp_cause_defval; const PFCP__Types::Cause_template& ts__PFCP__Session__Est__Resp_cause_defval = template_ts__PFCP__Session__Est__Resp_cause_defval; INTEGER_template template_tr__PFCP__Session__Est__Resp_seq__nr_defval; const INTEGER_template& tr__PFCP__Session__Est__Resp_seq__nr_defval = template_tr__PFCP__Session__Est__Resp_seq__nr_defval; PFCP__Types::Node__ID_template template_tr__PFCP__Session__Est__Resp_node__id_defval; const PFCP__Types::Node__ID_template& tr__PFCP__Session__Est__Resp_node__id_defval = template_tr__PFCP__Session__Est__Resp_node__id_defval; OCTETSTRING_template template_tr__PFCP__Session__Est__Resp_seid_defval; const OCTETSTRING_template& tr__PFCP__Session__Est__Resp_seid_defval = template_tr__PFCP__Session__Est__Resp_seid_defval; PFCP__Types::F__SEID_template template_tr__PFCP__Session__Est__Resp_f__seid_defval; const PFCP__Types::F__SEID_template& tr__PFCP__Session__Est__Resp_f__seid_defval = template_tr__PFCP__Session__Est__Resp_f__seid_defval; PFCP__Types::PFCP__Session__Establishment__Response_created__PDR__list_template template_tr__PFCP__Session__Est__Resp_created__pdr_defval; const PFCP__Types::PFCP__Session__Establishment__Response_created__PDR__list_template& tr__PFCP__Session__Est__Resp_created__pdr_defval = template_tr__PFCP__Session__Est__Resp_created__pdr_defval; PFCP__Types::Cause_template template_tr__PFCP__Session__Est__Resp_cause_defval; const PFCP__Types::Cause_template& tr__PFCP__Session__Est__Resp_cause_defval = template_tr__PFCP__Session__Est__Resp_cause_defval; OCTETSTRING_template template_tr__PFCP__Session__Mod__Req_seid_defval; const OCTETSTRING_template& tr__PFCP__Session__Mod__Req_seid_defval = template_tr__PFCP__Session__Mod__Req_seid_defval; PFCP__Types::Update__FAR_template template_tr__PFCP__Session__Mod__Req_update__far_defval; const PFCP__Types::Update__FAR_template& tr__PFCP__Session__Mod__Req_update__far_defval = template_tr__PFCP__Session__Mod__Req_update__far_defval; PFCP__Types::Cause_template template_ts__PFCP__Session__Mod__Resp_cause_defval; const PFCP__Types::Cause_template& ts__PFCP__Session__Mod__Resp_cause_defval = template_ts__PFCP__Session__Mod__Resp_cause_defval; OCTETSTRING_template template_tr__PFCP__Session__Mod__Resp_seid_defval; const OCTETSTRING_template& tr__PFCP__Session__Mod__Resp_seid_defval = template_tr__PFCP__Session__Mod__Resp_seid_defval; PFCP__Types::Cause_template template_tr__PFCP__Session__Mod__Resp_cause_defval; const PFCP__Types::Cause_template& tr__PFCP__Session__Mod__Resp_cause_defval = template_tr__PFCP__Session__Mod__Resp_cause_defval; OCTETSTRING_template template_tr__PFCP__Session__Del__Req_seid_defval; const OCTETSTRING_template& tr__PFCP__Session__Del__Req_seid_defval = template_tr__PFCP__Session__Del__Req_seid_defval; PFCP__Types::Cause_template template_ts__PFCP__Session__Del__Resp_cause_defval; const PFCP__Types::Cause_template& ts__PFCP__Session__Del__Resp_cause_defval = template_ts__PFCP__Session__Del__Resp_cause_defval; PFCP__Types::Cause_template template_tr__PFCP__Session__Del__Resp_cause_defval; const PFCP__Types::Cause_template& tr__PFCP__Session__Del__Resp_cause_defval = template_tr__PFCP__Session__Del__Resp_cause_defval; TTCN_Module module_object("PFCP_Templates", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, NULL, NULL, NULL, NULL); const RuntimeVersionChecker ver_checker( current_runtime_version.requires_major_version_11, current_runtime_version.requires_minor_version_1, current_runtime_version.requires_patch_level_0, current_runtime_version.requires_runtime_1); /* Member functions of C++ classes */ e__PFCP__Cause::e__PFCP__Cause() { enum_value = UNBOUND_VALUE; } e__PFCP__Cause::e__PFCP__Cause(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @PFCP_Templates.e_PFCP_Cause with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } e__PFCP__Cause::e__PFCP__Cause(enum_type other_value) { enum_value = other_value; } e__PFCP__Cause::e__PFCP__Cause(const e__PFCP__Cause& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); enum_value = other_value.enum_value; } e__PFCP__Cause& e__PFCP__Cause::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @PFCP_Templates.e_PFCP_Cause.", other_value); enum_value = (enum_type)other_value; return *this; } e__PFCP__Cause& e__PFCP__Cause::operator=(enum_type other_value) { enum_value = other_value; return *this; } e__PFCP__Cause& e__PFCP__Cause::operator=(const e__PFCP__Cause& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); enum_value = other_value.enum_value; return *this; } boolean e__PFCP__Cause::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Cause comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean e__PFCP__Cause::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); return enum_value == other_value; } boolean e__PFCP__Cause::operator==(const e__PFCP__Cause& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); return enum_value == other_value.enum_value; } boolean e__PFCP__Cause::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Cause comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean e__PFCP__Cause::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); return enum_value < other_value; } boolean e__PFCP__Cause::operator<(const e__PFCP__Cause& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); return enum_value < other_value.enum_value; } boolean e__PFCP__Cause::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Cause comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean e__PFCP__Cause::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); return enum_value > other_value; } boolean e__PFCP__Cause::operator>(const e__PFCP__Cause& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); return enum_value > other_value.enum_value; } const char *e__PFCP__Cause::enum_to_str(enum_type enum_par) { switch (enum_par) { case RESERVED: return "RESERVED"; case REQUEST__ACCEPTED: return "REQUEST_ACCEPTED"; case MORE__USAGE__REPORT__TO__SEND: return "MORE_USAGE_REPORT_TO_SEND"; case REQUEST__REJECTED: return "REQUEST_REJECTED"; case SESSION__CTX__NOT__FOUND: return "SESSION_CTX_NOT_FOUND"; case MANDATORY__IE__MISSING: return "MANDATORY_IE_MISSING"; case CONDITIONAL__IE__MISSING: return "CONDITIONAL_IE_MISSING"; case INVALID__LENGTH: return "INVALID_LENGTH"; case MANDATORY__IE__INCORRECT: return "MANDATORY_IE_INCORRECT"; case INVALID__FORW__POLICY: return "INVALID_FORW_POLICY"; case INVALID__F__TEID__ALLOC__OPTION: return "INVALID_F_TEID_ALLOC_OPTION"; case NO__ESTABLISHED__PFCP__ASSOC: return "NO_ESTABLISHED_PFCP_ASSOC"; case RULE__CREATION__MOD__FAILURE: return "RULE_CREATION_MOD_FAILURE"; case PFCP__ENTITY__IN__CONGESTION: return "PFCP_ENTITY_IN_CONGESTION"; case NO__RESOURCES__AVAILABLE: return "NO_RESOURCES_AVAILABLE"; case SERVICE__NOT__SUPPORTED: return "SERVICE_NOT_SUPPORTED"; case SYSTEM__FAILURE: return "SYSTEM_FAILURE"; case REDIRECTION__REQUESTED: return "REDIRECTION_REQUESTED"; case ALL__DYNAMIC__ADDRESSES__ARE__OCCUPIED: return "ALL_DYNAMIC_ADDRESSES_ARE_OCCUPIED"; default: return ""; } } e__PFCP__Cause::enum_type e__PFCP__Cause::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "RESERVED")) return RESERVED; if (!strcmp(str_par, "REQUEST_ACCEPTED")) return REQUEST__ACCEPTED; if (!strcmp(str_par, "MORE_USAGE_REPORT_TO_SEND")) return MORE__USAGE__REPORT__TO__SEND; if (!strcmp(str_par, "REQUEST_REJECTED")) return REQUEST__REJECTED; if (!strcmp(str_par, "SESSION_CTX_NOT_FOUND")) return SESSION__CTX__NOT__FOUND; if (!strcmp(str_par, "MANDATORY_IE_MISSING")) return MANDATORY__IE__MISSING; if (!strcmp(str_par, "CONDITIONAL_IE_MISSING")) return CONDITIONAL__IE__MISSING; if (!strcmp(str_par, "INVALID_LENGTH")) return INVALID__LENGTH; if (!strcmp(str_par, "MANDATORY_IE_INCORRECT")) return MANDATORY__IE__INCORRECT; if (!strcmp(str_par, "INVALID_FORW_POLICY")) return INVALID__FORW__POLICY; if (!strcmp(str_par, "INVALID_F_TEID_ALLOC_OPTION")) return INVALID__F__TEID__ALLOC__OPTION; if (!strcmp(str_par, "NO_ESTABLISHED_PFCP_ASSOC")) return NO__ESTABLISHED__PFCP__ASSOC; if (!strcmp(str_par, "RULE_CREATION_MOD_FAILURE")) return RULE__CREATION__MOD__FAILURE; if (!strcmp(str_par, "PFCP_ENTITY_IN_CONGESTION")) return PFCP__ENTITY__IN__CONGESTION; if (!strcmp(str_par, "NO_RESOURCES_AVAILABLE")) return NO__RESOURCES__AVAILABLE; if (!strcmp(str_par, "SERVICE_NOT_SUPPORTED")) return SERVICE__NOT__SUPPORTED; if (!strcmp(str_par, "SYSTEM_FAILURE")) return SYSTEM__FAILURE; if (!strcmp(str_par, "REDIRECTION_REQUESTED")) return REDIRECTION__REQUESTED; if (!strcmp(str_par, "ALL_DYNAMIC_ADDRESSES_ARE_OCCUPIED")) return ALL__DYNAMIC__ADDRESSES__ARE__OCCUPIED; } return UNKNOWN_VALUE; } boolean e__PFCP__Cause::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: case 64: case 65: case 66: case 67: case 68: case 69: case 70: case 71: case 72: case 73: case 74: case 75: case 76: case 77: case 78: case 79: return TRUE; default: return FALSE; } } int e__PFCP__Cause::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @PFCP_Templates.e_PFCP_Cause.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int e__PFCP__Cause::enum2int(const e__PFCP__Cause& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @PFCP_Templates.e_PFCP_Cause.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void e__PFCP__Cause::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @PFCP_Templates.e_PFCP_Cause.", int_val); enum_value = (enum_type)int_val; } e__PFCP__Cause::operator e__PFCP__Cause::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @PFCP_Templates.e_PFCP_Cause."); return enum_value; } void e__PFCP__Cause::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void e__PFCP__Cause::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@PFCP_Templates.e_PFCP_Cause"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @PFCP_Templates.e_PFCP_Cause."); } } void e__PFCP__Cause::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); text_buf.push_int(enum_value); } void e__PFCP__Cause::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @PFCP_Templates.e_PFCP_Cause.", enum_value); } void e__PFCP__Cause_template::copy_template(const e__PFCP__Cause_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new e__PFCP__Cause_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new e__PFCP__Cause_template(*other_value.implication_.precondition); implication_.implied_template = new e__PFCP__Cause_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Cause."); } } e__PFCP__Cause_template::e__PFCP__Cause_template() { } e__PFCP__Cause_template::e__PFCP__Cause_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } e__PFCP__Cause_template::e__PFCP__Cause_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!e__PFCP__Cause::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @PFCP_Templates.e_PFCP_Cause with unknown numeric value %d.", other_value); single_value = (e__PFCP__Cause::enum_type)other_value; } e__PFCP__Cause_template::e__PFCP__Cause_template(e__PFCP__Cause::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } e__PFCP__Cause_template::e__PFCP__Cause_template(const e__PFCP__Cause& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == e__PFCP__Cause::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause."); single_value = other_value.enum_value; } e__PFCP__Cause_template::e__PFCP__Cause_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Cause::enum_type)(const e__PFCP__Cause&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @PFCP_Templates.e_PFCP_Cause from an unbound optional field."); } } e__PFCP__Cause_template::e__PFCP__Cause_template(e__PFCP__Cause_template* p_precondition, e__PFCP__Cause_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } e__PFCP__Cause_template::e__PFCP__Cause_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } e__PFCP__Cause_template::e__PFCP__Cause_template(const e__PFCP__Cause_template& other_value) : Base_Template() { copy_template(other_value); } e__PFCP__Cause_template::~e__PFCP__Cause_template() { clean_up(); } boolean e__PFCP__Cause_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean e__PFCP__Cause_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != e__PFCP__Cause::UNBOUND_VALUE; } void e__PFCP__Cause_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } e__PFCP__Cause_template& e__PFCP__Cause_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } e__PFCP__Cause_template& e__PFCP__Cause_template::operator=(int other_value) { if (!e__PFCP__Cause::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @PFCP_Templates.e_PFCP_Cause.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Cause::enum_type)other_value; return *this; } e__PFCP__Cause_template& e__PFCP__Cause_template::operator=(e__PFCP__Cause::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } e__PFCP__Cause_template& e__PFCP__Cause_template::operator=(const e__PFCP__Cause& other_value) { if (other_value.enum_value == e__PFCP__Cause::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PFCP_Templates.e_PFCP_Cause to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } e__PFCP__Cause_template& e__PFCP__Cause_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Cause::enum_type)(const e__PFCP__Cause&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @PFCP_Templates.e_PFCP_Cause."); } return *this; } e__PFCP__Cause_template& e__PFCP__Cause_template::operator=(const e__PFCP__Cause_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean e__PFCP__Cause_template::match(e__PFCP__Cause::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Cause."); } return FALSE; } boolean e__PFCP__Cause_template::match(const e__PFCP__Cause& other_value, boolean) const { if (other_value.enum_value == e__PFCP__Cause::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @PFCP_Templates.e_PFCP_Cause with an unbound value."); return match(other_value.enum_value); } e__PFCP__Cause::enum_type e__PFCP__Cause_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @PFCP_Templates.e_PFCP_Cause."); return single_value; } void e__PFCP__Cause_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new e__PFCP__Cause_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @PFCP_Templates.e_PFCP_Cause."); } } e__PFCP__Cause_template& e__PFCP__Cause_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @PFCP_Templates.e_PFCP_Cause."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @PFCP_Templates.e_PFCP_Cause."); return value_list.list_value[list_index]; } void e__PFCP__Cause_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(e__PFCP__Cause::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void e__PFCP__Cause_template::log_match(const e__PFCP__Cause& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void e__PFCP__Cause_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Cause."); } } void e__PFCP__Cause_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (e__PFCP__Cause::enum_type)text_buf.pull_int().get_val(); if (!e__PFCP__Cause::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @PFCP_Templates.e_PFCP_Cause.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new e__PFCP__Cause_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @PFCP_Templates.e_PFCP_Cause."); } } boolean e__PFCP__Cause_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean e__PFCP__Cause_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { e__PFCP__Cause_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { e__PFCP__Cause::enum_type enum_val = e__PFCP__Cause::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!e__PFCP__Cause::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @PFCP_Templates.e_PFCP_Cause."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { e__PFCP__Cause_template* precondition = new e__PFCP__Cause_template; precondition->set_param(*m_p->get_elem(0)); e__PFCP__Cause_template* implied_template = new e__PFCP__Cause_template; implied_template->set_param(*m_p->get_elem(1)); *this = e__PFCP__Cause_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@PFCP_Templates.e_PFCP_Cause"); } is_ifpresent = param.get_ifpresent(); } void e__PFCP__Cause_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@PFCP_Templates.e_PFCP_Cause"); } e__PFCP__Src__Iface::e__PFCP__Src__Iface() { enum_value = UNBOUND_VALUE; } e__PFCP__Src__Iface::e__PFCP__Src__Iface(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @PFCP_Templates.e_PFCP_Src_Iface with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } e__PFCP__Src__Iface::e__PFCP__Src__Iface(enum_type other_value) { enum_value = other_value; } e__PFCP__Src__Iface::e__PFCP__Src__Iface(const e__PFCP__Src__Iface& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); enum_value = other_value.enum_value; } e__PFCP__Src__Iface& e__PFCP__Src__Iface::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @PFCP_Templates.e_PFCP_Src_Iface.", other_value); enum_value = (enum_type)other_value; return *this; } e__PFCP__Src__Iface& e__PFCP__Src__Iface::operator=(enum_type other_value) { enum_value = other_value; return *this; } e__PFCP__Src__Iface& e__PFCP__Src__Iface::operator=(const e__PFCP__Src__Iface& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); enum_value = other_value.enum_value; return *this; } boolean e__PFCP__Src__Iface::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Src_Iface comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean e__PFCP__Src__Iface::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); return enum_value == other_value; } boolean e__PFCP__Src__Iface::operator==(const e__PFCP__Src__Iface& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); return enum_value == other_value.enum_value; } boolean e__PFCP__Src__Iface::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Src_Iface comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean e__PFCP__Src__Iface::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); return enum_value < other_value; } boolean e__PFCP__Src__Iface::operator<(const e__PFCP__Src__Iface& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); return enum_value < other_value.enum_value; } boolean e__PFCP__Src__Iface::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Src_Iface comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean e__PFCP__Src__Iface::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); return enum_value > other_value; } boolean e__PFCP__Src__Iface::operator>(const e__PFCP__Src__Iface& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); return enum_value > other_value.enum_value; } const char *e__PFCP__Src__Iface::enum_to_str(enum_type enum_par) { switch (enum_par) { case ACCESS: return "ACCESS"; case CORE: return "CORE"; case SGI__LAN__N6__LAN: return "SGI_LAN_N6_LAN"; case CP__FUNCTION: return "CP_FUNCTION"; case x__5G__VN__INTERNAL: return "x_5G_VN_INTERNAL"; default: return ""; } } e__PFCP__Src__Iface::enum_type e__PFCP__Src__Iface::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "ACCESS")) return ACCESS; if (!strcmp(str_par, "CORE")) return CORE; if (!strcmp(str_par, "SGI_LAN_N6_LAN")) return SGI__LAN__N6__LAN; if (!strcmp(str_par, "CP_FUNCTION")) return CP__FUNCTION; if (!strcmp(str_par, "x_5G_VN_INTERNAL")) return x__5G__VN__INTERNAL; } return UNKNOWN_VALUE; } boolean e__PFCP__Src__Iface::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: case 3: case 4: return TRUE; default: return FALSE; } } int e__PFCP__Src__Iface::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int e__PFCP__Src__Iface::enum2int(const e__PFCP__Src__Iface& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void e__PFCP__Src__Iface::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @PFCP_Templates.e_PFCP_Src_Iface.", int_val); enum_value = (enum_type)int_val; } e__PFCP__Src__Iface::operator e__PFCP__Src__Iface::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); return enum_value; } void e__PFCP__Src__Iface::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void e__PFCP__Src__Iface::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@PFCP_Templates.e_PFCP_Src_Iface"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @PFCP_Templates.e_PFCP_Src_Iface."); } } void e__PFCP__Src__Iface::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); text_buf.push_int(enum_value); } void e__PFCP__Src__Iface::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @PFCP_Templates.e_PFCP_Src_Iface.", enum_value); } void e__PFCP__Src__Iface_template::copy_template(const e__PFCP__Src__Iface_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new e__PFCP__Src__Iface_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new e__PFCP__Src__Iface_template(*other_value.implication_.precondition); implication_.implied_template = new e__PFCP__Src__Iface_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); } } e__PFCP__Src__Iface_template::e__PFCP__Src__Iface_template() { } e__PFCP__Src__Iface_template::e__PFCP__Src__Iface_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } e__PFCP__Src__Iface_template::e__PFCP__Src__Iface_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!e__PFCP__Src__Iface::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface with unknown numeric value %d.", other_value); single_value = (e__PFCP__Src__Iface::enum_type)other_value; } e__PFCP__Src__Iface_template::e__PFCP__Src__Iface_template(e__PFCP__Src__Iface::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } e__PFCP__Src__Iface_template::e__PFCP__Src__Iface_template(const e__PFCP__Src__Iface& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == e__PFCP__Src__Iface::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); single_value = other_value.enum_value; } e__PFCP__Src__Iface_template::e__PFCP__Src__Iface_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Src__Iface::enum_type)(const e__PFCP__Src__Iface&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface from an unbound optional field."); } } e__PFCP__Src__Iface_template::e__PFCP__Src__Iface_template(e__PFCP__Src__Iface_template* p_precondition, e__PFCP__Src__Iface_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } e__PFCP__Src__Iface_template::e__PFCP__Src__Iface_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } e__PFCP__Src__Iface_template::e__PFCP__Src__Iface_template(const e__PFCP__Src__Iface_template& other_value) : Base_Template() { copy_template(other_value); } e__PFCP__Src__Iface_template::~e__PFCP__Src__Iface_template() { clean_up(); } boolean e__PFCP__Src__Iface_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean e__PFCP__Src__Iface_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != e__PFCP__Src__Iface::UNBOUND_VALUE; } void e__PFCP__Src__Iface_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } e__PFCP__Src__Iface_template& e__PFCP__Src__Iface_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } e__PFCP__Src__Iface_template& e__PFCP__Src__Iface_template::operator=(int other_value) { if (!e__PFCP__Src__Iface::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Src__Iface::enum_type)other_value; return *this; } e__PFCP__Src__Iface_template& e__PFCP__Src__Iface_template::operator=(e__PFCP__Src__Iface::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } e__PFCP__Src__Iface_template& e__PFCP__Src__Iface_template::operator=(const e__PFCP__Src__Iface& other_value) { if (other_value.enum_value == e__PFCP__Src__Iface::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PFCP_Templates.e_PFCP_Src_Iface to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } e__PFCP__Src__Iface_template& e__PFCP__Src__Iface_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Src__Iface::enum_type)(const e__PFCP__Src__Iface&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); } return *this; } e__PFCP__Src__Iface_template& e__PFCP__Src__Iface_template::operator=(const e__PFCP__Src__Iface_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean e__PFCP__Src__Iface_template::match(e__PFCP__Src__Iface::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); } return FALSE; } boolean e__PFCP__Src__Iface_template::match(const e__PFCP__Src__Iface& other_value, boolean) const { if (other_value.enum_value == e__PFCP__Src__Iface::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface with an unbound value."); return match(other_value.enum_value); } e__PFCP__Src__Iface::enum_type e__PFCP__Src__Iface_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); return single_value; } void e__PFCP__Src__Iface_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new e__PFCP__Src__Iface_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); } } e__PFCP__Src__Iface_template& e__PFCP__Src__Iface_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); return value_list.list_value[list_index]; } void e__PFCP__Src__Iface_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(e__PFCP__Src__Iface::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void e__PFCP__Src__Iface_template::log_match(const e__PFCP__Src__Iface& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void e__PFCP__Src__Iface_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); } } void e__PFCP__Src__Iface_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (e__PFCP__Src__Iface::enum_type)text_buf.pull_int().get_val(); if (!e__PFCP__Src__Iface::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new e__PFCP__Src__Iface_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @PFCP_Templates.e_PFCP_Src_Iface."); } } boolean e__PFCP__Src__Iface_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean e__PFCP__Src__Iface_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { e__PFCP__Src__Iface_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { e__PFCP__Src__Iface::enum_type enum_val = e__PFCP__Src__Iface::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!e__PFCP__Src__Iface::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @PFCP_Templates.e_PFCP_Src_Iface."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { e__PFCP__Src__Iface_template* precondition = new e__PFCP__Src__Iface_template; precondition->set_param(*m_p->get_elem(0)); e__PFCP__Src__Iface_template* implied_template = new e__PFCP__Src__Iface_template; implied_template->set_param(*m_p->get_elem(1)); *this = e__PFCP__Src__Iface_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@PFCP_Templates.e_PFCP_Src_Iface"); } is_ifpresent = param.get_ifpresent(); } void e__PFCP__Src__Iface_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@PFCP_Templates.e_PFCP_Src_Iface"); } e__PFCP__Dest__Iface::e__PFCP__Dest__Iface() { enum_value = UNBOUND_VALUE; } e__PFCP__Dest__Iface::e__PFCP__Dest__Iface(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } e__PFCP__Dest__Iface::e__PFCP__Dest__Iface(enum_type other_value) { enum_value = other_value; } e__PFCP__Dest__Iface::e__PFCP__Dest__Iface(const e__PFCP__Dest__Iface& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); enum_value = other_value.enum_value; } e__PFCP__Dest__Iface& e__PFCP__Dest__Iface::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface.", other_value); enum_value = (enum_type)other_value; return *this; } e__PFCP__Dest__Iface& e__PFCP__Dest__Iface::operator=(enum_type other_value) { enum_value = other_value; return *this; } e__PFCP__Dest__Iface& e__PFCP__Dest__Iface::operator=(const e__PFCP__Dest__Iface& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); enum_value = other_value.enum_value; return *this; } boolean e__PFCP__Dest__Iface::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean e__PFCP__Dest__Iface::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); return enum_value == other_value; } boolean e__PFCP__Dest__Iface::operator==(const e__PFCP__Dest__Iface& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); return enum_value == other_value.enum_value; } boolean e__PFCP__Dest__Iface::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean e__PFCP__Dest__Iface::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); return enum_value < other_value; } boolean e__PFCP__Dest__Iface::operator<(const e__PFCP__Dest__Iface& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); return enum_value < other_value.enum_value; } boolean e__PFCP__Dest__Iface::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean e__PFCP__Dest__Iface::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); return enum_value > other_value; } boolean e__PFCP__Dest__Iface::operator>(const e__PFCP__Dest__Iface& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); return enum_value > other_value.enum_value; } const char *e__PFCP__Dest__Iface::enum_to_str(enum_type enum_par) { switch (enum_par) { case ACCESS: return "ACCESS"; case CORE: return "CORE"; case SGI__LAN__N6__LAN: return "SGI_LAN_N6_LAN"; case CP__FUNCTION: return "CP_FUNCTION"; case LI__FUNCTION: return "LI_FUNCTION"; case x__5G__VN__INTERNAL: return "x_5G_VN_INTERNAL"; default: return ""; } } e__PFCP__Dest__Iface::enum_type e__PFCP__Dest__Iface::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "ACCESS")) return ACCESS; if (!strcmp(str_par, "CORE")) return CORE; if (!strcmp(str_par, "SGI_LAN_N6_LAN")) return SGI__LAN__N6__LAN; if (!strcmp(str_par, "CP_FUNCTION")) return CP__FUNCTION; if (!strcmp(str_par, "LI_FUNCTION")) return LI__FUNCTION; if (!strcmp(str_par, "x_5G_VN_INTERNAL")) return x__5G__VN__INTERNAL; } return UNKNOWN_VALUE; } boolean e__PFCP__Dest__Iface::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: case 3: case 4: case 5: return TRUE; default: return FALSE; } } int e__PFCP__Dest__Iface::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int e__PFCP__Dest__Iface::enum2int(const e__PFCP__Dest__Iface& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void e__PFCP__Dest__Iface::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface.", int_val); enum_value = (enum_type)int_val; } e__PFCP__Dest__Iface::operator e__PFCP__Dest__Iface::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); return enum_value; } void e__PFCP__Dest__Iface::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void e__PFCP__Dest__Iface::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@PFCP_Templates.e_PFCP_Dest_Iface"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @PFCP_Templates.e_PFCP_Dest_Iface."); } } void e__PFCP__Dest__Iface::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); text_buf.push_int(enum_value); } void e__PFCP__Dest__Iface::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @PFCP_Templates.e_PFCP_Dest_Iface.", enum_value); } void e__PFCP__Dest__Iface_template::copy_template(const e__PFCP__Dest__Iface_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new e__PFCP__Dest__Iface_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new e__PFCP__Dest__Iface_template(*other_value.implication_.precondition); implication_.implied_template = new e__PFCP__Dest__Iface_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); } } e__PFCP__Dest__Iface_template::e__PFCP__Dest__Iface_template() { } e__PFCP__Dest__Iface_template::e__PFCP__Dest__Iface_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } e__PFCP__Dest__Iface_template::e__PFCP__Dest__Iface_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!e__PFCP__Dest__Iface::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface with unknown numeric value %d.", other_value); single_value = (e__PFCP__Dest__Iface::enum_type)other_value; } e__PFCP__Dest__Iface_template::e__PFCP__Dest__Iface_template(e__PFCP__Dest__Iface::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } e__PFCP__Dest__Iface_template::e__PFCP__Dest__Iface_template(const e__PFCP__Dest__Iface& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == e__PFCP__Dest__Iface::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); single_value = other_value.enum_value; } e__PFCP__Dest__Iface_template::e__PFCP__Dest__Iface_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Dest__Iface::enum_type)(const e__PFCP__Dest__Iface&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface from an unbound optional field."); } } e__PFCP__Dest__Iface_template::e__PFCP__Dest__Iface_template(e__PFCP__Dest__Iface_template* p_precondition, e__PFCP__Dest__Iface_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } e__PFCP__Dest__Iface_template::e__PFCP__Dest__Iface_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } e__PFCP__Dest__Iface_template::e__PFCP__Dest__Iface_template(const e__PFCP__Dest__Iface_template& other_value) : Base_Template() { copy_template(other_value); } e__PFCP__Dest__Iface_template::~e__PFCP__Dest__Iface_template() { clean_up(); } boolean e__PFCP__Dest__Iface_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean e__PFCP__Dest__Iface_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != e__PFCP__Dest__Iface::UNBOUND_VALUE; } void e__PFCP__Dest__Iface_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } e__PFCP__Dest__Iface_template& e__PFCP__Dest__Iface_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } e__PFCP__Dest__Iface_template& e__PFCP__Dest__Iface_template::operator=(int other_value) { if (!e__PFCP__Dest__Iface::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Dest__Iface::enum_type)other_value; return *this; } e__PFCP__Dest__Iface_template& e__PFCP__Dest__Iface_template::operator=(e__PFCP__Dest__Iface::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } e__PFCP__Dest__Iface_template& e__PFCP__Dest__Iface_template::operator=(const e__PFCP__Dest__Iface& other_value) { if (other_value.enum_value == e__PFCP__Dest__Iface::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } e__PFCP__Dest__Iface_template& e__PFCP__Dest__Iface_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Dest__Iface::enum_type)(const e__PFCP__Dest__Iface&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); } return *this; } e__PFCP__Dest__Iface_template& e__PFCP__Dest__Iface_template::operator=(const e__PFCP__Dest__Iface_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean e__PFCP__Dest__Iface_template::match(e__PFCP__Dest__Iface::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); } return FALSE; } boolean e__PFCP__Dest__Iface_template::match(const e__PFCP__Dest__Iface& other_value, boolean) const { if (other_value.enum_value == e__PFCP__Dest__Iface::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface with an unbound value."); return match(other_value.enum_value); } e__PFCP__Dest__Iface::enum_type e__PFCP__Dest__Iface_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); return single_value; } void e__PFCP__Dest__Iface_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new e__PFCP__Dest__Iface_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); } } e__PFCP__Dest__Iface_template& e__PFCP__Dest__Iface_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); return value_list.list_value[list_index]; } void e__PFCP__Dest__Iface_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(e__PFCP__Dest__Iface::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void e__PFCP__Dest__Iface_template::log_match(const e__PFCP__Dest__Iface& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void e__PFCP__Dest__Iface_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); } } void e__PFCP__Dest__Iface_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (e__PFCP__Dest__Iface::enum_type)text_buf.pull_int().get_val(); if (!e__PFCP__Dest__Iface::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new e__PFCP__Dest__Iface_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @PFCP_Templates.e_PFCP_Dest_Iface."); } } boolean e__PFCP__Dest__Iface_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean e__PFCP__Dest__Iface_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { e__PFCP__Dest__Iface_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { e__PFCP__Dest__Iface::enum_type enum_val = e__PFCP__Dest__Iface::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!e__PFCP__Dest__Iface::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @PFCP_Templates.e_PFCP_Dest_Iface."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { e__PFCP__Dest__Iface_template* precondition = new e__PFCP__Dest__Iface_template; precondition->set_param(*m_p->get_elem(0)); e__PFCP__Dest__Iface_template* implied_template = new e__PFCP__Dest__Iface_template; implied_template->set_param(*m_p->get_elem(1)); *this = e__PFCP__Dest__Iface_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@PFCP_Templates.e_PFCP_Dest_Iface"); } is_ifpresent = param.get_ifpresent(); } void e__PFCP__Dest__Iface_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@PFCP_Templates.e_PFCP_Dest_Iface"); } e__PFCP__Outer__Header__Removal::e__PFCP__Outer__Header__Removal() { enum_value = UNBOUND_VALUE; } e__PFCP__Outer__Header__Removal::e__PFCP__Outer__Header__Removal(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } e__PFCP__Outer__Header__Removal::e__PFCP__Outer__Header__Removal(enum_type other_value) { enum_value = other_value; } e__PFCP__Outer__Header__Removal::e__PFCP__Outer__Header__Removal(const e__PFCP__Outer__Header__Removal& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); enum_value = other_value.enum_value; } e__PFCP__Outer__Header__Removal& e__PFCP__Outer__Header__Removal::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal.", other_value); enum_value = (enum_type)other_value; return *this; } e__PFCP__Outer__Header__Removal& e__PFCP__Outer__Header__Removal::operator=(enum_type other_value) { enum_value = other_value; return *this; } e__PFCP__Outer__Header__Removal& e__PFCP__Outer__Header__Removal::operator=(const e__PFCP__Outer__Header__Removal& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); enum_value = other_value.enum_value; return *this; } boolean e__PFCP__Outer__Header__Removal::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean e__PFCP__Outer__Header__Removal::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); return enum_value == other_value; } boolean e__PFCP__Outer__Header__Removal::operator==(const e__PFCP__Outer__Header__Removal& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); return enum_value == other_value.enum_value; } boolean e__PFCP__Outer__Header__Removal::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean e__PFCP__Outer__Header__Removal::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); return enum_value < other_value; } boolean e__PFCP__Outer__Header__Removal::operator<(const e__PFCP__Outer__Header__Removal& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); return enum_value < other_value.enum_value; } boolean e__PFCP__Outer__Header__Removal::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean e__PFCP__Outer__Header__Removal::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); return enum_value > other_value; } boolean e__PFCP__Outer__Header__Removal::operator>(const e__PFCP__Outer__Header__Removal& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); return enum_value > other_value.enum_value; } const char *e__PFCP__Outer__Header__Removal::enum_to_str(enum_type enum_par) { switch (enum_par) { case GTP__U__UDP__IPV4: return "GTP_U_UDP_IPV4"; case GTP__U__UDP__IPV6: return "GTP_U_UDP_IPV6"; case UDP__IPV4: return "UDP_IPV4"; case UDP__IPV6: return "UDP_IPV6"; case IPV4: return "IPV4"; case IPV6: return "IPV6"; case GTP__U__UDP__IP: return "GTP_U_UDP_IP"; case VLAN__S__TAG: return "VLAN_S_TAG"; case S__TAG__AND__C__TAG: return "S_TAG_AND_C_TAG"; default: return ""; } } e__PFCP__Outer__Header__Removal::enum_type e__PFCP__Outer__Header__Removal::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "GTP_U_UDP_IPV4")) return GTP__U__UDP__IPV4; if (!strcmp(str_par, "GTP_U_UDP_IPV6")) return GTP__U__UDP__IPV6; if (!strcmp(str_par, "UDP_IPV4")) return UDP__IPV4; if (!strcmp(str_par, "UDP_IPV6")) return UDP__IPV6; if (!strcmp(str_par, "IPV4")) return IPV4; if (!strcmp(str_par, "IPV6")) return IPV6; if (!strcmp(str_par, "GTP_U_UDP_IP")) return GTP__U__UDP__IP; if (!strcmp(str_par, "VLAN_S_TAG")) return VLAN__S__TAG; if (!strcmp(str_par, "S_TAG_AND_C_TAG")) return S__TAG__AND__C__TAG; } return UNKNOWN_VALUE; } boolean e__PFCP__Outer__Header__Removal::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: return TRUE; default: return FALSE; } } int e__PFCP__Outer__Header__Removal::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int e__PFCP__Outer__Header__Removal::enum2int(const e__PFCP__Outer__Header__Removal& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void e__PFCP__Outer__Header__Removal::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal.", int_val); enum_value = (enum_type)int_val; } e__PFCP__Outer__Header__Removal::operator e__PFCP__Outer__Header__Removal::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); return enum_value; } void e__PFCP__Outer__Header__Removal::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void e__PFCP__Outer__Header__Removal::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@PFCP_Templates.e_PFCP_Outer_Header_Removal"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); } } void e__PFCP__Outer__Header__Removal::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); text_buf.push_int(enum_value); } void e__PFCP__Outer__Header__Removal::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal.", enum_value); } void e__PFCP__Outer__Header__Removal_template::copy_template(const e__PFCP__Outer__Header__Removal_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new e__PFCP__Outer__Header__Removal_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new e__PFCP__Outer__Header__Removal_template(*other_value.implication_.precondition); implication_.implied_template = new e__PFCP__Outer__Header__Removal_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); } } e__PFCP__Outer__Header__Removal_template::e__PFCP__Outer__Header__Removal_template() { } e__PFCP__Outer__Header__Removal_template::e__PFCP__Outer__Header__Removal_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } e__PFCP__Outer__Header__Removal_template::e__PFCP__Outer__Header__Removal_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!e__PFCP__Outer__Header__Removal::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal with unknown numeric value %d.", other_value); single_value = (e__PFCP__Outer__Header__Removal::enum_type)other_value; } e__PFCP__Outer__Header__Removal_template::e__PFCP__Outer__Header__Removal_template(e__PFCP__Outer__Header__Removal::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } e__PFCP__Outer__Header__Removal_template::e__PFCP__Outer__Header__Removal_template(const e__PFCP__Outer__Header__Removal& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == e__PFCP__Outer__Header__Removal::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); single_value = other_value.enum_value; } e__PFCP__Outer__Header__Removal_template::e__PFCP__Outer__Header__Removal_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Outer__Header__Removal::enum_type)(const e__PFCP__Outer__Header__Removal&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal from an unbound optional field."); } } e__PFCP__Outer__Header__Removal_template::e__PFCP__Outer__Header__Removal_template(e__PFCP__Outer__Header__Removal_template* p_precondition, e__PFCP__Outer__Header__Removal_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } e__PFCP__Outer__Header__Removal_template::e__PFCP__Outer__Header__Removal_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } e__PFCP__Outer__Header__Removal_template::e__PFCP__Outer__Header__Removal_template(const e__PFCP__Outer__Header__Removal_template& other_value) : Base_Template() { copy_template(other_value); } e__PFCP__Outer__Header__Removal_template::~e__PFCP__Outer__Header__Removal_template() { clean_up(); } boolean e__PFCP__Outer__Header__Removal_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean e__PFCP__Outer__Header__Removal_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != e__PFCP__Outer__Header__Removal::UNBOUND_VALUE; } void e__PFCP__Outer__Header__Removal_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } e__PFCP__Outer__Header__Removal_template& e__PFCP__Outer__Header__Removal_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } e__PFCP__Outer__Header__Removal_template& e__PFCP__Outer__Header__Removal_template::operator=(int other_value) { if (!e__PFCP__Outer__Header__Removal::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Outer__Header__Removal::enum_type)other_value; return *this; } e__PFCP__Outer__Header__Removal_template& e__PFCP__Outer__Header__Removal_template::operator=(e__PFCP__Outer__Header__Removal::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } e__PFCP__Outer__Header__Removal_template& e__PFCP__Outer__Header__Removal_template::operator=(const e__PFCP__Outer__Header__Removal& other_value) { if (other_value.enum_value == e__PFCP__Outer__Header__Removal::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } e__PFCP__Outer__Header__Removal_template& e__PFCP__Outer__Header__Removal_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (e__PFCP__Outer__Header__Removal::enum_type)(const e__PFCP__Outer__Header__Removal&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); } return *this; } e__PFCP__Outer__Header__Removal_template& e__PFCP__Outer__Header__Removal_template::operator=(const e__PFCP__Outer__Header__Removal_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean e__PFCP__Outer__Header__Removal_template::match(e__PFCP__Outer__Header__Removal::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); } return FALSE; } boolean e__PFCP__Outer__Header__Removal_template::match(const e__PFCP__Outer__Header__Removal& other_value, boolean) const { if (other_value.enum_value == e__PFCP__Outer__Header__Removal::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal with an unbound value."); return match(other_value.enum_value); } e__PFCP__Outer__Header__Removal::enum_type e__PFCP__Outer__Header__Removal_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); return single_value; } void e__PFCP__Outer__Header__Removal_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new e__PFCP__Outer__Header__Removal_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); } } e__PFCP__Outer__Header__Removal_template& e__PFCP__Outer__Header__Removal_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); return value_list.list_value[list_index]; } void e__PFCP__Outer__Header__Removal_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(e__PFCP__Outer__Header__Removal::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void e__PFCP__Outer__Header__Removal_template::log_match(const e__PFCP__Outer__Header__Removal& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void e__PFCP__Outer__Header__Removal_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); } } void e__PFCP__Outer__Header__Removal_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (e__PFCP__Outer__Header__Removal::enum_type)text_buf.pull_int().get_val(); if (!e__PFCP__Outer__Header__Removal::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new e__PFCP__Outer__Header__Removal_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); } } boolean e__PFCP__Outer__Header__Removal_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean e__PFCP__Outer__Header__Removal_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { e__PFCP__Outer__Header__Removal_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { e__PFCP__Outer__Header__Removal::enum_type enum_val = e__PFCP__Outer__Header__Removal::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!e__PFCP__Outer__Header__Removal::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @PFCP_Templates.e_PFCP_Outer_Header_Removal."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { e__PFCP__Outer__Header__Removal_template* precondition = new e__PFCP__Outer__Header__Removal_template; precondition->set_param(*m_p->get_elem(0)); e__PFCP__Outer__Header__Removal_template* implied_template = new e__PFCP__Outer__Header__Removal_template; implied_template->set_param(*m_p->get_elem(1)); *this = e__PFCP__Outer__Header__Removal_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@PFCP_Templates.e_PFCP_Outer_Header_Removal"); } is_ifpresent = param.get_ifpresent(); } void e__PFCP__Outer__Header__Removal_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@PFCP_Templates.e_PFCP_Outer_Header_Removal"); } /* Bodies of functions, altsteps and testcases */ PFCP__Types::Cause_template ts__PFCP__Cause(const e__PFCP__Cause& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 39, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Cause"); PFCP__Types::Cause_template ret_val; ret_val.elementIdentifier() = 19; ret_val.lengthIndicator() = 0; ret_val.causeValue() = int2oct(e__PFCP__Cause::enum2int(cause), 1); return ret_val; } PFCP__Types::Cause_template tr__PFCP__Cause(const e__PFCP__Cause& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 45, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Cause"); PFCP__Types::Cause_template ret_val; ret_val.elementIdentifier() = 19; ret_val.lengthIndicator() = ANY_VALUE; ret_val.causeValue() = int2oct(e__PFCP__Cause::enum2int(cause), 1); return ret_val; } PFCP__Types::Node__ID_template ts__PFCP__Node__ID(const INTEGER_template& id__type, const OCTETSTRING_template& id__value) { TTCN_Location current_location("PFCP_Templates.ttcn", 55, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Node_ID"); PFCP__Types::Node__ID_template ret_val; ret_val.elementIdentifier() = 60; ret_val.lengthIndicator() = 0; ret_val.node__id__type() = id__type; ret_val.spare() = bs_0; ret_val.node__id__value() = id__value; return ret_val; } PFCP__Types::Node__ID_template tr__PFCP__Node__ID(const INTEGER_template& id__type, const OCTETSTRING_template& id__value) { TTCN_Location current_location("PFCP_Templates.ttcn", 65, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Node_ID"); PFCP__Types::Node__ID_template ret_val; ret_val.elementIdentifier() = 60; ret_val.lengthIndicator() = ANY_VALUE; ret_val.node__id__type() = id__type; ret_val.spare() = ANY_VALUE; ret_val.node__id__value() = id__value; return ret_val; } PFCP__Types::Node__ID_template ts__PFCP__Node__ID__ipv4(const OCTETSTRING_template& ip__value) { TTCN_Location current_location("PFCP_Templates.ttcn", 76, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Node_ID_ipv4"); PFCP__Types::Node__ID_template ret_val; ret_val = ts__PFCP__Node__ID(INTEGER_template(0), ip__value); return ret_val; } PFCP__Types::Node__ID_template tr__PFCP__Node__ID__ipv4(const OCTETSTRING_template& ip__value) { TTCN_Location current_location("PFCP_Templates.ttcn", 78, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Node_ID_ipv4"); PFCP__Types::Node__ID_template ret_val; ret_val = tr__PFCP__Node__ID(INTEGER_template(0), ip__value); return ret_val; } PFCP__Types::Node__ID_template ts__PFCP__Node__ID__fqdn(const CHARSTRING& fqdn) { TTCN_Location current_location("PFCP_Templates.ttcn", 81, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Node_ID_fqdn"); PFCP__Types::Node__ID_template ret_val; ret_val = ts__PFCP__Node__ID(INTEGER_template(2), OCTETSTRING_template(char2oct(fqdn))); return ret_val; } PFCP__Types::Node__ID_template tr__PFCP__Node__ID__fqdn(const OCTETSTRING_template& fqdn) { TTCN_Location current_location("PFCP_Templates.ttcn", 83, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Node_ID_fqdn"); PFCP__Types::Node__ID_template ret_val; ret_val = tr__PFCP__Node__ID(INTEGER_template(2), fqdn); return ret_val; } PFCP__Types::Recovery__Time__Stamp_template ts__PFCP__Recovery__Timestamp(const INTEGER_template& time__value) { TTCN_Location current_location("PFCP_Templates.ttcn", 86, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Recovery_Timestamp"); PFCP__Types::Recovery__Time__Stamp_template ret_val; ret_val.elementIdentifier() = 96; ret_val.lengthIndicator() = 0; ret_val.time__value() = time__value; return ret_val; } PFCP__Types::Recovery__Time__Stamp_template tr__PFCP__Recovery__Timestamp(const INTEGER_template& time__value) { TTCN_Location current_location("PFCP_Templates.ttcn", 92, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Recovery_Timestamp"); PFCP__Types::Recovery__Time__Stamp_template ret_val; ret_val.elementIdentifier() = 96; ret_val.lengthIndicator() = ANY_VALUE; ret_val.time__value() = time__value; return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Heartbeat__Req(const INTEGER_template& recovery__time__stamp) { TTCN_Location current_location("PFCP_Templates.ttcn", 128, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Heartbeat_Req"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.message__body().heartbeat__request().recovery__time__stamp() = ts__PFCP__Recovery__Timestamp(recovery__time__stamp); return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Heartbeat__Req(const INTEGER_template& recovery__time__stamp) { TTCN_Location current_location("PFCP_Templates.ttcn", 137, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Heartbeat_Req"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); ret_val.message__body().heartbeat__request().recovery__time__stamp() = tr__PFCP__Recovery__Timestamp(recovery__time__stamp); return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Heartbeat__Resp(const INTEGER_template& recovery__time__stamp) { TTCN_Location current_location("PFCP_Templates.ttcn", 148, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Heartbeat_Resp"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.message__body().heartbeat__response().recovery__time__stamp() = ts__PFCP__Recovery__Timestamp(recovery__time__stamp); return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Heartbeat__Resp(const INTEGER_template& recovery__time__stamp) { TTCN_Location current_location("PFCP_Templates.ttcn", 157, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Heartbeat_Resp"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); ret_val.message__body().heartbeat__response().recovery__time__stamp() = tr__PFCP__Recovery__Timestamp(recovery__time__stamp); return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Assoc__Setup__Req(const PFCP__Types::Node__ID_template& node__id, const INTEGER& recovery__timestamp) { TTCN_Location current_location("PFCP_Templates.ttcn", 168, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Assoc_Setup_Req"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); { PFCP__Types::PFCP__Association__Setup__Request_template& tmp_0 = ret_val.message__body().pfcp__association__setup__request(); tmp_0.node__id() = node__id; tmp_0.time__stamp() = ts__PFCP__Recovery__Timestamp(INTEGER_template(recovery__timestamp)); tmp_0.up__function__features() = OMIT_VALUE; tmp_0.cp__function__features() = OMIT_VALUE; tmp_0.UP__IP__resource__list() = OMIT_VALUE; } return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Assoc__Setup__Req(const PFCP__Types::Node__ID_template& node__id) { TTCN_Location current_location("PFCP_Templates.ttcn", 182, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Assoc_Setup_Req"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); { PFCP__Types::PFCP__Association__Setup__Request_template& tmp_1 = ret_val.message__body().pfcp__association__setup__request(); tmp_1.node__id() = node__id; tmp_1.time__stamp() = ANY_VALUE; tmp_1.up__function__features() = ANY_OR_OMIT; tmp_1.cp__function__features() = ANY_OR_OMIT; tmp_1.UP__IP__resource__list() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Assoc__Setup__Resp(const INTEGER& sequence__number, const PFCP__Types::Node__ID_template& node__id, const PFCP__Types::Cause_template& cause, const INTEGER& recovery__timestamp) { TTCN_Location current_location("PFCP_Templates.ttcn", 197, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Assoc_Setup_Resp"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.sequence__number() = sequence__number; { PFCP__Types::PFCP__Association__Setup__Response_template& tmp_2 = ret_val.message__body().pfcp__association__setup__response(); tmp_2.node__id() = node__id; tmp_2.cause() = cause; tmp_2.time__stamp() = ts__PFCP__Recovery__Timestamp(INTEGER_template(recovery__timestamp)); tmp_2.up__function__features() = OMIT_VALUE; tmp_2.cp__function__features() = OMIT_VALUE; tmp_2.UP__IP__resource__list() = OMIT_VALUE; } return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Assoc__Setup__Resp(const PFCP__Types::Node__ID_template& node__id, const PFCP__Types::Cause_template& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 215, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Assoc_Setup_Resp"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); { PFCP__Types::PFCP__Association__Setup__Response_template& tmp_3 = ret_val.message__body().pfcp__association__setup__response(); tmp_3.node__id() = node__id; tmp_3.cause() = cause; tmp_3.time__stamp() = ANY_VALUE; tmp_3.up__function__features() = ANY_OR_OMIT; tmp_3.cp__function__features() = ANY_OR_OMIT; tmp_3.UP__IP__resource__list() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Assoc__Release__Req(const PFCP__Types::Node__ID_template& node__id) { TTCN_Location current_location("PFCP_Templates.ttcn", 232, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Assoc_Release_Req"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.message__body().pfcp__association__release__request().node__id() = node__id; return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Assoc__Release__Req(const PFCP__Types::Node__ID_template& node__id) { TTCN_Location current_location("PFCP_Templates.ttcn", 241, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Assoc_Release_Req"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); ret_val.message__body().pfcp__association__release__request().node__id() = node__id; return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Assoc__Release__Resp(const INTEGER& sequence__number, const PFCP__Types::Node__ID_template& node__id, const PFCP__Types::Cause_template& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 252, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Assoc_Release_Resp"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.sequence__number() = sequence__number; { PFCP__Types::PFCP__Association__Release__Response_template& tmp_4 = ret_val.message__body().pfcp__association__release__response(); tmp_4.node__id() = node__id; tmp_4.cause() = cause; } return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Assoc__Release__Resp(const PFCP__Types::Node__ID_template& node__id, const PFCP__Types::Cause_template& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 265, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Assoc_Release_Resp"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); { PFCP__Types::PFCP__Association__Release__Response_template& tmp_5 = ret_val.message__body().pfcp__association__release__response(); tmp_5.node__id() = node__id; tmp_5.cause() = cause; } return ret_val; } PFCP__Types::F__SEID_template ts__PFCP__F__SEID__ipv4(const OCTETSTRING_template& addr__v4, const OCTETSTRING_template& seid) { TTCN_Location current_location("PFCP_Templates.ttcn", 277, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_F_SEID_ipv4"); PFCP__Types::F__SEID_template ret_val; ret_val.elementIdentifier() = 57; ret_val.lengthIndicator() = 0; ret_val.v6() = bs_1; ret_val.v4() = bs_3; ret_val.spare() = bs_4; ret_val.seid() = seid; ret_val.ipv4__address() = addr__v4; ret_val.ipv6__address() = OMIT_VALUE; return ret_val; } PFCP__Types::F__SEID_template tr__PFCP__F__SEID__ipv4(const OCTETSTRING_template& addr__v4, const OCTETSTRING_template& seid) { TTCN_Location current_location("PFCP_Templates.ttcn", 289, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_F_SEID_ipv4"); PFCP__Types::F__SEID_template ret_val; ret_val.elementIdentifier() = 57; ret_val.lengthIndicator() = ANY_VALUE; ret_val.v6() = bs_1; ret_val.v4() = bs_3; ret_val.spare() = ANY_VALUE; ret_val.seid() = seid; ret_val.ipv4__address() = addr__v4; ret_val.ipv6__address() = OMIT_VALUE; return ret_val; } PFCP__Types::Source__Interface_template ts__PFCP__Src__Iface(const e__PFCP__Src__Iface& iface) { TTCN_Location current_location("PFCP_Templates.ttcn", 310, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Src_Iface"); PFCP__Types::Source__Interface_template ret_val; ret_val.elementIdentifier() = 20; ret_val.lengthIndicator() = 0; ret_val.interfacevalue() = e__PFCP__Src__Iface::enum2int(iface); ret_val.spare() = bs_0; return ret_val; } PFCP__Types::Source__Interface_template tr__PFCP__Src__Iface(const e__PFCP__Src__Iface& iface) { TTCN_Location current_location("PFCP_Templates.ttcn", 317, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Src_Iface"); PFCP__Types::Source__Interface_template ret_val; ret_val.elementIdentifier() = 20; ret_val.lengthIndicator() = ANY_VALUE; ret_val.interfacevalue() = e__PFCP__Src__Iface::enum2int(iface); ret_val.spare() = ANY_VALUE; return ret_val; } PFCP__Types::UE__IP__Address_template ts__PFCP__UE__IP__Address__v4(const OCTETSTRING& addr__v4, const BOOLEAN& is__destination) { TTCN_Location current_location("PFCP_Templates.ttcn", 325, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_UE_IP_Address_v4"); PFCP__Types::UE__IP__Address_template ret_val; ret_val.elementIdentifier() = 93; ret_val.lengthIndicator() = 0; ret_val.v6() = bs_1; ret_val.v4() = bs_3; ret_val.sd() = Osmocom__Types::bool2bit(is__destination); ret_val.spare() = bs_5; ret_val.ipv4__address() = addr__v4; ret_val.ipv6__address() = OMIT_VALUE; return ret_val; } PFCP__Types::F__TEID_template ts__PFCP__F__TEID__ipv4(const OCTETSTRING& teid, const OCTETSTRING& addr__v4) { TTCN_Location current_location("PFCP_Templates.ttcn", 336, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_F_TEID_ipv4"); PFCP__Types::F__TEID_template ret_val; ret_val.elementIdentifier() = 21; ret_val.lengthIndicator() = 0; ret_val.v4() = bs_3; ret_val.v6() = bs_1; ret_val.ch() = bs_1; ret_val.chid() = bs_1; ret_val.spare() = bs_0; ret_val.teid() = teid; ret_val.ipv4__address() = addr__v4; ret_val.ipv6__address() = OMIT_VALUE; ret_val.choose__id() = OMIT_VALUE; return ret_val; } PFCP__Types::F__TEID_template ts__PFCP__F__TEID__choose__v4(const OCTETSTRING_template& choose__id) { TTCN_Location current_location("PFCP_Templates.ttcn", 350, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_F_TEID_choose_v4"); PFCP__Types::F__TEID_template ret_val; ret_val.elementIdentifier() = 21; ret_val.lengthIndicator() = 0; ret_val.v4() = bs_3; ret_val.v6() = bs_1; ret_val.ch() = bs_3; ret_val.chid() = bs_1; ret_val.spare() = bs_0; ret_val.teid() = OMIT_VALUE; ret_val.ipv4__address() = OMIT_VALUE; ret_val.ipv6__address() = OMIT_VALUE; ret_val.choose__id() = choose__id; return ret_val; } OCTETSTRING f__netinst__str__to__qname(const CHARSTRING& name) { TTCN_Location current_location("PFCP_Templates.ttcn", 366, TTCN_Location::LOCATION_FUNCTION, "f_netinst_str_to_qname"); current_location.update_lineno(368); /* PFCP_Templates.ttcn, line 368 */ OCTETSTRING qname((int2oct(name.lengthof(), 1) + char2oct(name))); current_location.update_lineno(369); /* PFCP_Templates.ttcn, line 369 */ return qname; } PFCP__Types::Network__Instance_template ts__PFCP__Network__Instance(const CHARSTRING& netinst__name) { TTCN_Location current_location("PFCP_Templates.ttcn", 372, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Network_Instance"); PFCP__Types::Network__Instance_template ret_val; ret_val.elementIdentifier() = 22; ret_val.lengthIndicator() = 0; ret_val.pdn__instance() = f__netinst__str__to__qname(netinst__name); return ret_val; } PFCP__Types::PDI__IE_template ts__PFCP__PDI(const e__PFCP__Src__Iface& src__iface, const PFCP__Types::F__TEID_template& local__F__TEID, const PFCP__Types::UE__IP__Address_template& ue__addr__v4, const PFCP__Types::Network__Instance_template& network__instance) { TTCN_Location current_location("PFCP_Templates.ttcn", 379, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_PDI"); PFCP__Types::PDI__IE_template ret_val; ret_val.elementIdentifier() = 2; ret_val.lengthIndicator() = 0; { PFCP__Types::PDI__IE_grouped__ie_template& tmp_6 = ret_val.grouped__ie(); tmp_6.source__interface() = ts__PFCP__Src__Iface(src__iface); tmp_6.local__F__TEID() = local__F__TEID; tmp_6.pdn__instance() = network__instance; tmp_6.ue__ip__address() = ue__addr__v4; tmp_6.traffic__endpoint__id() = OMIT_VALUE; tmp_6.sdf__filter__list() = OMIT_VALUE; tmp_6.application__id() = OMIT_VALUE; tmp_6.ethernet__packet__filter__list() = OMIT_VALUE; tmp_6.qfi__list() = OMIT_VALUE; } return ret_val; } PFCP__Types::PDI__IE_template tr__PFCP__PDI(const e__PFCP__Src__Iface& src__iface, const PFCP__Types::F__TEID_template& local__F__TEID, const PFCP__Types::UE__IP__Address_template& ue__addr__v4, const PFCP__Types::Network__Instance_template& network__instance) { TTCN_Location current_location("PFCP_Templates.ttcn", 398, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_PDI"); PFCP__Types::PDI__IE_template ret_val; ret_val.elementIdentifier() = 2; ret_val.lengthIndicator() = ANY_VALUE; { PFCP__Types::PDI__IE_grouped__ie_template& tmp_7 = ret_val.grouped__ie(); tmp_7.source__interface() = tr__PFCP__Src__Iface(src__iface); tmp_7.local__F__TEID() = local__F__TEID; tmp_7.pdn__instance() = network__instance; tmp_7.ue__ip__address() = ue__addr__v4; tmp_7.traffic__endpoint__id() = ANY_OR_OMIT; tmp_7.sdf__filter__list() = ANY_OR_OMIT; tmp_7.application__id() = ANY_OR_OMIT; tmp_7.ethernet__packet__filter__list() = ANY_OR_OMIT; tmp_7.qfi__list() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::Apply__Action_template ts__PFCP__Apply__Action(const BITSTRING& forw, const BITSTRING& drop, const BITSTRING& buff) { TTCN_Location current_location("PFCP_Templates.ttcn", 418, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Apply_Action"); PFCP__Types::Apply__Action_template ret_val; ret_val.elementIdentifier() = 44; ret_val.lengthIndicator() = 0; ret_val.drop() = drop; ret_val.forw() = forw; ret_val.buff() = buff; ret_val.nocp() = bs_1; ret_val.dupl() = bs_1; ret_val.spare() = bs_2; return ret_val; } PFCP__Types::Apply__Action_template tr__PFCP__Apply__Action(const BITSTRING_template& forw, const BITSTRING_template& drop, const BITSTRING_template& buff) { TTCN_Location current_location("PFCP_Templates.ttcn", 431, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Apply_Action"); PFCP__Types::Apply__Action_template ret_val; ret_val.elementIdentifier() = 44; ret_val.lengthIndicator() = ANY_VALUE; ret_val.drop() = drop; ret_val.forw() = forw; ret_val.buff() = buff; ret_val.nocp() = ANY_VALUE; ret_val.dupl() = ANY_VALUE; ret_val.spare() = ANY_VALUE; return ret_val; } PFCP__Types::Destination__Interface_template ts__PFCP__Destination__Interface(const e__PFCP__Dest__Iface& di) { TTCN_Location current_location("PFCP_Templates.ttcn", 463, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Destination_Interface"); PFCP__Types::Destination__Interface_template ret_val; ret_val.elementIdentifier() = 42; ret_val.lengthIndicator() = 0; ret_val.interface__value() = e__PFCP__Dest__Iface::enum2int(di); ret_val.spare() = bs_0; return ret_val; } PFCP__Types::Destination__Interface_template tr__PFCP__Destination__Interface(const e__PFCP__Dest__Iface& di) { TTCN_Location current_location("PFCP_Templates.ttcn", 470, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Destination_Interface"); PFCP__Types::Destination__Interface_template ret_val; ret_val.elementIdentifier() = 42; ret_val.lengthIndicator() = ANY_VALUE; ret_val.interface__value() = e__PFCP__Dest__Iface::enum2int(di); ret_val.spare() = ANY_VALUE; return ret_val; } PFCP__Types::Outer__Header__Creation_template ts__PFCP__Outer__Header__Creation__GTP__ipv4(const OCTETSTRING_template& remote__teid, const OCTETSTRING_template& remote__addr__v4) { TTCN_Location current_location("PFCP_Templates.ttcn", 478, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Outer_Header_Creation_GTP_ipv4"); PFCP__Types::Outer__Header__Creation_template ret_val; ret_val.elementIdentifier() = 84; ret_val.lengthIndicator() = 0; ret_val.ohc__description__oct5() = bs_6; ret_val.ohc__description__oct6() = bs_7; ret_val.teid() = remote__teid; ret_val.ipv4() = remote__addr__v4; ret_val.ipv6() = OMIT_VALUE; ret_val.udp__port() = OMIT_VALUE; return ret_val; } PFCP__Types::Outer__Header__Creation_template tr__PFCP__Outer__Header__Creation__GTP__ipv4(const OCTETSTRING_template& remote__teid, const OCTETSTRING_template& remote__addr__v4) { TTCN_Location current_location("PFCP_Templates.ttcn", 490, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Outer_Header_Creation_GTP_ipv4"); PFCP__Types::Outer__Header__Creation_template ret_val; ret_val.elementIdentifier() = 84; ret_val.lengthIndicator() = ANY_VALUE; ret_val.ohc__description__oct5() = bs_6; ret_val.ohc__description__oct6() = bs_7; ret_val.teid() = remote__teid; ret_val.ipv4() = remote__addr__v4; ret_val.ipv6() = OMIT_VALUE; ret_val.udp__port() = ANY_OR_OMIT; return ret_val; } PFCP__Types::Outer__Header__Removal_template ts__PFCP__Outer__Header__Removal(const e__PFCP__Outer__Header__Removal& ohr) { TTCN_Location current_location("PFCP_Templates.ttcn", 515, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Outer_Header_Removal"); PFCP__Types::Outer__Header__Removal_template ret_val; ret_val.elementIdentifier() = 95; ret_val.lengthIndicator() = 0; ret_val.ohc__description() = e__PFCP__Outer__Header__Removal::enum2int(ohr); return ret_val; } PFCP__Types::Outer__Header__Removal_template tr__PFCP__Outer__Header__Removal(const e__PFCP__Outer__Header__Removal& ohr) { TTCN_Location current_location("PFCP_Templates.ttcn", 521, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Outer_Header_Removal"); PFCP__Types::Outer__Header__Removal_template ret_val; ret_val.elementIdentifier() = 95; ret_val.lengthIndicator() = ANY_VALUE; ret_val.ohc__description() = e__PFCP__Outer__Header__Removal::enum2int(ohr); return ret_val; } PFCP__Types::Forwarding__Parameters_template ts__PFCP__Forwarding__Parameters(const e__PFCP__Dest__Iface& dest__iface, const PFCP__Types::Outer__Header__Creation_template& ohc, const PFCP__Types::Network__Instance_template& network__instance) { TTCN_Location current_location("PFCP_Templates.ttcn", 528, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Forwarding_Parameters"); PFCP__Types::Forwarding__Parameters_template ret_val; ret_val.elementIdentifier() = 4; ret_val.lengthIndicator() = 0; { PFCP__Types::Forwarding__Parameters_grouped__ie_template& tmp_8 = ret_val.grouped__ie(); tmp_8.destination__interface() = ts__PFCP__Destination__Interface(dest__iface); tmp_8.pdn__Instance() = network__instance; tmp_8.redirect__information() = OMIT_VALUE; tmp_8.outer__header__creation() = ohc; tmp_8.transport__level__marking() = OMIT_VALUE; tmp_8.forwarding__policy() = OMIT_VALUE; tmp_8.header__enrichment() = OMIT_VALUE; tmp_8.traffic__endpoint__ID() = OMIT_VALUE; } return ret_val; } PFCP__Types::Forwarding__Parameters_template tr__PFCP__Forwarding__Parameters(const e__PFCP__Dest__Iface& dest__iface, const PFCP__Types::Outer__Header__Creation_template& ohc, const PFCP__Types::Network__Instance_template& network__instance) { TTCN_Location current_location("PFCP_Templates.ttcn", 545, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Forwarding_Parameters"); PFCP__Types::Forwarding__Parameters_template ret_val; ret_val.elementIdentifier() = 4; ret_val.lengthIndicator() = ANY_VALUE; { PFCP__Types::Forwarding__Parameters_grouped__ie_template& tmp_9 = ret_val.grouped__ie(); tmp_9.destination__interface() = tr__PFCP__Destination__Interface(dest__iface); tmp_9.pdn__Instance() = network__instance; tmp_9.redirect__information() = ANY_OR_OMIT; tmp_9.outer__header__creation() = ohc; tmp_9.transport__level__marking() = ANY_OR_OMIT; tmp_9.forwarding__policy() = ANY_OR_OMIT; tmp_9.header__enrichment() = ANY_OR_OMIT; tmp_9.traffic__endpoint__ID() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::Update__Forwarding__Parameters_template ts__PFCP__Update__Forwarding__Parameters(const PFCP__Types::Destination__Interface_template& dest__iface, const PFCP__Types::Outer__Header__Creation_template& ohc, const PFCP__Types::Network__Instance_template& network__instance) { TTCN_Location current_location("PFCP_Templates.ttcn", 563, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Update_Forwarding_Parameters"); PFCP__Types::Update__Forwarding__Parameters_template ret_val; ret_val.elementIdentifier() = 11; ret_val.lengthIndicator() = 0; { PFCP__Types::Update__Forwarding__Parameters_grouped__ie_template& tmp_10 = ret_val.grouped__ie(); tmp_10.destination__interface() = dest__iface; tmp_10.pdn__Instance() = network__instance; tmp_10.redirect__information() = OMIT_VALUE; tmp_10.outer__header__creation() = ohc; tmp_10.transport__level__marking() = OMIT_VALUE; tmp_10.forwarding__policy() = OMIT_VALUE; tmp_10.header__enrichment() = OMIT_VALUE; tmp_10.pfcpSMReq__flags() = OMIT_VALUE; tmp_10.traffic__endpoint__id() = OMIT_VALUE; } return ret_val; } PFCP__Types::Update__Forwarding__Parameters_template tr__PFCP__Update__Forwarding__Parameters(const PFCP__Types::Destination__Interface_template& dest__iface, const PFCP__Types::Outer__Header__Creation_template& ohc, const PFCP__Types::Network__Instance_template& network__instance) { TTCN_Location current_location("PFCP_Templates.ttcn", 581, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Update_Forwarding_Parameters"); PFCP__Types::Update__Forwarding__Parameters_template ret_val; ret_val.elementIdentifier() = 11; ret_val.lengthIndicator() = ANY_VALUE; { PFCP__Types::Update__Forwarding__Parameters_grouped__ie_template& tmp_11 = ret_val.grouped__ie(); tmp_11.destination__interface() = dest__iface; tmp_11.pdn__Instance() = network__instance; tmp_11.redirect__information() = ANY_OR_OMIT; tmp_11.outer__header__creation() = ohc; tmp_11.transport__level__marking() = ANY_OR_OMIT; tmp_11.forwarding__policy() = ANY_OR_OMIT; tmp_11.header__enrichment() = ANY_OR_OMIT; tmp_11.pfcpSMReq__flags() = ANY_OR_OMIT; tmp_11.traffic__endpoint__id() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::FAR__ID_template ts__PFCP__FAR__ID(const INTEGER_template& far__id) { TTCN_Location current_location("PFCP_Templates.ttcn", 600, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_FAR_ID"); PFCP__Types::FAR__ID_template ret_val; ret_val.elementIdentifier() = 108; ret_val.lengthIndicator() = 0; ret_val.id__value() = far__id; return ret_val; } PFCP__Types::FAR__ID_template tr__PFCP__FAR__ID(const INTEGER_template& far__id) { TTCN_Location current_location("PFCP_Templates.ttcn", 606, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_FAR_ID"); PFCP__Types::FAR__ID_template ret_val; ret_val.elementIdentifier() = 108; ret_val.lengthIndicator() = ANY_VALUE; ret_val.id__value() = far__id; return ret_val; } PFCP__Types::Create__FAR_template ts__PFCP__Create__FAR(const INTEGER_template& far__id, const PFCP__Types::Apply__Action_template& aa, const PFCP__Types::Forwarding__Parameters_template& fp) { TTCN_Location current_location("PFCP_Templates.ttcn", 613, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Create_FAR"); PFCP__Types::Create__FAR_template ret_val; ret_val.elementIdentifier() = 3; ret_val.lengthIndicator() = 0; { PFCP__Types::Create__FAR_grouped__ie_template& tmp_12 = ret_val.grouped__ie(); tmp_12.far__id() = ts__PFCP__FAR__ID(far__id); tmp_12.apply__action() = aa; tmp_12.forwarding__parameters() = fp; tmp_12.duplicating__parameters() = OMIT_VALUE; tmp_12.bar__id() = OMIT_VALUE; } return ret_val; } PFCP__Types::Create__FAR_template tr__PFCP__Create__FAR(const INTEGER_template& far__id, const PFCP__Types::Apply__Action_template& aa, const PFCP__Types::Forwarding__Parameters_template& fp) { TTCN_Location current_location("PFCP_Templates.ttcn", 627, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Create_FAR"); PFCP__Types::Create__FAR_template ret_val; ret_val.elementIdentifier() = 3; ret_val.lengthIndicator() = ANY_VALUE; { PFCP__Types::Create__FAR_grouped__ie_template& tmp_13 = ret_val.grouped__ie(); tmp_13.far__id() = tr__PFCP__FAR__ID(far__id); tmp_13.apply__action() = aa; tmp_13.forwarding__parameters() = fp; tmp_13.duplicating__parameters() = ANY_OR_OMIT; tmp_13.bar__id() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::Update__FAR_template ts__PFCP__Update__FAR(const INTEGER_template& far__id, const PFCP__Types::Apply__Action_template& aa, const PFCP__Types::Update__Forwarding__Parameters_template& fp) { TTCN_Location current_location("PFCP_Templates.ttcn", 642, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Update_FAR"); PFCP__Types::Update__FAR_template ret_val; ret_val.elementIdentifier() = 10; ret_val.lengthIndicator() = 0; { PFCP__Types::Update__FAR_grouped__ie_template& tmp_14 = ret_val.grouped__ie(); tmp_14.far__id() = ts__PFCP__FAR__ID(far__id); tmp_14.apply__action() = aa; tmp_14.forwarding__parameters() = fp; tmp_14.duplicating__parameters() = OMIT_VALUE; tmp_14.bar__id() = OMIT_VALUE; } return ret_val; } PFCP__Types::Update__FAR_template tr__PFCP__Update__FAR(const INTEGER_template& far__id, const PFCP__Types::Apply__Action_template& aa, const PFCP__Types::Update__Forwarding__Parameters_template& fp) { TTCN_Location current_location("PFCP_Templates.ttcn", 656, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Update_FAR"); PFCP__Types::Update__FAR_template ret_val; ret_val.elementIdentifier() = 10; ret_val.lengthIndicator() = ANY_VALUE; { PFCP__Types::Update__FAR_grouped__ie_template& tmp_15 = ret_val.grouped__ie(); tmp_15.far__id() = tr__PFCP__FAR__ID(far__id); tmp_15.apply__action() = aa; tmp_15.forwarding__parameters() = fp; tmp_15.duplicating__parameters() = ANY_OR_OMIT; tmp_15.bar__id() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::PDR__ID_template ts__PFCP__PDR__ID(const OCTETSTRING_template& pdr__id) { TTCN_Location current_location("PFCP_Templates.ttcn", 671, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_PDR_ID"); PFCP__Types::PDR__ID_template ret_val; ret_val.elementIdentifier() = 56; ret_val.lengthIndicator() = 0; ret_val.rule__id() = pdr__id; return ret_val; } PFCP__Types::PDR__ID_template tr__PFCP__PDR__ID(const OCTETSTRING_template& pdr__id) { TTCN_Location current_location("PFCP_Templates.ttcn", 677, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_PDR_ID"); PFCP__Types::PDR__ID_template ret_val; ret_val.elementIdentifier() = 56; ret_val.lengthIndicator() = ANY_VALUE; ret_val.rule__id() = pdr__id; return ret_val; } PFCP__Types::Precedence_template ts__PFCP__Precedence(const INTEGER_template& val) { TTCN_Location current_location("PFCP_Templates.ttcn", 684, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Precedence"); PFCP__Types::Precedence_template ret_val; ret_val.elementIdentifier() = 29; ret_val.lengthIndicator() = 0; ret_val.precedence__value() = val; return ret_val; } PFCP__Types::Precedence_template tr__PFCP__Precedence(const INTEGER_template& val) { TTCN_Location current_location("PFCP_Templates.ttcn", 690, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Precedence"); PFCP__Types::Precedence_template ret_val; ret_val.elementIdentifier() = 29; ret_val.lengthIndicator() = ANY_VALUE; ret_val.precedence__value() = val; return ret_val; } PFCP__Types::Create__PDR_template ts__PFCP__Create__PDR(const INTEGER& pdr__id, const PFCP__Types::PDI__IE_template& pdi, const PFCP__Types::Outer__Header__Removal_template& ohr, const INTEGER_template& far__id) { TTCN_Location current_location("PFCP_Templates.ttcn", 697, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Create_PDR"); PFCP__Types::Create__PDR_template ret_val; ret_val.elementIdentifier() = 1; ret_val.lengthIndicator() = 0; { PFCP__Types::Create__PDR_grouped__ie_template& tmp_16 = ret_val.grouped__ie(); tmp_16.pdr__id() = ts__PFCP__PDR__ID(OCTETSTRING_template(int2oct(pdr__id, 2))); tmp_16.precedence() = ts__PFCP__Precedence(INTEGER_template(0)); tmp_16.pdi() = pdi; tmp_16.outer__header__removal() = ohr; { PFCP__Types::Create__PDR_grouped__ie_FAR__ID__list_template& tmp_17 = tmp_16.FAR__ID__list(); tmp_17.set_size(1); tmp_17[0] = ts__PFCP__FAR__ID(far__id); } tmp_16.uRR__ID__list() = OMIT_VALUE; tmp_16.qER__ID__list() = OMIT_VALUE; tmp_16.activate__predefined__rules() = OMIT_VALUE; } return ret_val; } PFCP__Types::Create__PDR_template tr__PFCP__Create__PDR(const INTEGER& pdr__id, const PFCP__Types::PDI__IE_template& pdi, const PFCP__Types::Outer__Header__Removal_template& ohr, const INTEGER_template& far__id) { TTCN_Location current_location("PFCP_Templates.ttcn", 715, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Create_PDR"); PFCP__Types::Create__PDR_template ret_val; ret_val.elementIdentifier() = 1; ret_val.lengthIndicator() = ANY_VALUE; { PFCP__Types::Create__PDR_grouped__ie_template& tmp_18 = ret_val.grouped__ie(); tmp_18.pdr__id() = tr__PFCP__PDR__ID(OCTETSTRING_template(int2oct(pdr__id, 2))); tmp_18.precedence() = tr__PFCP__Precedence(INTEGER_template(ANY_VALUE)); tmp_18.pdi() = pdi; tmp_18.outer__header__removal() = ohr; { PFCP__Types::Create__PDR_grouped__ie_FAR__ID__list_template& tmp_19 = tmp_18.FAR__ID__list(); tmp_19.set_size(1); tmp_19[0] = tr__PFCP__FAR__ID(far__id); } tmp_18.uRR__ID__list() = ANY_OR_OMIT; tmp_18.qER__ID__list() = ANY_OR_OMIT; tmp_18.activate__predefined__rules() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Session__Est__Req(const PFCP__Types::Node__ID_template& node__id, const PFCP__Types::F__SEID_template& cp__f__seid, const PFCP__Types::Create__PDR__list_template& create__pdr, const PFCP__Types::Create__FAR__list_template& create__far) { TTCN_Location current_location("PFCP_Templates.ttcn", 735, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Session_Est_Req"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.seid() = os_0; { PFCP__Types::PFCP__Session__Establishment__Request_template& tmp_20 = ret_val.message__body().pfcp__session__establishment__request(); tmp_20.node__id() = node__id; tmp_20.CP__F__SEID() = cp__f__seid; tmp_20.create__PDR__list() = create__pdr; tmp_20.create__FAR__list() = create__far; tmp_20.create__URR__list() = OMIT_VALUE; tmp_20.create__QER__list() = OMIT_VALUE; tmp_20.create__BAR() = OMIT_VALUE; tmp_20.create__traffic__endpoint__list() = OMIT_VALUE; tmp_20.pdn__type() = OMIT_VALUE; tmp_20.node__list() = OMIT_VALUE; tmp_20.up__inactivity__timer() = OMIT_VALUE; } return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Session__Est__Req(const PFCP__Types::Node__ID_template& node__id, const PFCP__Types::F__SEID_template& cp__f__seid, const PFCP__Types::Create__PDR__list_template& create__pdr, const PFCP__Types::Create__FAR__list_template& create__far) { TTCN_Location current_location("PFCP_Templates.ttcn", 758, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Session_Est_Req"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); ret_val.seid() = os_0; { PFCP__Types::PFCP__Session__Establishment__Request_template& tmp_21 = ret_val.message__body().pfcp__session__establishment__request(); tmp_21.node__id() = node__id; tmp_21.CP__F__SEID() = cp__f__seid; tmp_21.create__PDR__list() = create__pdr; tmp_21.create__FAR__list() = create__far; tmp_21.create__URR__list() = ANY_OR_OMIT; tmp_21.create__QER__list() = ANY_OR_OMIT; tmp_21.create__BAR() = ANY_OR_OMIT; tmp_21.create__traffic__endpoint__list() = ANY_OR_OMIT; tmp_21.pdn__type() = ANY_OR_OMIT; tmp_21.node__list() = ANY_OR_OMIT; tmp_21.up__inactivity__timer() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::Created__PDR_template ts__PFCP__Created__PDR(const PFCP__Types::PDR__ID& pdr__id, const PFCP__Types::F__TEID_template& local__F__TEID) { TTCN_Location current_location("PFCP_Templates.ttcn", 782, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Created_PDR"); PFCP__Types::Created__PDR_template ret_val; ret_val.elementIdentifier() = 8; ret_val.lengthIndicator() = 0; { PFCP__Types::Created__PDR_grouped__ie_template& tmp_22 = ret_val.grouped__ie(); tmp_22.pdr__id() = pdr__id; tmp_22.local__F__TEID() = local__F__TEID; } return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Session__Est__Resp(const INTEGER_template& seq__nr, const PFCP__Types::Node__ID_template& node__id, const OCTETSTRING_template& seid, const PFCP__Types::F__SEID_template& f__seid, const PFCP__Types::PFCP__Session__Establishment__Response_created__PDR__list_template& created__pdr, const PFCP__Types::Cause_template& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 792, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Session_Est_Resp"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.seid() = seid; ret_val.sequence__number() = seq__nr; { PFCP__Types::PFCP__Session__Establishment__Response_template& tmp_23 = ret_val.message__body().pfcp__session__establishment__response(); tmp_23.node__id() = node__id; tmp_23.cause() = cause; tmp_23.offending__ie() = OMIT_VALUE; tmp_23.UP__F__SEID() = f__seid; tmp_23.created__PDR__list() = created__pdr; tmp_23.load__control__information() = OMIT_VALUE; tmp_23.overload__control__information() = OMIT_VALUE; tmp_23.node__list() = OMIT_VALUE; tmp_23.failed__rule__id() = OMIT_VALUE; tmp_23.created__traffic__endpoint__list() = OMIT_VALUE; } return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Session__Est__Resp(const INTEGER_template& , const PFCP__Types::Node__ID_template& node__id, const OCTETSTRING_template& seid, const PFCP__Types::F__SEID_template& , const PFCP__Types::PFCP__Session__Establishment__Response_created__PDR__list_template& created__pdr, const PFCP__Types::Cause_template& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 817, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Session_Est_Resp"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); ret_val.seid() = seid; ret_val.sequence__number() = ANY_VALUE; { PFCP__Types::PFCP__Session__Establishment__Response_template& tmp_24 = ret_val.message__body().pfcp__session__establishment__response(); tmp_24.node__id() = node__id; tmp_24.cause() = cause; tmp_24.offending__ie() = ANY_OR_OMIT; tmp_24.UP__F__SEID() = ANY_VALUE; tmp_24.created__PDR__list() = created__pdr; tmp_24.load__control__information() = ANY_OR_OMIT; tmp_24.overload__control__information() = ANY_OR_OMIT; tmp_24.node__list() = ANY_OR_OMIT; tmp_24.failed__rule__id() = ANY_OR_OMIT; tmp_24.created__traffic__endpoint__list() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Session__Mod__Req(const OCTETSTRING_template& seid, const PFCP__Types::Update__FAR_template& update__far) { TTCN_Location current_location("PFCP_Templates.ttcn", 844, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Session_Mod_Req"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.seid() = seid; { PFCP__Types::PFCP__Session__Modification__Request_template& tmp_25 = ret_val.message__body().pfcp__session__modification__request(); tmp_25.f__seid() = OMIT_VALUE; tmp_25.remove__PDR__list() = OMIT_VALUE; tmp_25.remove__FAR__list() = OMIT_VALUE; tmp_25.remove__URR__list() = OMIT_VALUE; tmp_25.remove__QER__list() = OMIT_VALUE; tmp_25.remove__BAR() = OMIT_VALUE; tmp_25.remove__traffic__endpoint() = OMIT_VALUE; tmp_25.create__PDR__list() = OMIT_VALUE; tmp_25.create__FAR__list() = OMIT_VALUE; tmp_25.create__URR__list() = OMIT_VALUE; tmp_25.create__QER__list() = OMIT_VALUE; tmp_25.create__BAR() = OMIT_VALUE; tmp_25.create__traffic__endpoint() = OMIT_VALUE; tmp_25.update__PDR__list() = OMIT_VALUE; { PFCP__Types::PFCP__Session__Modification__Request_update__FAR__list_template& tmp_26 = tmp_25.update__FAR__list(); tmp_26.set_size(1); tmp_26[0] = update__far; } tmp_25.update__URR__list() = OMIT_VALUE; tmp_25.update__QER__list() = OMIT_VALUE; tmp_25.update__BAR() = OMIT_VALUE; tmp_25.update__traffic__endpoint() = OMIT_VALUE; tmp_25.pfcpSMReq__flags() = OMIT_VALUE; tmp_25.query__URR__list() = OMIT_VALUE; tmp_25.node__list() = OMIT_VALUE; tmp_25.up__inactivity__timer() = OMIT_VALUE; tmp_25.querry__urr__reference() = OMIT_VALUE; } return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Session__Mod__Req(const OCTETSTRING_template& seid, const PFCP__Types::Update__FAR_template& update__far) { TTCN_Location current_location("PFCP_Templates.ttcn", 878, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Session_Mod_Req"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); ret_val.seid() = seid; { PFCP__Types::PFCP__Session__Modification__Request_template& tmp_27 = ret_val.message__body().pfcp__session__modification__request(); tmp_27.f__seid() = ANY_OR_OMIT; tmp_27.remove__PDR__list() = ANY_OR_OMIT; tmp_27.remove__FAR__list() = ANY_OR_OMIT; tmp_27.remove__URR__list() = ANY_OR_OMIT; tmp_27.remove__QER__list() = ANY_OR_OMIT; tmp_27.remove__BAR() = ANY_OR_OMIT; tmp_27.remove__traffic__endpoint() = ANY_OR_OMIT; tmp_27.create__PDR__list() = ANY_OR_OMIT; tmp_27.create__FAR__list() = ANY_OR_OMIT; tmp_27.create__URR__list() = ANY_OR_OMIT; tmp_27.create__QER__list() = ANY_OR_OMIT; tmp_27.create__BAR() = ANY_OR_OMIT; tmp_27.create__traffic__endpoint() = ANY_OR_OMIT; tmp_27.update__PDR__list() = ANY_OR_OMIT; { PFCP__Types::PFCP__Session__Modification__Request_update__FAR__list_template& tmp_28 = tmp_27.update__FAR__list(); tmp_28.set_size(1); tmp_28[0] = update__far; } tmp_27.update__URR__list() = ANY_OR_OMIT; tmp_27.update__QER__list() = ANY_OR_OMIT; tmp_27.update__BAR() = ANY_OR_OMIT; tmp_27.update__traffic__endpoint() = ANY_OR_OMIT; tmp_27.pfcpSMReq__flags() = ANY_OR_OMIT; tmp_27.query__URR__list() = ANY_OR_OMIT; tmp_27.node__list() = ANY_OR_OMIT; tmp_27.up__inactivity__timer() = ANY_OR_OMIT; tmp_27.querry__urr__reference() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Session__Mod__Resp(const INTEGER_template& seq__nr, const OCTETSTRING_template& seid, const PFCP__Types::Cause_template& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 914, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Session_Mod_Resp"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.seid() = seid; ret_val.sequence__number() = seq__nr; { PFCP__Types::PFCP__Session__Modification__Response_template& tmp_29 = ret_val.message__body().pfcp__session__modification__response(); tmp_29.cause() = cause; tmp_29.offending__IE() = OMIT_VALUE; tmp_29.created__PDR() = OMIT_VALUE; tmp_29.load__control__information() = OMIT_VALUE; tmp_29.overload__control__information() = OMIT_VALUE; tmp_29.usage__report() = OMIT_VALUE; tmp_29.failed__rule__id() = OMIT_VALUE; tmp_29.additional__usage__reports__information() = OMIT_VALUE; tmp_29.created__updated__traffic__endpoint() = OMIT_VALUE; } return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Session__Mod__Resp(const OCTETSTRING_template& seid, const PFCP__Types::Cause_template& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 935, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Session_Mod_Resp"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); ret_val.seid() = seid; { PFCP__Types::PFCP__Session__Modification__Response_template& tmp_30 = ret_val.message__body().pfcp__session__modification__response(); tmp_30.cause() = cause; tmp_30.offending__IE() = ANY_OR_OMIT; tmp_30.created__PDR() = ANY_OR_OMIT; tmp_30.load__control__information() = ANY_OR_OMIT; tmp_30.overload__control__information() = ANY_OR_OMIT; tmp_30.usage__report() = ANY_OR_OMIT; tmp_30.failed__rule__id() = ANY_OR_OMIT; tmp_30.additional__usage__reports__information() = ANY_OR_OMIT; tmp_30.created__updated__traffic__endpoint() = ANY_OR_OMIT; } return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Session__Del__Req(const OCTETSTRING_template& seid) { TTCN_Location current_location("PFCP_Templates.ttcn", 956, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Session_Del_Req"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.seid() = seid; ret_val.message__body().pfcp__session__deletion__request() = NULL_VALUE; return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Session__Del__Req(const OCTETSTRING_template& seid) { TTCN_Location current_location("PFCP_Templates.ttcn", 964, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Session_Del_Req"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); ret_val.seid() = seid; ret_val.message__body().pfcp__session__deletion__request() = ANY_VALUE; return ret_val; } PFCP__Types::PDU__PFCP_template ts__PFCP__Session__Del__Resp(const INTEGER_template& seq__nr, const OCTETSTRING_template& seid, const PFCP__Types::Cause_template& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 974, TTCN_Location::LOCATION_TEMPLATE, "ts_PFCP_Session_Del_Resp"); PFCP__Types::PDU__PFCP_template ret_val(ts__PDU__PFCP__); ret_val.seid() = seid; ret_val.sequence__number() = seq__nr; { PFCP__Types::PFCP__Session__Deletion__Response_template& tmp_31 = ret_val.message__body().pfcp__session__deletion__response(); tmp_31.cause() = cause; tmp_31.offending__IE() = OMIT_VALUE; tmp_31.load__control__information() = OMIT_VALUE; tmp_31.overload__control__information() = OMIT_VALUE; tmp_31.usage__report() = OMIT_VALUE; } return ret_val; } PFCP__Types::PDU__PFCP_template tr__PFCP__Session__Del__Resp(const OCTETSTRING_template& seid, const PFCP__Types::Cause_template& cause) { TTCN_Location current_location("PFCP_Templates.ttcn", 991, TTCN_Location::LOCATION_TEMPLATE, "tr_PFCP_Session_Del_Resp"); PFCP__Types::PDU__PFCP_template ret_val(tr__PDU__PFCP__); ret_val.seid() = seid; { PFCP__Types::PFCP__Session__Deletion__Response_template& tmp_32 = ret_val.message__body().pfcp__session__deletion__response(); tmp_32.cause() = cause; tmp_32.offending__IE() = ANY_OR_OMIT; tmp_32.load__control__information() = ANY_OR_OMIT; tmp_32.overload__control__information() = ANY_OR_OMIT; tmp_32.usage__report() = ANY_OR_OMIT; } return ret_val; } /* Bodies of static functions */ void pre_init_module() { TTCN_Location current_location("PFCP_Templates.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "PFCP_Templates"); Osmocom__Types::module_object.pre_init_module(); PFCP__Types::module_object.pre_init_module(); current_location.update_lineno(51); /* PFCP_Templates.ttcn, line 51 */ const_PFCP__Node__ID__IPv4 = 0; current_location.update_lineno(52); /* PFCP_Templates.ttcn, line 52 */ const_PFCP__Node__ID__IPv6 = 1; current_location.update_lineno(53); /* PFCP_Templates.ttcn, line 53 */ const_PFCP__Node__ID__FQDN = 2; module_object.add_function("f_netinst_str_to_qname", (genericfunc_t)&f__netinst__str__to__qname, NULL); } void post_init_module() { TTCN_Location current_location("PFCP_Templates.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "PFCP_Templates"); Osmocom__Types::module_object.post_init_module(); PFCP__Types::module_object.post_init_module(); current_location.update_lineno(66); /* PFCP_Templates.ttcn, line 66 */ template_tr__PFCP__Node__ID_id__type_defval = ANY_VALUE; current_location.update_lineno(67); /* PFCP_Templates.ttcn, line 67 */ template_tr__PFCP__Node__ID_id__value_defval = ANY_VALUE; current_location.update_lineno(93); /* PFCP_Templates.ttcn, line 93 */ template_tr__PFCP__Recovery__Timestamp_time__value_defval = ANY_VALUE; current_location.update_lineno(99); /* PFCP_Templates.ttcn, line 99 */ template_ts__PDU__PFCP__.s__flag() = bs_1; template_ts__PDU__PFCP__.mp() = bs_1; template_ts__PDU__PFCP__.spare() = bs_2; template_ts__PDU__PFCP__.version() = 1; template_ts__PDU__PFCP__.message__type() = 0; template_ts__PDU__PFCP__.lengthIndicator() = 0; template_ts__PDU__PFCP__.seid() = OMIT_VALUE; template_ts__PDU__PFCP__.sequence__number() = 0; template_ts__PDU__PFCP__.spare2() = bs_0; template_ts__PDU__PFCP__.mp__or__spare() = bs_0; template_ts__PDU__PFCP__.check_restriction(TR_VALUE); current_location.update_lineno(113); /* PFCP_Templates.ttcn, line 113 */ template_tr__PDU__PFCP__.s__flag() = ANY_VALUE; template_tr__PDU__PFCP__.mp() = ANY_VALUE; template_tr__PDU__PFCP__.spare() = ANY_VALUE; template_tr__PDU__PFCP__.version() = 1; template_tr__PDU__PFCP__.message__type() = ANY_VALUE; template_tr__PDU__PFCP__.lengthIndicator() = ANY_VALUE; template_tr__PDU__PFCP__.seid() = ANY_OR_OMIT; template_tr__PDU__PFCP__.sequence__number() = ANY_VALUE; template_tr__PDU__PFCP__.spare2() = ANY_VALUE; template_tr__PDU__PFCP__.mp__or__spare() = ANY_VALUE; template_tr__PDU__PFCP__.message__body() = ANY_VALUE; current_location.update_lineno(138); /* PFCP_Templates.ttcn, line 138 */ template_tr__PFCP__Heartbeat__Req_recovery__time__stamp_defval = ANY_VALUE; current_location.update_lineno(158); /* PFCP_Templates.ttcn, line 158 */ template_tr__PFCP__Heartbeat__Resp_recovery__time__stamp_defval = ANY_VALUE; current_location.update_lineno(183); /* PFCP_Templates.ttcn, line 183 */ template_tr__PFCP__Assoc__Setup__Req_node__id_defval = ANY_VALUE; current_location.update_lineno(216); /* PFCP_Templates.ttcn, line 216 */ template_tr__PFCP__Assoc__Setup__Resp_node__id_defval = ANY_VALUE; current_location.update_lineno(217); /* PFCP_Templates.ttcn, line 217 */ template_tr__PFCP__Assoc__Setup__Resp_cause_defval = ANY_VALUE; current_location.update_lineno(242); /* PFCP_Templates.ttcn, line 242 */ template_tr__PFCP__Assoc__Release__Req_node__id_defval = ANY_VALUE; current_location.update_lineno(266); /* PFCP_Templates.ttcn, line 266 */ template_tr__PFCP__Assoc__Release__Resp_node__id_defval = ANY_VALUE; current_location.update_lineno(267); /* PFCP_Templates.ttcn, line 267 */ template_tr__PFCP__Assoc__Release__Resp_cause_defval = ANY_VALUE; current_location.update_lineno(290); /* PFCP_Templates.ttcn, line 290 */ template_tr__PFCP__F__SEID__ipv4_addr__v4_defval = ANY_VALUE; current_location.update_lineno(291); /* PFCP_Templates.ttcn, line 291 */ template_tr__PFCP__F__SEID__ipv4_seid_defval = ANY_VALUE; current_location.update_lineno(325); /* PFCP_Templates.ttcn, line 325 */ const_ts__PFCP__UE__IP__Address__v4_is__destination_defval = TRUE; current_location.update_lineno(350); /* PFCP_Templates.ttcn, line 350 */ template_ts__PFCP__F__TEID__choose__v4_choose__id_defval = OMIT_VALUE; current_location.update_lineno(381); /* PFCP_Templates.ttcn, line 381 */ template_ts__PFCP__PDI_local__F__TEID_defval = OMIT_VALUE; current_location.update_lineno(382); /* PFCP_Templates.ttcn, line 382 */ template_ts__PFCP__PDI_ue__addr__v4_defval = OMIT_VALUE; current_location.update_lineno(383); /* PFCP_Templates.ttcn, line 383 */ template_ts__PFCP__PDI_network__instance_defval = OMIT_VALUE; current_location.update_lineno(400); /* PFCP_Templates.ttcn, line 400 */ template_tr__PFCP__PDI_local__F__TEID_defval = ANY_OR_OMIT; current_location.update_lineno(401); /* PFCP_Templates.ttcn, line 401 */ template_tr__PFCP__PDI_ue__addr__v4_defval = ANY_OR_OMIT; current_location.update_lineno(402); /* PFCP_Templates.ttcn, line 402 */ template_tr__PFCP__PDI_network__instance_defval = ANY_OR_OMIT; current_location.update_lineno(419); /* PFCP_Templates.ttcn, line 419 */ const_ts__PFCP__Apply__Action_forw_defval = bs_1; current_location.update_lineno(420); /* PFCP_Templates.ttcn, line 420 */ const_ts__PFCP__Apply__Action_drop_defval = bs_1; current_location.update_lineno(421); /* PFCP_Templates.ttcn, line 421 */ const_ts__PFCP__Apply__Action_buff_defval = bs_1; current_location.update_lineno(432); /* PFCP_Templates.ttcn, line 432 */ template_tr__PFCP__Apply__Action_forw_defval = bs_1; current_location.update_lineno(433); /* PFCP_Templates.ttcn, line 433 */ template_tr__PFCP__Apply__Action_drop_defval = bs_1; current_location.update_lineno(434); /* PFCP_Templates.ttcn, line 434 */ template_tr__PFCP__Apply__Action_buff_defval = bs_1; current_location.update_lineno(445); /* PFCP_Templates.ttcn, line 445 */ template_ts__PFCP__Apply__Action__FORW = ts__PFCP__Apply__Action(bs_3, ts__PFCP__Apply__Action_drop_defval, ts__PFCP__Apply__Action_buff_defval); current_location.update_lineno(446); /* PFCP_Templates.ttcn, line 446 */ template_tr__PFCP__Apply__Action__FORW = tr__PFCP__Apply__Action(BITSTRING_template(bs_3), tr__PFCP__Apply__Action_drop_defval, tr__PFCP__Apply__Action_buff_defval); current_location.update_lineno(448); /* PFCP_Templates.ttcn, line 448 */ template_ts__PFCP__Apply__Action__DROP = ts__PFCP__Apply__Action(ts__PFCP__Apply__Action_forw_defval, bs_3, ts__PFCP__Apply__Action_buff_defval); current_location.update_lineno(449); /* PFCP_Templates.ttcn, line 449 */ template_tr__PFCP__Apply__Action__DROP = tr__PFCP__Apply__Action(tr__PFCP__Apply__Action_forw_defval, BITSTRING_template(bs_3), tr__PFCP__Apply__Action_buff_defval); current_location.update_lineno(451); /* PFCP_Templates.ttcn, line 451 */ template_ts__PFCP__Apply__Action__BUFF = ts__PFCP__Apply__Action(ts__PFCP__Apply__Action_forw_defval, ts__PFCP__Apply__Action_drop_defval, bs_3); current_location.update_lineno(452); /* PFCP_Templates.ttcn, line 452 */ template_tr__PFCP__Apply__Action__BUFF = tr__PFCP__Apply__Action(tr__PFCP__Apply__Action_forw_defval, tr__PFCP__Apply__Action_drop_defval, BITSTRING_template(bs_3)); current_location.update_lineno(491); /* PFCP_Templates.ttcn, line 491 */ template_tr__PFCP__Outer__Header__Creation__GTP__ipv4_remote__teid_defval = ANY_VALUE; current_location.update_lineno(492); /* PFCP_Templates.ttcn, line 492 */ template_tr__PFCP__Outer__Header__Creation__GTP__ipv4_remote__addr__v4_defval = ANY_VALUE; current_location.update_lineno(530); /* PFCP_Templates.ttcn, line 530 */ template_ts__PFCP__Forwarding__Parameters_ohc_defval = OMIT_VALUE; current_location.update_lineno(531); /* PFCP_Templates.ttcn, line 531 */ template_ts__PFCP__Forwarding__Parameters_network__instance_defval = OMIT_VALUE; current_location.update_lineno(547); /* PFCP_Templates.ttcn, line 547 */ template_tr__PFCP__Forwarding__Parameters_ohc_defval = ANY_OR_OMIT; current_location.update_lineno(548); /* PFCP_Templates.ttcn, line 548 */ template_tr__PFCP__Forwarding__Parameters_network__instance_defval = ANY_OR_OMIT; current_location.update_lineno(564); /* PFCP_Templates.ttcn, line 564 */ template_ts__PFCP__Update__Forwarding__Parameters_dest__iface_defval = OMIT_VALUE; current_location.update_lineno(565); /* PFCP_Templates.ttcn, line 565 */ template_ts__PFCP__Update__Forwarding__Parameters_ohc_defval = OMIT_VALUE; current_location.update_lineno(566); /* PFCP_Templates.ttcn, line 566 */ template_ts__PFCP__Update__Forwarding__Parameters_network__instance_defval = OMIT_VALUE; current_location.update_lineno(582); /* PFCP_Templates.ttcn, line 582 */ template_tr__PFCP__Update__Forwarding__Parameters_dest__iface_defval = ANY_OR_OMIT; current_location.update_lineno(583); /* PFCP_Templates.ttcn, line 583 */ template_tr__PFCP__Update__Forwarding__Parameters_ohc_defval = ANY_OR_OMIT; current_location.update_lineno(584); /* PFCP_Templates.ttcn, line 584 */ template_tr__PFCP__Update__Forwarding__Parameters_network__instance_defval = ANY_OR_OMIT; current_location.update_lineno(607); /* PFCP_Templates.ttcn, line 607 */ template_tr__PFCP__FAR__ID_far__id_defval = ANY_VALUE; current_location.update_lineno(628); /* PFCP_Templates.ttcn, line 628 */ template_tr__PFCP__Create__FAR_far__id_defval = ANY_VALUE; current_location.update_lineno(629); /* PFCP_Templates.ttcn, line 629 */ template_tr__PFCP__Create__FAR_aa_defval = ANY_VALUE; current_location.update_lineno(630); /* PFCP_Templates.ttcn, line 630 */ template_tr__PFCP__Create__FAR_fp_defval = ANY_OR_OMIT; current_location.update_lineno(657); /* PFCP_Templates.ttcn, line 657 */ template_tr__PFCP__Update__FAR_far__id_defval = ANY_VALUE; current_location.update_lineno(658); /* PFCP_Templates.ttcn, line 658 */ template_tr__PFCP__Update__FAR_aa_defval = ANY_VALUE; current_location.update_lineno(659); /* PFCP_Templates.ttcn, line 659 */ template_tr__PFCP__Update__FAR_fp_defval = ANY_OR_OMIT; current_location.update_lineno(700); /* PFCP_Templates.ttcn, line 700 */ template_ts__PFCP__Create__PDR_ohr_defval = OMIT_VALUE; current_location.update_lineno(717); /* PFCP_Templates.ttcn, line 717 */ template_tr__PFCP__Create__PDR_pdi_defval = ANY_VALUE; current_location.update_lineno(718); /* PFCP_Templates.ttcn, line 718 */ template_tr__PFCP__Create__PDR_ohr_defval = ANY_OR_OMIT; current_location.update_lineno(719); /* PFCP_Templates.ttcn, line 719 */ template_tr__PFCP__Create__PDR_far__id_defval = ANY_VALUE; current_location.update_lineno(759); /* PFCP_Templates.ttcn, line 759 */ template_tr__PFCP__Session__Est__Req_node__id_defval = ANY_VALUE; current_location.update_lineno(760); /* PFCP_Templates.ttcn, line 760 */ template_tr__PFCP__Session__Est__Req_cp__f__seid_defval = ANY_VALUE; current_location.update_lineno(761); /* PFCP_Templates.ttcn, line 761 */ template_tr__PFCP__Session__Est__Req_create__pdr_defval = ANY_VALUE; current_location.update_lineno(762); /* PFCP_Templates.ttcn, line 762 */ template_tr__PFCP__Session__Est__Req_create__far_defval = ANY_VALUE; current_location.update_lineno(798); /* PFCP_Templates.ttcn, line 798 */ template_ts__PFCP__Session__Est__Resp_cause_defval = ts__PFCP__Cause(e__PFCP__Cause::REQUEST__ACCEPTED); current_location.update_lineno(818); /* PFCP_Templates.ttcn, line 818 */ template_tr__PFCP__Session__Est__Resp_seq__nr_defval = ANY_VALUE; current_location.update_lineno(819); /* PFCP_Templates.ttcn, line 819 */ template_tr__PFCP__Session__Est__Resp_node__id_defval = ANY_VALUE; current_location.update_lineno(820); /* PFCP_Templates.ttcn, line 820 */ template_tr__PFCP__Session__Est__Resp_seid_defval = ANY_VALUE; current_location.update_lineno(821); /* PFCP_Templates.ttcn, line 821 */ template_tr__PFCP__Session__Est__Resp_f__seid_defval = ANY_VALUE; current_location.update_lineno(822); /* PFCP_Templates.ttcn, line 822 */ template_tr__PFCP__Session__Est__Resp_created__pdr_defval = ANY_VALUE; current_location.update_lineno(823); /* PFCP_Templates.ttcn, line 823 */ template_tr__PFCP__Session__Est__Resp_cause_defval = tr__PFCP__Cause(e__PFCP__Cause::REQUEST__ACCEPTED); current_location.update_lineno(879); /* PFCP_Templates.ttcn, line 879 */ template_tr__PFCP__Session__Mod__Req_seid_defval = ANY_VALUE; current_location.update_lineno(880); /* PFCP_Templates.ttcn, line 880 */ template_tr__PFCP__Session__Mod__Req_update__far_defval = ANY_VALUE; current_location.update_lineno(917); /* PFCP_Templates.ttcn, line 917 */ template_ts__PFCP__Session__Mod__Resp_cause_defval = ts__PFCP__Cause(e__PFCP__Cause::REQUEST__ACCEPTED); current_location.update_lineno(936); /* PFCP_Templates.ttcn, line 936 */ template_tr__PFCP__Session__Mod__Resp_seid_defval = ANY_VALUE; current_location.update_lineno(937); /* PFCP_Templates.ttcn, line 937 */ template_tr__PFCP__Session__Mod__Resp_cause_defval = tr__PFCP__Cause(e__PFCP__Cause::REQUEST__ACCEPTED); current_location.update_lineno(965); /* PFCP_Templates.ttcn, line 965 */ template_tr__PFCP__Session__Del__Req_seid_defval = ANY_VALUE; current_location.update_lineno(977); /* PFCP_Templates.ttcn, line 977 */ template_ts__PFCP__Session__Del__Resp_cause_defval = ts__PFCP__Cause(e__PFCP__Cause::REQUEST__ACCEPTED); current_location.update_lineno(993); /* PFCP_Templates.ttcn, line 993 */ template_tr__PFCP__Session__Del__Resp_cause_defval = tr__PFCP__Cause(e__PFCP__Cause::REQUEST__ACCEPTED); } } /* end of namespace */