// This C++ source file was generated by the TTCN-3 compiler // of the TTCN-3 Test Executor version 9.0.0 // for (build@df34402ede0d) on Tue Jun 25 17:59:45 2024 // Copyright (c) 2000-2023 Ericsson Telecom AB // Do not edit this file unless you know what you are doing. /* Including header files */ #include "CPF_ConnectionHandler.hh" namespace CPF__ConnectionHandler { /* Literal string constants */ extern const CHARSTRING cs_2(5, "-PFCP"), cs_3(9, "127.0.0.1"), cs_4(9, "127.0.0.2"), cs_0(11, "192.168.44."), cs_1(6, "enable"); const unsigned char module_checksum[] = { 0x57, 0x32, 0xbc, 0x32, 0xbe, 0x26, 0x0d, 0x88, 0x48, 0xad, 0x92, 0xaa, 0xad, 0x85, 0xcd, 0x6a }; /* Global variable definitions */ const TTCN_Typedescriptor_t& CPF__ConnHdlr_descr_ = COMPONENT_descr_; PFCP__Emulation::PFCPEM__PT CPF__ConnHdlr_component_PFCP("PFCP"); TELNETasp__PortType::TELNETasp__PT CPF__ConnHdlr_component_UPFVTY("UPFVTY"); COMPONENT CPF__ConnHdlr_component_vc__PFCP; const XERdescriptor_t TestHdlrParams_remote__upf__addr_xer_ = { {"remote_upf_addr>\n", "remote_upf_addr>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TestHdlrParams_remote__upf__addr_descr_ = { "@CPF_ConnectionHandler.TestHdlrParams.remote_upf_addr", NULL, &CHARSTRING_raw_, &CHARSTRING_text_, &TestHdlrParams_remote__upf__addr_xer_, &CHARSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t TestHdlrParams_remote__upf__port_xer_ = { {"remote_upf_port>\n", "remote_upf_port>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TestHdlrParams_remote__upf__port_descr_ = { "@CPF_ConnectionHandler.TestHdlrParams.remote_upf_port", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &TestHdlrParams_remote__upf__port_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t TestHdlrParams_local__addr_xer_ = { {"local_addr>\n", "local_addr>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TestHdlrParams_local__addr_descr_ = { "@CPF_ConnectionHandler.TestHdlrParams.local_addr", NULL, &CHARSTRING_raw_, &CHARSTRING_text_, &TestHdlrParams_local__addr_xer_, &CHARSTRING_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; const XERdescriptor_t TestHdlrParams_local__port_xer_ = { {"local_port>\n", "local_port>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; const TTCN_Typedescriptor_t TestHdlrParams_local__port_descr_ = { "@CPF_ConnectionHandler.TestHdlrParams.local_port", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &TestHdlrParams_local__port_xer_, &INTEGER_json_, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TestHdlrParams_local__node__id_default_coding("RAW"); // No XER for TestHdlrParams const TTCN_Typedescriptor_t TestHdlrParams_descr_ = { "@CPF_ConnectionHandler.TestHdlrParams", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; TestHdlrParams CPF__ConnHdlr_component_g__pars; BOOLEAN CPF__ConnHdlr_component_g__vty__initialized; INTEGER CPF__ConnHdlr_component_g__recovery__timestamp; INTEGER CPF__ConnHdlr_component_g__next__seid__state; INTEGER CPF__ConnHdlr_component_g__next__local__teid__state; INTEGER CPF__ConnHdlr_component_g__next__remote__teid__state; INTEGER CPF__ConnHdlr_component_g__next__ue__addr__state; TestHdlrParams_template template_t__def__TestHdlrPars; const TestHdlrParams_template& t__def__TestHdlrPars = template_t__def__TestHdlrPars; TTCN_Module module_object("CPF_ConnectionHandler", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, init_comp_type, init_system_port, start_ptc_function, NULL); const RuntimeVersionChecker ver_checker( current_runtime_version.requires_major_version_9, current_runtime_version.requires_minor_version_0, current_runtime_version.requires_patch_level_0, current_runtime_version.requires_runtime_1); /* Member functions of C++ classes */ TestHdlrParams::TestHdlrParams() { } TestHdlrParams::TestHdlrParams(const CHARSTRING& par_remote__upf__addr, const INTEGER& par_remote__upf__port, const CHARSTRING& par_local__addr, const INTEGER& par_local__port, const PFCP__Types::Node__ID& par_local__node__id) : field_remote__upf__addr(par_remote__upf__addr), field_remote__upf__port(par_remote__upf__port), field_local__addr(par_local__addr), field_local__port(par_local__port), field_local__node__id(par_local__node__id) { } TestHdlrParams::TestHdlrParams(const TestHdlrParams& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CPF_ConnectionHandler.TestHdlrParams."); if (other_value.remote__upf__addr().is_bound()) field_remote__upf__addr = other_value.remote__upf__addr(); else field_remote__upf__addr.clean_up(); if (other_value.remote__upf__port().is_bound()) field_remote__upf__port = other_value.remote__upf__port(); else field_remote__upf__port.clean_up(); if (other_value.local__addr().is_bound()) field_local__addr = other_value.local__addr(); else field_local__addr.clean_up(); if (other_value.local__port().is_bound()) field_local__port = other_value.local__port(); else field_local__port.clean_up(); if (other_value.local__node__id().is_bound()) field_local__node__id = other_value.local__node__id(); else field_local__node__id.clean_up(); } void TestHdlrParams::clean_up() { field_remote__upf__addr.clean_up(); field_remote__upf__port.clean_up(); field_local__addr.clean_up(); field_local__port.clean_up(); field_local__node__id.clean_up(); } const TTCN_Typedescriptor_t* TestHdlrParams::get_descriptor() const { return &TestHdlrParams_descr_; } TestHdlrParams& TestHdlrParams::operator=(const TestHdlrParams& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CPF_ConnectionHandler.TestHdlrParams."); if (other_value.remote__upf__addr().is_bound()) field_remote__upf__addr = other_value.remote__upf__addr(); else field_remote__upf__addr.clean_up(); if (other_value.remote__upf__port().is_bound()) field_remote__upf__port = other_value.remote__upf__port(); else field_remote__upf__port.clean_up(); if (other_value.local__addr().is_bound()) field_local__addr = other_value.local__addr(); else field_local__addr.clean_up(); if (other_value.local__port().is_bound()) field_local__port = other_value.local__port(); else field_local__port.clean_up(); if (other_value.local__node__id().is_bound()) field_local__node__id = other_value.local__node__id(); else field_local__node__id.clean_up(); } return *this; } boolean TestHdlrParams::operator==(const TestHdlrParams& other_value) const { return field_remote__upf__addr==other_value.field_remote__upf__addr && field_remote__upf__port==other_value.field_remote__upf__port && field_local__addr==other_value.field_local__addr && field_local__port==other_value.field_local__port && field_local__node__id==other_value.field_local__node__id; } boolean TestHdlrParams::is_bound() const { return (field_remote__upf__addr.is_bound()) || (field_remote__upf__port.is_bound()) || (field_local__addr.is_bound()) || (field_local__port.is_bound()) || (field_local__node__id.is_bound()); } boolean TestHdlrParams::is_value() const { return field_remote__upf__addr.is_value() && field_remote__upf__port.is_value() && field_local__addr.is_value() && field_local__port.is_value() && field_local__node__id.is_value(); } void TestHdlrParams::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ remote_upf_addr := "); field_remote__upf__addr.log(); TTCN_Logger::log_event_str(", remote_upf_port := "); field_remote__upf__port.log(); TTCN_Logger::log_event_str(", local_addr := "); field_local__addr.log(); TTCN_Logger::log_event_str(", local_port := "); field_local__port.log(); TTCN_Logger::log_event_str(", local_node_id := "); field_local__node__id.log(); TTCN_Logger::log_event_str(" }"); } void TestHdlrParams::set_implicit_omit() { if (remote__upf__addr().is_bound()) remote__upf__addr().set_implicit_omit(); if (remote__upf__port().is_bound()) remote__upf__port().set_implicit_omit(); if (local__addr().is_bound()) local__addr().set_implicit_omit(); if (local__port().is_bound()) local__port().set_implicit_omit(); if (local__node__id().is_bound()) local__node__id().set_implicit_omit(); } void TestHdlrParams::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (50 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) remote__upf__addr().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) remote__upf__port().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) local__addr().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) local__port().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) local__node__id().set_param(*param.get_elem(4)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "remote_upf_addr")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { remote__upf__addr().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "remote_upf_port")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { remote__upf__port().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "local_addr")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { local__addr().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "local_port")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { local__port().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "local_node_id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { local__node__id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @CPF_ConnectionHandler.TestHdlrParams: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@CPF_ConnectionHandler.TestHdlrParams"); } } void TestHdlrParams::encode_text(Text_Buf& text_buf) const { field_remote__upf__addr.encode_text(text_buf); field_remote__upf__port.encode_text(text_buf); field_local__addr.encode_text(text_buf); field_local__port.encode_text(text_buf); field_local__node__id.encode_text(text_buf); } void TestHdlrParams::decode_text(Text_Buf& text_buf) { field_remote__upf__addr.decode_text(text_buf); field_remote__upf__port.decode_text(text_buf); field_local__addr.decode_text(text_buf); field_local__port.decode_text(text_buf); field_local__node__id.decode_text(text_buf); } struct TestHdlrParams_template::single_value_struct { CHARSTRING_template field_remote__upf__addr; INTEGER_template field_remote__upf__port; CHARSTRING_template field_local__addr; INTEGER_template field_local__port; PFCP__Types::Node__ID_template field_local__node__id; }; void TestHdlrParams_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_remote__upf__addr = ANY_VALUE; single_value->field_remote__upf__port = ANY_VALUE; single_value->field_local__addr = ANY_VALUE; single_value->field_local__port = ANY_VALUE; single_value->field_local__node__id = ANY_VALUE; } } } void TestHdlrParams_template::copy_value(const TestHdlrParams& other_value) { single_value = new single_value_struct; if (other_value.remote__upf__addr().is_bound()) { single_value->field_remote__upf__addr = other_value.remote__upf__addr(); } else { single_value->field_remote__upf__addr.clean_up(); } if (other_value.remote__upf__port().is_bound()) { single_value->field_remote__upf__port = other_value.remote__upf__port(); } else { single_value->field_remote__upf__port.clean_up(); } if (other_value.local__addr().is_bound()) { single_value->field_local__addr = other_value.local__addr(); } else { single_value->field_local__addr.clean_up(); } if (other_value.local__port().is_bound()) { single_value->field_local__port = other_value.local__port(); } else { single_value->field_local__port.clean_up(); } if (other_value.local__node__id().is_bound()) { single_value->field_local__node__id = other_value.local__node__id(); } else { single_value->field_local__node__id.clean_up(); } set_selection(SPECIFIC_VALUE); } void TestHdlrParams_template::copy_template(const TestHdlrParams_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.remote__upf__addr().get_selection()) { single_value->field_remote__upf__addr = other_value.remote__upf__addr(); } else { single_value->field_remote__upf__addr.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.remote__upf__port().get_selection()) { single_value->field_remote__upf__port = other_value.remote__upf__port(); } else { single_value->field_remote__upf__port.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.local__addr().get_selection()) { single_value->field_local__addr = other_value.local__addr(); } else { single_value->field_local__addr.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.local__port().get_selection()) { single_value->field_local__port = other_value.local__port(); } else { single_value->field_local__port.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.local__node__id().get_selection()) { single_value->field_local__node__id = other_value.local__node__id(); } else { single_value->field_local__node__id.clean_up(); } 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 TestHdlrParams_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 TestHdlrParams_template(*other_value.implication_.precondition); implication_.implied_template = new TestHdlrParams_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 type @CPF_ConnectionHandler.TestHdlrParams."); break; } set_selection(other_value); } TestHdlrParams_template::TestHdlrParams_template() { } TestHdlrParams_template::TestHdlrParams_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } TestHdlrParams_template::TestHdlrParams_template(const TestHdlrParams& other_value) { copy_value(other_value); } TestHdlrParams_template::TestHdlrParams_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TestHdlrParams&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @CPF_ConnectionHandler.TestHdlrParams from an unbound optional field."); } } TestHdlrParams_template::TestHdlrParams_template(TestHdlrParams_template* p_precondition, TestHdlrParams_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TestHdlrParams_template::TestHdlrParams_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; } TestHdlrParams_template::TestHdlrParams_template(const TestHdlrParams_template& other_value) : Base_Template() { copy_template(other_value); } TestHdlrParams_template::~TestHdlrParams_template() { clean_up(); } TestHdlrParams_template& TestHdlrParams_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TestHdlrParams_template& TestHdlrParams_template::operator=(const TestHdlrParams& other_value) { clean_up(); copy_value(other_value); return *this; } TestHdlrParams_template& TestHdlrParams_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TestHdlrParams&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @CPF_ConnectionHandler.TestHdlrParams."); } return *this; } TestHdlrParams_template& TestHdlrParams_template::operator=(const TestHdlrParams_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean TestHdlrParams_template::match(const TestHdlrParams& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.remote__upf__addr().is_bound()) return FALSE; if(!single_value->field_remote__upf__addr.match(other_value.remote__upf__addr(), legacy))return FALSE; if(!other_value.remote__upf__port().is_bound()) return FALSE; if(!single_value->field_remote__upf__port.match(other_value.remote__upf__port(), legacy))return FALSE; if(!other_value.local__addr().is_bound()) return FALSE; if(!single_value->field_local__addr.match(other_value.local__addr(), legacy))return FALSE; if(!other_value.local__port().is_bound()) return FALSE; if(!single_value->field_local__port.match(other_value.local__port(), legacy))return FALSE; if(!other_value.local__node__id().is_bound()) return FALSE; if(!single_value->field_local__node__id.match(other_value.local__node__id(), legacy))return FALSE; 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, legacy)) 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 type @CPF_ConnectionHandler.TestHdlrParams."); } return FALSE; } boolean TestHdlrParams_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_remote__upf__addr.is_bound() || single_value->field_remote__upf__port.is_bound() || single_value->field_local__addr.is_bound() || single_value->field_local__port.is_bound() || single_value->field_local__node__id.is_bound(); } boolean TestHdlrParams_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_remote__upf__addr.is_value() && single_value->field_remote__upf__port.is_value() && single_value->field_local__addr.is_value() && single_value->field_local__port.is_value() && single_value->field_local__node__id.is_value(); } void TestHdlrParams_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; 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; } TestHdlrParams TestHdlrParams_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @CPF_ConnectionHandler.TestHdlrParams."); TestHdlrParams ret_val; if (single_value->field_remote__upf__addr.is_bound()) { ret_val.remote__upf__addr() = single_value->field_remote__upf__addr.valueof(); } if (single_value->field_remote__upf__port.is_bound()) { ret_val.remote__upf__port() = single_value->field_remote__upf__port.valueof(); } if (single_value->field_local__addr.is_bound()) { ret_val.local__addr() = single_value->field_local__addr.valueof(); } if (single_value->field_local__port.is_bound()) { ret_val.local__port() = single_value->field_local__port.valueof(); } if (single_value->field_local__node__id.is_bound()) { ret_val.local__node__id() = single_value->field_local__node__id.valueof(); } return ret_val; } void TestHdlrParams_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @CPF_ConnectionHandler.TestHdlrParams."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new TestHdlrParams_template[list_length]; } TestHdlrParams_template& TestHdlrParams_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @CPF_ConnectionHandler.TestHdlrParams."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @CPF_ConnectionHandler.TestHdlrParams."); return value_list.list_value[list_index]; } CHARSTRING_template& TestHdlrParams_template::remote__upf__addr() { set_specific(); return single_value->field_remote__upf__addr; } const CHARSTRING_template& TestHdlrParams_template::remote__upf__addr() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field remote_upf_addr of a non-specific template of type @CPF_ConnectionHandler.TestHdlrParams."); return single_value->field_remote__upf__addr; } INTEGER_template& TestHdlrParams_template::remote__upf__port() { set_specific(); return single_value->field_remote__upf__port; } const INTEGER_template& TestHdlrParams_template::remote__upf__port() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field remote_upf_port of a non-specific template of type @CPF_ConnectionHandler.TestHdlrParams."); return single_value->field_remote__upf__port; } CHARSTRING_template& TestHdlrParams_template::local__addr() { set_specific(); return single_value->field_local__addr; } const CHARSTRING_template& TestHdlrParams_template::local__addr() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field local_addr of a non-specific template of type @CPF_ConnectionHandler.TestHdlrParams."); return single_value->field_local__addr; } INTEGER_template& TestHdlrParams_template::local__port() { set_specific(); return single_value->field_local__port; } const INTEGER_template& TestHdlrParams_template::local__port() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field local_port of a non-specific template of type @CPF_ConnectionHandler.TestHdlrParams."); return single_value->field_local__port; } PFCP__Types::Node__ID_template& TestHdlrParams_template::local__node__id() { set_specific(); return single_value->field_local__node__id; } const PFCP__Types::Node__ID_template& TestHdlrParams_template::local__node__id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field local_node_id of a non-specific template of type @CPF_ConnectionHandler.TestHdlrParams."); return single_value->field_local__node__id; } int TestHdlrParams_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CPF_ConnectionHandler.TestHdlrParams which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 5; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @CPF_ConnectionHandler.TestHdlrParams containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @CPF_ConnectionHandler.TestHdlrParams containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @CPF_ConnectionHandler.TestHdlrParams containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @CPF_ConnectionHandler.TestHdlrParams containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @CPF_ConnectionHandler.TestHdlrParams containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @CPF_ConnectionHandler.TestHdlrParams containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @CPF_ConnectionHandler.TestHdlrParams containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @CPF_ConnectionHandler.TestHdlrParams containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CPF_ConnectionHandler.TestHdlrParams."); } return 0; } void TestHdlrParams_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ remote_upf_addr := "); single_value->field_remote__upf__addr.log(); TTCN_Logger::log_event_str(", remote_upf_port := "); single_value->field_remote__upf__port.log(); TTCN_Logger::log_event_str(", local_addr := "); single_value->field_local__addr.log(); TTCN_Logger::log_event_str(", local_port := "); single_value->field_local__port.log(); TTCN_Logger::log_event_str(", local_node_id := "); single_value->field_local__node__id.log(); TTCN_Logger::log_event_str(" }"); 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 list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_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 TestHdlrParams_template::log_match(const TestHdlrParams& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_remote__upf__addr.match(match_value.remote__upf__addr(), legacy)){ TTCN_Logger::log_logmatch_info(".remote_upf_addr"); single_value->field_remote__upf__addr.log_match(match_value.remote__upf__addr(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_remote__upf__port.match(match_value.remote__upf__port(), legacy)){ TTCN_Logger::log_logmatch_info(".remote_upf_port"); single_value->field_remote__upf__port.log_match(match_value.remote__upf__port(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_local__addr.match(match_value.local__addr(), legacy)){ TTCN_Logger::log_logmatch_info(".local_addr"); single_value->field_local__addr.log_match(match_value.local__addr(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_local__port.match(match_value.local__port(), legacy)){ TTCN_Logger::log_logmatch_info(".local_port"); single_value->field_local__port.log_match(match_value.local__port(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_local__node__id.match(match_value.local__node__id(), legacy)){ TTCN_Logger::log_logmatch_info(".local_node_id"); single_value->field_local__node__id.log_match(match_value.local__node__id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ remote_upf_addr := "); single_value->field_remote__upf__addr.log_match(match_value.remote__upf__addr(), legacy); TTCN_Logger::log_event_str(", remote_upf_port := "); single_value->field_remote__upf__port.log_match(match_value.remote__upf__port(), legacy); TTCN_Logger::log_event_str(", local_addr := "); single_value->field_local__addr.log_match(match_value.local__addr(), legacy); TTCN_Logger::log_event_str(", local_port := "); single_value->field_local__port.log_match(match_value.local__port(), legacy); TTCN_Logger::log_event_str(", local_node_id := "); single_value->field_local__node__id.log_match(match_value.local__node__id(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void TestHdlrParams_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_remote__upf__addr.encode_text(text_buf); single_value->field_remote__upf__port.encode_text(text_buf); single_value->field_local__addr.encode_text(text_buf); single_value->field_local__port.encode_text(text_buf); single_value->field_local__node__id.encode_text(text_buf); 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 list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @CPF_ConnectionHandler.TestHdlrParams."); } } void TestHdlrParams_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_remote__upf__addr.decode_text(text_buf); single_value->field_remote__upf__port.decode_text(text_buf); single_value->field_local__addr.decode_text(text_buf); single_value->field_local__port.decode_text(text_buf); single_value->field_local__node__id.decode_text(text_buf); 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 TestHdlrParams_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].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @CPF_ConnectionHandler.TestHdlrParams."); } } void TestHdlrParams_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_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: { TestHdlrParams_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) remote__upf__addr().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) remote__upf__port().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) local__addr().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) local__port().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) local__node__id().set_param(*param.get_elem(4)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "remote_upf_addr")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { remote__upf__addr().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "remote_upf_port")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { remote__upf__port().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "local_addr")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { local__addr().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "local_port")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { local__port().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "local_node_id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { local__node__id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @CPF_ConnectionHandler.TestHdlrParams: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { TestHdlrParams_template* precondition = new TestHdlrParams_template; precondition->set_param(*param.get_elem(0)); TestHdlrParams_template* implied_template = new TestHdlrParams_template; implied_template->set_param(*param.get_elem(1)); *this = TestHdlrParams_template(precondition, implied_template); } break; default: param.type_error("record template", "@CPF_ConnectionHandler.TestHdlrParams"); } is_ifpresent = param.get_ifpresent(); } void TestHdlrParams_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_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_remote__upf__addr.check_restriction(t_res, t_name ? t_name : "@CPF_ConnectionHandler.TestHdlrParams"); single_value->field_remote__upf__port.check_restriction(t_res, t_name ? t_name : "@CPF_ConnectionHandler.TestHdlrParams"); single_value->field_local__addr.check_restriction(t_res, t_name ? t_name : "@CPF_ConnectionHandler.TestHdlrParams"); single_value->field_local__port.check_restriction(t_res, t_name ? t_name : "@CPF_ConnectionHandler.TestHdlrParams"); single_value->field_local__node__id.check_restriction(t_res, t_name ? t_name : "@CPF_ConnectionHandler.TestHdlrParams"); return; 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 : "@CPF_ConnectionHandler.TestHdlrParams"); } boolean TestHdlrParams_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TestHdlrParams_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 l_idx=0; l_idx 254)) { current_location.update_lineno(58); /* CPF_ConnectionHandler.ttcn, line 58 */ CPF__ConnHdlr_component_g__next__ue__addr__state = 16; } current_location.update_lineno(60); /* CPF_ConnectionHandler.ttcn, line 60 */ return (cs_0 + int2str(CPF__ConnHdlr_component_g__next__ue__addr__state)); } void start_f__next__ue__addr(const COMPONENT& component_reference) { TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC); TTCN_Logger::log_event_str("Starting function f_next_ue_addr("); TTCN_Logger::log_event_str(") on component "); component_reference.log(); TTCN_Logger::log_char('.'); TTCN_Logger::end_event(); Text_Buf text_buf; TTCN_Runtime::prepare_start_component(component_reference, "CPF_ConnectionHandler", "f_next_ue_addr", text_buf); TTCN_Runtime::send_start_component(text_buf); } void f__CPF__ConnHdlr__init__vty() { TTCN_Location current_location("CPF_ConnectionHandler.ttcn", 63, TTCN_Location::LOCATION_FUNCTION, "f_CPF_ConnHdlr_init_vty"); current_location.update_lineno(64); /* CPF_ConnectionHandler.ttcn, line 64 */ if ((!(CPF__ConnHdlr_component_g__vty__initialized))) { current_location.update_lineno(65); /* CPF_ConnectionHandler.ttcn, line 65 */ { Map_Params tmp_4(0); TTCN_Runtime::map_port(self, CPF__ConnHdlr_component_UPFVTY.get_name(), SYSTEM_COMPREF, "UPFVTY", tmp_4); } current_location.update_lineno(66); /* CPF_ConnectionHandler.ttcn, line 66 */ Osmocom__VTY__Functions::f__vty__set__prompts(CPF__ConnHdlr_component_UPFVTY, Osmocom__VTY__Functions::f__vty__set__prompts_prompt__prefix_defval); current_location.update_lineno(67); /* CPF_ConnectionHandler.ttcn, line 67 */ Osmocom__VTY__Functions::f__vty__transceive(CPF__ConnHdlr_component_UPFVTY, cs_1, Osmocom__VTY__Functions::f__vty__transceive_strict_defval); current_location.update_lineno(68); /* CPF_ConnectionHandler.ttcn, line 68 */ CPF__ConnHdlr_component_g__vty__initialized = TRUE; } } void start_f__CPF__ConnHdlr__init__vty(const COMPONENT& component_reference) { TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC); TTCN_Logger::log_event_str("Starting function f_CPF_ConnHdlr_init_vty("); TTCN_Logger::log_event_str(") on component "); component_reference.log(); TTCN_Logger::log_char('.'); TTCN_Logger::end_event(); Text_Buf text_buf; TTCN_Runtime::prepare_start_component(component_reference, "CPF_ConnectionHandler", "f_CPF_ConnHdlr_init_vty", text_buf); TTCN_Runtime::send_start_component(text_buf); } void f__CPF__ConnHdlr__init__pfcp(const CHARSTRING& id) { CHARSTRING id_shadow(id); TTCN_Location current_location("CPF_ConnectionHandler.ttcn", 72, TTCN_Location::LOCATION_FUNCTION, "f_CPF_ConnHdlr_init_pfcp"); current_location.update_lineno(73); /* CPF_ConnectionHandler.ttcn, line 73 */ { CHARSTRING tmp_6; tmp_6 = (id_shadow + cs_2); id_shadow = tmp_6; } current_location.update_lineno(75); /* CPF_ConnectionHandler.ttcn, line 75 */ { INTEGER tmp_8; { INTEGER INTEGER_tmp("4294967295"); tmp_8 = INTEGER_tmp; } CPF__ConnHdlr_component_g__recovery__timestamp = Osmocom__Types::f__rnd__int(tmp_8); } current_location.update_lineno(76); /* CPF_ConnectionHandler.ttcn, line 76 */ CPF__ConnHdlr_component_g__next__seid__state = ((1 + Osmocom__Types::f__rnd__int(65534)) * 65536); current_location.update_lineno(77); /* CPF_ConnectionHandler.ttcn, line 77 */ CPF__ConnHdlr_component_g__next__local__teid__state = ((1 + Osmocom__Types::f__rnd__int(65534)) * 65536); current_location.update_lineno(78); /* CPF_ConnectionHandler.ttcn, line 78 */ CPF__ConnHdlr_component_g__next__remote__teid__state = ((1 + Osmocom__Types::f__rnd__int(65534)) * 65536); current_location.update_lineno(79); /* CPF_ConnectionHandler.ttcn, line 79 */ CPF__ConnHdlr_component_g__next__ue__addr__state = ((1 + Osmocom__Types::f__rnd__int(15)) * 16); current_location.update_lineno(81); /* CPF_ConnectionHandler.ttcn, line 81 */ PFCP__Emulation::PFCP__Emulation__Cfg pfcp__cfg; pfcp__cfg.pfcp__bind__ip() = const_cast< const TestHdlrParams&>(CPF__ConnHdlr_component_g__pars).local__addr(); pfcp__cfg.pfcp__bind__port() = const_cast< const TestHdlrParams&>(CPF__ConnHdlr_component_g__pars).local__port(); pfcp__cfg.pfcp__remote__ip() = const_cast< const TestHdlrParams&>(CPF__ConnHdlr_component_g__pars).remote__upf__addr(); pfcp__cfg.pfcp__remote__port() = const_cast< const TestHdlrParams&>(CPF__ConnHdlr_component_g__pars).remote__upf__port(); pfcp__cfg.role() = PFCP__Emulation::PFCP__Role::CPF; current_location.update_lineno(89); /* CPF_ConnectionHandler.ttcn, line 89 */ CPF__ConnHdlr_component_vc__PFCP = TTCN_Runtime::create_component("PFCP_Emulation", "PFCP_Emulation_CT", id_shadow, NULL, TRUE); current_location.update_lineno(90); /* CPF_ConnectionHandler.ttcn, line 90 */ TTCN_Runtime::connect_port(self, CPF__ConnHdlr_component_PFCP.get_name(), CPF__ConnHdlr_component_vc__PFCP, PFCP__Emulation::PFCP__Emulation__CT_component_CLIENT.get_name()); current_location.update_lineno(91); /* CPF_ConnectionHandler.ttcn, line 91 */ PFCP__Emulation::start_main_(CPF__ConnHdlr_component_vc__PFCP, pfcp__cfg); } void start_f__CPF__ConnHdlr__init__pfcp(const COMPONENT& component_reference, const CHARSTRING& id) { TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC); TTCN_Logger::log_event_str("Starting function f_CPF_ConnHdlr_init_pfcp("); id.log(); TTCN_Logger::log_event_str(") on component "); component_reference.log(); TTCN_Logger::log_char('.'); TTCN_Logger::end_event(); Text_Buf text_buf; TTCN_Runtime::prepare_start_component(component_reference, "CPF_ConnectionHandler", "f_CPF_ConnHdlr_init_pfcp", text_buf); id.encode_text(text_buf); TTCN_Runtime::send_start_component(text_buf); } void f__CPF__ConnHdlr__init(const CHARSTRING& id, const TestHdlrParams& pars) { TTCN_Location current_location("CPF_ConnectionHandler.ttcn", 95, TTCN_Location::LOCATION_FUNCTION, "f_CPF_ConnHdlr_init"); current_location.update_lineno(96); /* CPF_ConnectionHandler.ttcn, line 96 */ CPF__ConnHdlr_component_g__pars = pars; current_location.update_lineno(97); /* CPF_ConnectionHandler.ttcn, line 97 */ f__CPF__ConnHdlr__init__pfcp(id); current_location.update_lineno(98); /* CPF_ConnectionHandler.ttcn, line 98 */ f__CPF__ConnHdlr__init__vty(); } void start_f__CPF__ConnHdlr__init(const COMPONENT& component_reference, const CHARSTRING& id, const TestHdlrParams& pars) { TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC); TTCN_Logger::log_event_str("Starting function f_CPF_ConnHdlr_init("); id.log(); TTCN_Logger::log_event_str(", "); pars.log(); TTCN_Logger::log_event_str(") on component "); component_reference.log(); TTCN_Logger::log_char('.'); TTCN_Logger::end_event(); Text_Buf text_buf; TTCN_Runtime::prepare_start_component(component_reference, "CPF_ConnectionHandler", "f_CPF_ConnHdlr_init", text_buf); id.encode_text(text_buf); pars.encode_text(text_buf); TTCN_Runtime::send_start_component(text_buf); } /* Bodies of static functions */ void pre_init_module() { TTCN_Location current_location("CPF_ConnectionHandler.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CPF_ConnectionHandler"); StatsD__Checker::module_object.pre_init_module(); PFCP__Emulation::module_object.pre_init_module(); module_object.add_function("f_next_seid", (genericfunc_t)&f__next__seid, (genericfunc_t)&start_f__next__seid); module_object.add_function("f_next_remote_teid", (genericfunc_t)&f__next__remote__teid, (genericfunc_t)&start_f__next__remote__teid); module_object.add_function("f_next_ue_addr", (genericfunc_t)&f__next__ue__addr, (genericfunc_t)&start_f__next__ue__addr); module_object.add_function("f_CPF_ConnHdlr_init_vty", (genericfunc_t)&f__CPF__ConnHdlr__init__vty, (genericfunc_t)&start_f__CPF__ConnHdlr__init__vty); module_object.add_function("f_CPF_ConnHdlr_init_pfcp", (genericfunc_t)&f__CPF__ConnHdlr__init__pfcp, (genericfunc_t)&start_f__CPF__ConnHdlr__init__pfcp); module_object.add_function("f_CPF_ConnHdlr_init", (genericfunc_t)&f__CPF__ConnHdlr__init, (genericfunc_t)&start_f__CPF__ConnHdlr__init); } void post_init_module() { TTCN_Location current_location("CPF_ConnectionHandler.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CPF_ConnectionHandler"); StatsD__Checker::module_object.post_init_module(); PFCP__Emulation::module_object.post_init_module(); current_location.update_lineno(111); /* CPF_ConnectionHandler.ttcn, line 111 */ template_t__def__TestHdlrPars.remote__upf__addr() = cs_3; template_t__def__TestHdlrPars.remote__upf__port() = 8805; template_t__def__TestHdlrPars.local__addr() = cs_4; template_t__def__TestHdlrPars.local__port() = 8805; } boolean init_comp_type(const char *component_type, boolean init_base_comps) { (void)init_base_comps; if (!strcmp(component_type, "CPF_ConnHdlr")) { if (init_base_comps) { Module_List::initialize_component("StatsD_Checker", "StatsD_ConnHdlr", FALSE); } CPF__ConnHdlr_component_PFCP.activate_port(); CPF__ConnHdlr_component_UPFVTY.activate_port(); CPF__ConnHdlr_component_vc__PFCP.clean_up(); CPF__ConnHdlr_component_g__pars.clean_up(); CPF__ConnHdlr_component_g__vty__initialized = FALSE; CPF__ConnHdlr_component_g__recovery__timestamp.clean_up(); CPF__ConnHdlr_component_g__next__seid__state.clean_up(); CPF__ConnHdlr_component_g__next__local__teid__state.clean_up(); CPF__ConnHdlr_component_g__next__remote__teid__state.clean_up(); CPF__ConnHdlr_component_g__next__ue__addr__state.clean_up(); return TRUE; } else return FALSE; } boolean init_system_port(const char* component_type, const char* port_name) { if (!strcmp(component_type, "CPF_ConnHdlr")) { if (!strcmp(port_name, "PFCP")) { CPF__ConnHdlr_component_PFCP.safe_start(); return TRUE; } if (!strcmp(port_name, "STATSD_PROC")) { StatsD__Checker::StatsD__ConnHdlr_component_STATSD__PROC.safe_start(); return TRUE; } if (!strcmp(port_name, "UPFVTY")) { CPF__ConnHdlr_component_UPFVTY.safe_start(); return TRUE; } } return FALSE; } boolean start_ptc_function(const char *function_name, Text_Buf& function_arguments) { if (!strcmp(function_name, "f_next_seid")) { TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_next_seid()."); TTCN_Runtime::function_started(function_arguments); f__next__seid(); TTCN_Runtime::function_finished("f_next_seid"); return TRUE; } else if (!strcmp(function_name, "f_next_remote_teid")) { TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_next_remote_teid()."); TTCN_Runtime::function_started(function_arguments); f__next__remote__teid(); TTCN_Runtime::function_finished("f_next_remote_teid"); return TRUE; } else if (!strcmp(function_name, "f_next_ue_addr")) { TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_next_ue_addr()."); TTCN_Runtime::function_started(function_arguments); f__next__ue__addr(); TTCN_Runtime::function_finished("f_next_ue_addr"); return TRUE; } else if (!strcmp(function_name, "f_CPF_ConnHdlr_init_vty")) { TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_CPF_ConnHdlr_init_vty()."); TTCN_Runtime::function_started(function_arguments); f__CPF__ConnHdlr__init__vty(); TTCN_Runtime::function_finished("f_CPF_ConnHdlr_init_vty"); return TRUE; } else if (!strcmp(function_name, "f_CPF_ConnHdlr_init_pfcp")) { CHARSTRING id; id.decode_text(function_arguments); TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC); TTCN_Logger::log_event_str("Starting function f_CPF_ConnHdlr_init_pfcp("); id.log(); TTCN_Logger::log_event_str(")."); TTCN_Logger::end_event(); TTCN_Runtime::function_started(function_arguments); f__CPF__ConnHdlr__init__pfcp(id); TTCN_Runtime::function_finished("f_CPF_ConnHdlr_init_pfcp"); return TRUE; } else if (!strcmp(function_name, "f_CPF_ConnHdlr_init")) { CHARSTRING id; TestHdlrParams pars; id.decode_text(function_arguments); pars.decode_text(function_arguments); TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC); TTCN_Logger::log_event_str("Starting function f_CPF_ConnHdlr_init("); id.log(); TTCN_Logger::log_event_str(", "); pars.log(); TTCN_Logger::log_event_str(")."); TTCN_Logger::end_event(); TTCN_Runtime::function_started(function_arguments); f__CPF__ConnHdlr__init(id, pars); TTCN_Runtime::function_finished("f_CPF_ConnHdlr_init"); return TRUE; } else return FALSE; } } /* end of namespace */